Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
a7803ede
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,发现更多精彩内容 >>
提交
a7803ede
编写于
11月 20, 2015
作者:
C
Cyrus Najmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Don't block during tests.
上级
c53b76b8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
24 deletion
+25
-24
src/Workspaces/CoreTest/FindReferencesTests.cs
src/Workspaces/CoreTest/FindReferencesTests.cs
+25
-24
未找到文件。
src/Workspaces/CoreTest/FindReferencesTests.cs
浏览文件 @
a7803ede
...
...
@@ -2,6 +2,7 @@
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.CSharp
;
using
Microsoft.CodeAnalysis.CSharp.Symbols
;
...
...
@@ -31,7 +32,7 @@ private Solution GetSingleDocumentSolution(string sourceText)
}
[
Fact
]
public
void
FindFieldReferencesInSingleDocumentProject
()
public
async
Task
FindFieldReferencesInSingleDocumentProject
()
{
var
text
=
@"
public class C {
...
...
@@ -45,15 +46,15 @@ public class C {
"
;
var
solution
=
GetSingleDocumentSolution
(
text
);
var
project
=
solution
.
Projects
.
First
();
var
symbol
=
project
.
GetCompilationAsync
().
Result
.
GetTypeByMetadataName
(
"C"
).
GetMembers
(
"X"
).
First
();
var
symbol
=
(
await
project
.
GetCompilationAsync
())
.
GetTypeByMetadataName
(
"C"
).
GetMembers
(
"X"
).
First
();
var
result
=
SymbolFinder
.
FindReferencesAsync
(
symbol
,
solution
).
Result
.
ToList
();
var
result
=
(
await
SymbolFinder
.
FindReferencesAsync
(
symbol
,
solution
))
.
ToList
();
Assert
.
Equal
(
1
,
result
.
Count
);
// 1 symbol found
Assert
.
Equal
(
3
,
result
[
0
].
Locations
.
Count
());
// 3 locations found
}
[
Fact
]
public
void
FindTypeReference_DuplicateMetadataReferences
()
public
async
Task
FindTypeReference_DuplicateMetadataReferences
()
{
var
text
=
@"
public class C {
...
...
@@ -69,9 +70,9 @@ public class C {
.
AddDocument
(
did
,
"foo.cs"
,
SourceText
.
From
(
text
));
var
project
=
solution
.
Projects
.
First
();
var
symbol
=
(
IFieldSymbol
)
project
.
GetCompilationAsync
().
Result
.
GetTypeByMetadataName
(
"C"
).
GetMembers
(
"X"
).
First
();
var
symbol
=
(
IFieldSymbol
)
(
await
project
.
GetCompilationAsync
())
.
GetTypeByMetadataName
(
"C"
).
GetMembers
(
"X"
).
First
();
var
result
=
SymbolFinder
.
FindReferencesAsync
(
symbol
.
Type
,
solution
).
Result
.
ToList
();
var
result
=
(
await
SymbolFinder
.
FindReferencesAsync
(
symbol
.
Type
,
solution
))
.
ToList
();
Assert
.
Equal
(
9
,
result
.
Count
);
var
typeSymbol
=
result
.
Where
(
@ref
=>
@ref
.
Definition
.
Kind
==
SymbolKind
.
NamedType
).
Single
();
...
...
@@ -79,7 +80,7 @@ public class C {
}
[
Fact
]
public
void
PinvokeMethodReferences_VB
()
public
async
Task
PinvokeMethodReferences_VB
()
{
var
tree
=
Microsoft
.
CodeAnalysis
.
VisualBasic
.
VisualBasicSyntaxTree
.
ParseText
(
@"
...
...
@@ -112,14 +113,14 @@ End Module
ProjectId
prj1Id
=
ProjectId
.
CreateNewId
();
DocumentId
docId
=
DocumentId
.
CreateNewId
(
prj1Id
);
Microsoft
.
CodeAnalysis
.
Solution
sln
=
new
AdhocWorkspace
().
CurrentSolution
Solution
sln
=
new
AdhocWorkspace
().
CurrentSolution
.
AddProject
(
prj1Id
,
"testDeclareReferences"
,
"testAssembly"
,
LanguageNames
.
VisualBasic
)
.
AddMetadataReference
(
prj1Id
,
MscorlibRef
)
.
AddDocument
(
docId
,
"testFile"
,
tree
.
GetText
());
Microsoft
.
CodeAnalysis
.
Project
prj
=
sln
.
GetProject
(
prj1Id
).
WithCompilationOptions
(
new
VisualBasic
.
VisualBasicCompilationOptions
(
OutputKind
.
ConsoleApplication
,
embedVbCoreRuntime
:
true
));
tree
=
prj
.
GetDocument
(
docId
).
GetSyntaxTreeAsync
().
Result
;
Compilation
comp
=
prj
.
GetCompilationAsync
().
Result
;
Project
prj
=
sln
.
GetProject
(
prj1Id
).
WithCompilationOptions
(
new
VisualBasic
.
VisualBasicCompilationOptions
(
OutputKind
.
ConsoleApplication
,
embedVbCoreRuntime
:
true
));
tree
=
await
prj
.
GetDocument
(
docId
).
GetSyntaxTreeAsync
()
;
Compilation
comp
=
await
prj
.
GetCompilationAsync
()
;
SemanticModel
semanticModel
=
comp
.
GetSemanticModel
(
tree
);
...
...
@@ -128,17 +129,17 @@ End Module
// declared method calls
var
symbol
=
semanticModel
.
GetDeclaredSymbol
(
declareMethod
);
var
references
=
SymbolFinder
.
FindReferencesAsync
(
symbol
,
prj
.
Solution
).
Result
;
var
references
=
await
SymbolFinder
.
FindReferencesAsync
(
symbol
,
prj
.
Solution
)
;
Assert
.
Equal
(
expected
:
2
,
actual
:
references
.
ElementAt
(
0
).
Locations
.
Count
());
// normal method calls
symbol
=
semanticModel
.
GetDeclaredSymbol
(
normalMethod
);
references
=
SymbolFinder
.
FindReferencesAsync
(
symbol
,
prj
.
Solution
).
Result
;
references
=
await
SymbolFinder
.
FindReferencesAsync
(
symbol
,
prj
.
Solution
)
;
Assert
.
Equal
(
expected
:
2
,
actual
:
references
.
ElementAt
(
0
).
Locations
.
Count
());
}
[
Fact
]
public
void
PinvokeMethodReferences_CS
()
public
async
Task
PinvokeMethodReferences_CS
()
{
var
tree
=
Microsoft
.
CodeAnalysis
.
CSharp
.
CSharpSyntaxTree
.
ParseText
(
@"
...
...
@@ -188,9 +189,9 @@ public static void NormalMethod()
.
AddMetadataReference
(
prj1Id
,
MscorlibRef
)
.
AddDocument
(
docId
,
"testFile"
,
tree
.
GetText
());
Microsoft
.
CodeAnalysis
.
Project
prj
=
sln
.
GetProject
(
prj1Id
).
WithCompilationOptions
(
new
CSharp
.
CSharpCompilationOptions
(
OutputKind
.
ConsoleApplication
));
tree
=
prj
.
GetDocument
(
docId
).
GetSyntaxTreeAsync
().
Result
;
Compilation
comp
=
prj
.
GetCompilationAsync
().
Result
;
Project
prj
=
sln
.
GetProject
(
prj1Id
).
WithCompilationOptions
(
new
CSharp
.
CSharpCompilationOptions
(
OutputKind
.
ConsoleApplication
));
tree
=
await
prj
.
GetDocument
(
docId
).
GetSyntaxTreeAsync
()
;
Compilation
comp
=
await
prj
.
GetCompilationAsync
()
;
SemanticModel
semanticModel
=
comp
.
GetSemanticModel
(
tree
);
...
...
@@ -200,17 +201,17 @@ public static void NormalMethod()
// pinvoke method calls
var
symbol
=
semanticModel
.
GetDeclaredSymbol
(
declareMethod
);
var
references
=
SymbolFinder
.
FindReferencesAsync
(
symbol
,
prj
.
Solution
).
Result
;
var
references
=
await
SymbolFinder
.
FindReferencesAsync
(
symbol
,
prj
.
Solution
)
;
Assert
.
Equal
(
2
,
references
.
ElementAt
(
0
).
Locations
.
Count
());
// normal method calls
symbol
=
semanticModel
.
GetDeclaredSymbol
(
normalMethod
);
references
=
SymbolFinder
.
FindReferencesAsync
(
symbol
,
prj
.
Solution
).
Result
;
references
=
await
SymbolFinder
.
FindReferencesAsync
(
symbol
,
prj
.
Solution
)
;
Assert
.
Equal
(
2
,
references
.
ElementAt
(
0
).
Locations
.
Count
());
}
[
Fact
,
WorkItem
(
537936
,
"DevDiv"
)]
public
void
FindReferences_InterfaceMapping
()
public
async
Task
FindReferences_InterfaceMapping
()
{
var
text
=
@"
abstract class C
...
...
@@ -231,12 +232,12 @@ class B : C, A
"
;
var
solution
=
GetSingleDocumentSolution
(
text
);
var
project
=
solution
.
Projects
.
First
();
var
comp
=
project
.
GetCompilationAsync
().
Result
;
var
comp
=
await
project
.
GetCompilationAsync
()
;
// Find references on definition B.Boo()
var
typeB
=
comp
.
GetTypeByMetadataName
(
"B"
);
var
boo
=
typeB
.
GetMembers
(
"Boo"
).
First
();
var
result
=
SymbolFinder
.
FindReferencesAsync
(
boo
,
solution
).
Result
.
ToList
();
var
result
=
(
await
SymbolFinder
.
FindReferencesAsync
(
boo
,
solution
))
.
ToList
();
Assert
.
Equal
(
2
,
result
.
Count
);
// 2 symbols found
HashSet
<
int
>
expectedMatchedLines
=
new
HashSet
<
int
>
{
3
,
13
,
14
};
...
...
@@ -247,7 +248,7 @@ class B : C, A
// Find references on definition C.Boo()
var
typeC
=
comp
.
GetTypeByMetadataName
(
"C"
);
boo
=
typeC
.
GetMembers
(
"Boo"
).
First
();
result
=
SymbolFinder
.
FindReferencesAsync
(
boo
,
solution
).
Result
.
ToList
();
result
=
(
await
SymbolFinder
.
FindReferencesAsync
(
boo
,
solution
))
.
ToList
();
Assert
.
Equal
(
2
,
result
.
Count
);
// 2 symbols found
expectedMatchedLines
=
new
HashSet
<
int
>
{
3
,
13
,
14
};
...
...
@@ -258,7 +259,7 @@ class B : C, A
// Find references on definition A.Boo()
var
typeA
=
comp
.
GetTypeByMetadataName
(
"A"
);
boo
=
typeA
.
GetMembers
(
"Boo"
).
First
();
result
=
SymbolFinder
.
FindReferencesAsync
(
boo
,
solution
).
Result
.
ToList
();
result
=
(
await
SymbolFinder
.
FindReferencesAsync
(
boo
,
solution
))
.
ToList
();
Assert
.
Equal
(
2
,
result
.
Count
);
// 2 symbols found
expectedMatchedLines
=
new
HashSet
<
int
>
{
7
,
12
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录