Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
2fe85c41
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,发现更多精彩内容 >>
提交
2fe85c41
编写于
10月 13, 2015
作者:
C
Cyrus Najmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make the Type/Property cascading symmetric
上级
ea92e95e
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
54 addition
and
18 deletion
+54
-18
src/EditorFeatures/VisualBasic/BasicEditorFeatures.vbproj
src/EditorFeatures/VisualBasic/BasicEditorFeatures.vbproj
+1
-1
src/EditorFeatures/VisualBasic/GoToDefinition/VisualBasicGoToDefinitionService.vb
...lBasic/GoToDefinition/VisualBasicGoToDefinitionService.vb
+2
-16
src/Workspaces/Core/Portable/FindSymbols/FindReferences/Finders/ILanguageServiceReferenceFinder.cs
...FindReferences/Finders/ILanguageServiceReferenceFinder.cs
+2
-1
src/Workspaces/Core/Portable/FindSymbols/FindReferences/Finders/PropertySymbolReferenceFinder.cs
...s/FindReferences/Finders/PropertySymbolReferenceFinder.cs
+11
-0
src/Workspaces/VisualBasic/Portable/BasicWorkspace.vbproj
src/Workspaces/VisualBasic/Portable/BasicWorkspace.vbproj
+1
-0
src/Workspaces/VisualBasic/Portable/FindSymbols/VisualBasicReferenceFinder.vb
...lBasic/Portable/FindSymbols/VisualBasicReferenceFinder.vb
+10
-0
src/Workspaces/VisualBasic/Portable/Utilities/SymbolExtensions.vb
...spaces/VisualBasic/Portable/Utilities/SymbolExtensions.vb
+27
-0
未找到文件。
src/EditorFeatures/VisualBasic/BasicEditorFeatures.vbproj
浏览文件 @
2fe85c41
...
...
@@ -315,4 +315,4 @@
<ImportGroup
Label=
"Targets"
>
<Import
Project=
"..\..\..\build\Targets\VSL.Imports.targets"
/>
</ImportGroup>
</Project>
</Project>
\ No newline at end of file
src/EditorFeatures/VisualBasic/GoToDefinition/VisualBasicGoToDefinitionService.vb
浏览文件 @
2fe85c41
...
...
@@ -4,6 +4,7 @@ Imports System.Composition
Imports
Microsoft.CodeAnalysis.Editor.Host
Imports
Microsoft.CodeAnalysis.Editor.Implementation.GoToDefinition
Imports
Microsoft.CodeAnalysis.Host.Mef
Imports
Microsoft.CodeAnalysis.VisualBasic.Utilities
Namespace
Microsoft.CodeAnalysis.Editor.VisualBasic.GoToDefinition
<
ExportLanguageService
(
GetType
(
IGoToDefinitionService
),
LanguageNames
.
VisualBasic
),
[
Shared
]
>
...
...
@@ -16,22 +17,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.GoToDefinition
End
Sub
Protected
Overrides
Function
FindRelatedExplicitlyDeclaredSymbol
(
symbol
As
ISymbol
,
compilation
As
Compilation
)
As
ISymbol
' For example: My.Forms.[|LoginForm|]
' LoginForm is a SynthesizedMyGroupCollectionPropertySymbol with no Location. Use the
' type of this property, the actual LoginForm type itself, for navigation purposes.
If
symbol
.
IsKind
(
SymbolKind
.
Property
)
AndAlso
symbol
.
IsImplicitlyDeclared
Then
Dim
propertySymbol
=
DirectCast
(
symbol
,
IPropertySymbol
)
If
propertySymbol
.
ContainingType
IsNot
Nothing
AndAlso
propertySymbol
.
ContainingType
.
Name
=
"MyForms"
AndAlso
propertySymbol
.
ContainingType
.
ContainingNamespace
IsNot
Nothing
AndAlso
propertySymbol
.
ContainingType
.
ContainingNamespace
.
IsMyNamespace
(
compilation
)
Then
Return
propertySymbol
.
Type
End
If
End
If
Return
symbol
Return
symbol
.
FindRelatedExplicitlyDeclaredSymbol
(
compilation
)
End
Function
End
Class
End
Namespace
src/Workspaces/Core/Portable/FindSymbols/FindReferences/Finders/ILanguageServiceReferenceFinder.cs
浏览文件 @
2fe85c41
...
...
@@ -7,6 +7,7 @@ namespace Microsoft.CodeAnalysis.FindSymbols.Finders
{
internal
interface
ILanguageServiceReferenceFinder
:
ILanguageService
{
Task
<
IEnumerable
<
ISymbol
>>
DetermineCascadedSymbolsAsync
(
INamedTypeSymbol
symbol
,
Project
project
,
CancellationToken
cancellationToken
);
Task
<
IEnumerable
<
ISymbol
>>
DetermineCascadedSymbolsAsync
(
INamedTypeSymbol
namedType
,
Project
project
,
CancellationToken
cancellationToken
);
Task
<
IEnumerable
<
ISymbol
>>
DetermineCascadedSymbolsAsync
(
IPropertySymbol
property
,
Project
project
,
CancellationToken
cancellationToken
);
}
}
\ No newline at end of file
src/Workspaces/Core/Portable/FindSymbols/FindReferences/Finders/PropertySymbolReferenceFinder.cs
浏览文件 @
2fe85c41
...
...
@@ -38,6 +38,17 @@ protected override bool CanFind(IPropertySymbol symbol)
result
=
result
.
Concat
(
symbol
.
SetMethod
);
}
var
project
=
solution
.
GetProject
(
symbol
.
ContainingAssembly
,
cancellationToken
);
var
service
=
project
?.
LanguageServices
.
GetService
<
ILanguageServiceReferenceFinder
>();
if
(
service
!=
null
)
{
var
languageCascades
=
await
service
.
DetermineCascadedSymbolsAsync
(
symbol
,
project
,
cancellationToken
).
ConfigureAwait
(
false
);
if
(
languageCascades
!=
null
)
{
result
=
result
.
Concat
(
languageCascades
);
}
}
return
result
;
}
...
...
src/Workspaces/VisualBasic/Portable/BasicWorkspace.vbproj
浏览文件 @
2fe85c41
...
...
@@ -239,6 +239,7 @@
<Compile
Include=
"Utilities\NameSyntaxIterator.vb"
/>
<Compile
Include=
"Utilities\PossibleDeclarationTypes.vb"
/>
<Compile
Include=
"Utilities\SpeculationAnalyzer.vb"
/>
<Compile
Include=
"Utilities\SymbolExtensions.vb"
/>
<Compile
Include=
"Utilities\SyntaxKindSet.vb"
/>
<Compile
Include=
"Utilities\TokenComparer.vb"
/>
<Compile
Include=
"Utilities\TypeSyntaxComparer.vb"
/>
...
...
src/Workspaces/VisualBasic/Portable/FindSymbols/VisualBasicReferenceFinder.vb
浏览文件 @
2fe85c41
...
...
@@ -3,12 +3,22 @@ Imports System.Threading
Imports
System.Threading.Tasks
Imports
Microsoft.CodeAnalysis.FindSymbols.Finders
Imports
Microsoft.CodeAnalysis.Host.Mef
Imports
Microsoft.CodeAnalysis.VisualBasic.Utilities
Namespace
Microsoft.CodeAnalysis.FindSymbols
<
ExportLanguageService
(
GetType
(
ILanguageServiceReferenceFinder
),
LanguageNames
.
VisualBasic
),
[
Shared
]
>
Friend
Class
VisualBasicReferenceFinder
Implements
ILanguageServiceReferenceFinder
Public
Async
Function
DetermineCascadedSymbolsAsync
(
[
property
]
As
IPropertySymbol
,
project
As
Project
,
cancellationToken
As
CancellationToken
)
As
Task
(
Of
IEnumerable
(
Of
ISymbol
))
Implements
ILanguageServiceReferenceFinder
.
DetermineCascadedSymbolsAsync
Dim
compilation
=
Await
project
.
GetCompilationAsync
(
cancellationToken
).
ConfigureAwait
(
False
)
Dim
relatedSymbol
=
[
property
]
.
FindRelatedExplicitlyDeclaredSymbol
(
compilation
)
Return
If
(
[
property
]
.
Equals
(
relatedSymbol
),
SpecializedCollections
.
EmptyEnumerable
(
Of
ISymbol
),
SpecializedCollections
.
SingletonEnumerable
(
relatedSymbol
))
End
Function
Public
Async
Function
DetermineCascadedSymbolsAsync
(
namedType
As
INamedTypeSymbol
,
project
As
Project
,
cancellationToken
As
CancellationToken
)
As
Task
(
Of
IEnumerable
(
Of
ISymbol
))
Implements
ILanguageServiceReferenceFinder
.
DetermineCascadedSymbolsAsync
Debug
.
Assert
(
project
.
Language
=
LanguageNames
.
VisualBasic
)
Dim
compilation
=
Await
project
.
GetCompilationAsync
(
cancellationToken
).
ConfigureAwait
(
False
)
...
...
src/Workspaces/VisualBasic/Portable/Utilities/SymbolExtensions.vb
0 → 100644
浏览文件 @
2fe85c41
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports
System.Runtime.CompilerServices
Namespace
Microsoft.CodeAnalysis.VisualBasic.Utilities
Friend
Module
SymbolExtensions
<
Extension
>
Public
Function
FindRelatedExplicitlyDeclaredSymbol
(
symbol
As
ISymbol
,
compilation
As
Compilation
)
As
ISymbol
' For example: My.Forms.[|LoginForm|]
' LoginForm is a SynthesizedMyGroupCollectionPropertySymbol with no Location. Use the
' type of this property, the actual LoginForm type itself, for navigation purposes.
If
symbol
.
IsKind
(
SymbolKind
.
Property
)
AndAlso
symbol
.
IsImplicitlyDeclared
Then
Dim
propertySymbol
=
DirectCast
(
symbol
,
IPropertySymbol
)
If
propertySymbol
.
ContainingType
IsNot
Nothing
AndAlso
propertySymbol
.
ContainingType
.
Name
=
"MyForms"
AndAlso
propertySymbol
.
ContainingType
.
ContainingNamespace
IsNot
Nothing
AndAlso
propertySymbol
.
ContainingType
.
ContainingNamespace
.
IsMyNamespace
(
compilation
)
Then
Return
propertySymbol
.
Type
End
If
End
If
Return
symbol
End
Function
End
Module
End
Namespace
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录