Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
aa17a29b
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,发现更多精彩内容 >>
提交
aa17a29b
编写于
7月 11, 2019
作者:
P
Petr Houska
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Moved IsInLocalFunctionHeader to SyntaxFactsService.
上级
e68e610e
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
26 addition
and
29 deletion
+26
-29
src/Features/CSharp/Portable/CodeRefactorings/CSharpRefactoringHelpersService.cs
...table/CodeRefactorings/CSharpRefactoringHelpersService.cs
+1
-27
src/Features/Core/Portable/CodeRefactorings/AbstractRefactoringHelpersService.cs
...ble/CodeRefactorings/AbstractRefactoringHelpersService.cs
+7
-1
src/Features/VisualBasic/Portable/CodeRefactorings/VisualBasicRefactoringHelpersService.vb
.../CodeRefactorings/VisualBasicRefactoringHelpersService.vb
+1
-1
src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs
...arp/Portable/LanguageServices/CSharpSyntaxFactsService.cs
+11
-0
src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs
...anguageServices/SyntaxFactsService/ISyntaxFactsService.cs
+1
-0
src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb
...ortable/LanguageServices/VisualBasicSyntaxFactsService.vb
+5
-0
未找到文件。
src/Features/CSharp/Portable/CodeRefactorings/CSharpRefactoringHelpersService.cs
浏览文件 @
aa17a29b
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using
System.Collections.Generic
;
using
System.Composition
;
using
Microsoft.CodeAnalysis.CodeRefactorings
;
using
Microsoft.CodeAnalysis.CSharp.Syntax
;
using
Microsoft.CodeAnalysis.Host.Mef
;
using
Microsoft.CodeAnalysis.LanguageServices
;
using
Microsoft.CodeAnalysis.Shared.Extensions
;
namespace
Microsoft.CodeAnalysis.CSharp.CodeRefactorings
{
[
ExportLanguageService
(
typeof
(
IRefactoringHelpersService
),
LanguageNames
.
CSharp
),
Shared
]
internal
class
CSharpRefactoringHelpersService
:
AbstractRefactoringHelpersService
<
PropertyDeclarationSyntax
,
ParameterSyntax
,
MethodDeclarationSyntax
,
LocalDeclarationStatementSyntax
>
internal
class
CSharpRefactoringHelpersService
:
AbstractRefactoringHelpersService
<
PropertyDeclarationSyntax
,
ParameterSyntax
,
MethodDeclarationSyntax
,
LocalDeclarationStatementSyntax
,
LocalFunctionStatementSyntax
>
{
protected
override
IEnumerable
<
SyntaxNode
>
ExtractNodesOfHeader
(
SyntaxNode
node
,
ISyntaxFactsService
syntaxFacts
)
{
foreach
(
var
baseExtraction
in
base
.
ExtractNodesOfHeader
(
node
,
syntaxFacts
))
{
yield
return
baseExtraction
;
}
if
(
IsInLocalFunctionHeader
(
node
,
syntaxFacts
))
{
yield
return
node
.
GetAncestorOrThis
<
LocalFunctionStatementSyntax
>();
}
}
private
bool
IsInLocalFunctionHeader
(
SyntaxNode
node
,
ISyntaxFactsService
syntaxFacts
)
{
var
containingLocalFunction
=
node
.
GetAncestorOrThis
<
LocalFunctionStatementSyntax
>();
if
(
containingLocalFunction
==
null
)
{
return
false
;
}
return
syntaxFacts
.
IsInHeader
(
node
,
containingLocalFunction
,
containingLocalFunction
.
ParameterList
);
}
}
}
src/Features/Core/Portable/CodeRefactorings/AbstractRefactoringHelpersService.cs
浏览文件 @
aa17a29b
...
...
@@ -11,11 +11,12 @@
namespace
Microsoft.CodeAnalysis.CodeRefactorings
{
internal
abstract
class
AbstractRefactoringHelpersService
<
TPropertyDeclaration
,
TParameter
,
TMethodDeclaration
,
TLocalDeclaration
>
:
IRefactoringHelpersService
internal
abstract
class
AbstractRefactoringHelpersService
<
TPropertyDeclaration
,
TParameter
,
TMethodDeclaration
,
TLocalDeclaration
,
TLocalFunctionStatementSyntax
>
:
IRefactoringHelpersService
where
TPropertyDeclaration
:
SyntaxNode
where
TParameter
:
SyntaxNode
where
TMethodDeclaration
:
SyntaxNode
where
TLocalDeclaration
:
SyntaxNode
where
TLocalFunctionStatementSyntax
:
SyntaxNode
{
public
async
Task
<
TSyntaxNode
>
TryGetSelectedNodeAsync
<
TSyntaxNode
>(
Document
document
,
TextSpan
selection
,
CancellationToken
cancellationToken
)
where
TSyntaxNode
:
SyntaxNode
...
...
@@ -443,6 +444,11 @@ protected virtual IEnumerable<SyntaxNode> ExtractNodesOfHeader(SyntaxNode node,
{
yield
return
node
.
GetAncestorOrThis
<
TMethodDeclaration
>();
}
if
(
syntaxFacts
.
IsInLocalFunctionHeader
(
node
,
syntaxFacts
))
{
yield
return
node
.
GetAncestorOrThis
<
TLocalFunctionStatementSyntax
>();
}
}
}
}
src/Features/VisualBasic/Portable/CodeRefactorings/VisualBasicRefactoringHelpersService.vb
浏览文件 @
aa17a29b
...
...
@@ -9,7 +9,7 @@ Imports Microsoft.CodeAnalysis.LanguageServices
Namespace
Microsoft.CodeAnalysis.VisualBasic.CodeRefactorings
<
ExportLanguageService
(
GetType
(
IRefactoringHelpersService
),
LanguageNames
.
VisualBasic
),
[
Shared
]
>
Friend
Class
VisualBasicRefactoringHelpersService
Inherits
AbstractRefactoringHelpersService
(
Of
PropertyStatementSyntax
,
ParameterSyntax
,
MethodStatementSyntax
,
LocalDeclarationStatementSyntax
)
Inherits
AbstractRefactoringHelpersService
(
Of
PropertyStatementSyntax
,
ParameterSyntax
,
MethodStatementSyntax
,
LocalDeclarationStatementSyntax
,
SyntaxNode
)
Protected
Overrides
Iterator
Function
ExtractNodesSimple
(
node
As
SyntaxNode
,
syntaxFacts
As
ISyntaxFactsService
)
As
IEnumerable
(
Of
SyntaxNode
)
For
Each
baseExtraction
In
MyBase
.
ExtractNodesSimple
(
node
,
syntaxFacts
)
...
...
src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs
浏览文件 @
aa17a29b
...
...
@@ -1824,6 +1824,17 @@ public bool IsInMethodHeader(SyntaxNode node)
return
IsInHeader
(
node
,
containingMethod
,
containingMethod
.
ParameterList
);
}
public
bool
IsInLocalFunctionHeader
(
SyntaxNode
node
,
ISyntaxFactsService
syntaxFacts
)
{
var
containingLocalFunction
=
node
.
GetAncestorOrThis
<
LocalFunctionStatementSyntax
>();
if
(
containingLocalFunction
==
null
)
{
return
false
;
}
return
syntaxFacts
.
IsInHeader
(
node
,
containingLocalFunction
,
containingLocalFunction
.
ParameterList
);
}
public
bool
IsBetweenTypeMembers
(
SourceText
sourceText
,
SyntaxNode
root
,
int
position
)
{
var
token
=
root
.
FindToken
(
position
);
...
...
src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs
浏览文件 @
aa17a29b
...
...
@@ -416,6 +416,7 @@ internal interface ISyntaxFactsService : ILanguageService
bool
IsInPropertyDeclarationHeader
(
SyntaxNode
node
);
bool
IsInParameterHeader
(
SyntaxNode
node
);
bool
IsInMethodHeader
(
SyntaxNode
node
);
bool
IsInLocalFunctionHeader
(
SyntaxNode
node
,
ISyntaxFactsService
syntaxFacts
);
bool
IsBetweenTypeMembers
(
SourceText
sourceText
,
SyntaxNode
root
,
int
position
);
// Walks the tree, starting from contextNode, looking for the first construct
...
...
src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb
浏览文件 @
aa17a29b
...
...
@@ -1785,6 +1785,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return
IsInHeader
(
node
,
method
,
method
)
End
Function
Public
Function
IsInLocalFunctionHeader
(
node
As
SyntaxNode
,
syntaxFacts
As
ISyntaxFactsService
)
As
Boolean
Implements
ISyntaxFactsService
.
IsInLocalFunctionHeader
' No local functions in VisualBasic
Return
False
End
Function
Public
Function
IsBetweenTypeMembers
(
sourceText
As
SourceText
,
root
As
SyntaxNode
,
position
As
Integer
)
As
Boolean
Implements
ISyntaxFactsService
.
IsBetweenTypeMembers
Dim
token
=
root
.
FindToken
(
position
)
Dim
typeDecl
=
token
.
GetAncestor
(
Of
TypeBlockSyntax
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录