Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
f2f9d203
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f2f9d203
编写于
3月 14, 2018
作者:
C
Cyrus Najmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extract helper for generating local names.
上级
3651f4fd
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
41 addition
and
11 deletion
+41
-11
src/Features/Core/Portable/ConvertForToForEach/AbstractConvertForToForEachCodeRefactoringProvider.cs
...ach/AbstractConvertForToForEachCodeRefactoringProvider.cs
+2
-1
src/Features/Core/Portable/IntroduceVariable/AbstractIntroduceVariableService.cs
...ble/IntroduceVariable/AbstractIntroduceVariableService.cs
+2
-9
src/Workspaces/CSharp/Portable/LanguageServices/CSharpSemanticFactsService.cs
...p/Portable/LanguageServices/CSharpSemanticFactsService.cs
+4
-1
src/Workspaces/Core/Portable/LanguageServices/SemanticsFactsService/ISemanticFactsService.cs
...geServices/SemanticsFactsService/ISemanticFactsService.cs
+26
-0
src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSemanticFactsService.vb
...table/LanguageServices/VisualBasicSemanticFactsService.vb
+7
-0
未找到文件。
src/Features/Core/Portable/ConvertForToForEach/AbstractConvertForToForEachCodeRefactoringProvider.cs
浏览文件 @
f2f9d203
...
...
@@ -307,7 +307,8 @@ bool IterationVariableIsUsedForMoreThanCollectionIndex(SyntaxNode current)
if
(
foreachIdentifier
.
RawKind
==
0
)
{
foreachIdentifier
=
generator
.
Identifier
(
"v"
).
WithAdditionalAnnotations
(
RenameAnnotation
.
Create
());
foreachIdentifier
=
semanticFacts
.
GenerateUniqueName
(
semanticModel
,
forStatement
,
"v"
,
cancellationToken
)
.
WithAdditionalAnnotations
(
RenameAnnotation
.
Create
());
}
var
foreachIdentifierName
=
generator
.
IdentifierName
(
foreachIdentifier
).
WithoutTrivia
().
WithoutAnnotations
();
...
...
src/Features/Core/Portable/IntroduceVariable/AbstractIntroduceVariableService.cs
浏览文件 @
f2f9d203
...
...
@@ -221,20 +221,13 @@ private CodeAction CreateAction(State state, bool allOccurrences, bool isConstan
SyntaxNode
container
,
CancellationToken
cancellationToken
)
{
var
syntaxFacts
=
document
.
Document
.
GetLanguageService
<
ISyntaxFactsService
>();
var
semanticFacts
=
document
.
Document
.
GetLanguageService
<
ISemanticFactsService
>();
var
semanticModel
=
document
.
SemanticModel
;
var
existingSymbols
=
semanticModel
.
GetExistingSymbols
(
container
,
cancellationToken
);
var
semanticFacts
=
document
.
Document
.
GetLanguageService
<
ISemanticFactsService
>();
var
baseName
=
semanticFacts
.
GenerateNameForExpression
(
semanticModel
,
expression
,
capitalize
:
isConstant
,
cancellationToken
:
cancellationToken
);
var
reservedNames
=
semanticModel
.
LookupSymbols
(
expression
.
SpanStart
)
.
Select
(
s
=>
s
.
Name
)
.
Concat
(
existingSymbols
.
Select
(
s
=>
s
.
Name
));
return
syntaxFacts
.
ToIdentifierToken
(
NameGenerator
.
EnsureUniqueness
(
baseName
,
reservedNames
,
syntaxFacts
.
IsCaseSensitive
));
return
semanticFacts
.
GenerateUniqueName
(
semanticModel
,
container
,
baseName
,
cancellationToken
);
}
protected
ISet
<
TExpressionSyntax
>
FindMatches
(
...
...
src/Workspaces/CSharp/Portable/LanguageServices/CSharpSemanticFactsService.cs
浏览文件 @
f2f9d203
...
...
@@ -8,6 +8,7 @@
using
Microsoft.CodeAnalysis.CSharp.Extensions
;
using
Microsoft.CodeAnalysis.CSharp.Extensions.ContextQuery
;
using
Microsoft.CodeAnalysis.CSharp.Syntax
;
using
Microsoft.CodeAnalysis.Host
;
using
Microsoft.CodeAnalysis.LanguageServices
;
using
Microsoft.CodeAnalysis.PooledObjects
;
using
Microsoft.CodeAnalysis.Shared.Extensions
;
...
...
@@ -15,10 +16,12 @@
namespace
Microsoft.CodeAnalysis.CSharp
{
internal
class
CSharpSemanticFactsService
:
ISemanticFactsService
internal
class
CSharpSemanticFactsService
:
AbstractSemanticFactsService
,
ISemanticFactsService
{
internal
static
readonly
CSharpSemanticFactsService
Instance
=
new
CSharpSemanticFactsService
();
protected
override
ISyntaxFactsService
SyntaxFactsService
=>
CSharpSyntaxFactsService
.
Instance
;
private
CSharpSemanticFactsService
()
{
}
...
...
src/Workspaces/Core/Portable/LanguageServices/SemanticsFactsService/ISemanticFactsService.cs
浏览文件 @
f2f9d203
...
...
@@ -2,8 +2,11 @@
using
System.Collections.Generic
;
using
System.Collections.Immutable
;
using
System.Linq
;
using
System.Threading
;
using
Microsoft.CodeAnalysis.Host
;
using
Microsoft.CodeAnalysis.Shared.Extensions
;
using
Microsoft.CodeAnalysis.Shared.Utilities
;
namespace
Microsoft.CodeAnalysis.LanguageServices
{
...
...
@@ -101,5 +104,28 @@ internal interface ISemanticFactsService : ILanguageService
IEnumerable
<
ISymbol
>
GetDeclaredSymbols
(
SemanticModel
semanticModel
,
SyntaxNode
memberDeclaration
,
CancellationToken
cancellationToken
);
SymbolInfo
GetSymbolInfo
(
SemanticModel
semanticModel
,
SyntaxNode
node
,
SyntaxToken
token
,
CancellationToken
cancellationToken
);
SyntaxToken
GenerateUniqueName
(
SemanticModel
semanticModel
,
SyntaxNode
location
,
string
baseName
,
CancellationToken
cancellationToken
);
}
internal
abstract
class
AbstractSemanticFactsService
{
protected
abstract
ISyntaxFactsService
SyntaxFactsService
{
get
;
}
public
SyntaxToken
GenerateUniqueName
(
SemanticModel
semanticModel
,
SyntaxNode
location
,
string
baseName
,
CancellationToken
cancellationToken
)
{
var
syntaxFacts
=
this
.
SyntaxFactsService
;
var
container
=
location
.
AncestorsAndSelf
().
FirstOrDefault
(
a
=>
syntaxFacts
.
IsExecutableBlock
(
a
)
||
syntaxFacts
.
IsMethodBody
(
a
))
??
location
;
var
existingSymbols
=
semanticModel
.
GetExistingSymbols
(
container
,
cancellationToken
);
var
reservedNames
=
semanticModel
.
LookupSymbols
(
container
.
SpanStart
)
.
Select
(
s
=>
s
.
Name
)
.
Concat
(
existingSymbols
.
Select
(
s
=>
s
.
Name
));
return
syntaxFacts
.
ToIdentifierToken
(
NameGenerator
.
EnsureUniqueness
(
baseName
,
reservedNames
,
syntaxFacts
.
IsCaseSensitive
));
}
}
}
src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSemanticFactsService.vb
浏览文件 @
f2f9d203
...
...
@@ -21,10 +21,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End
Class
Friend
Class
VisualBasicSemanticFactsService
Inherits
AbstractSemanticFactsService
Implements
ISemanticFactsService
Public
Shared
ReadOnly
Instance
As
New
VisualBasicSemanticFactsService
()
Protected
Overrides
ReadOnly
Property
SyntaxFactsService
As
ISyntaxFactsService
=
VisualBasicSyntaxFactsService
.
Instance
Private
Sub
New
()
End
Sub
...
...
@@ -294,5 +297,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Public
Function
GetSymbolInfo
(
semanticModel
As
SemanticModel
,
node
As
SyntaxNode
,
token
As
SyntaxToken
,
cancellationToken
As
CancellationToken
)
As
SymbolInfo
Implements
ISemanticFactsService
.
GetSymbolInfo
Return
semanticModel
.
GetSymbolInfo
(
node
,
cancellationToken
)
End
Function
Private
Function
ISemanticFactsService_GenerateUniqueName
(
semanticModel
As
SemanticModel
,
location
As
SyntaxNode
,
baseName
As
String
,
cancellationToken
As
CancellationToken
)
As
SyntaxToken
Implements
ISemanticFactsService
.
GenerateUniqueName
Return
MyBase
.
GenerateUniqueName
(
semanticModel
,
location
,
baseName
,
cancellationToken
)
End
Function
End
Class
End
Namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录