Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
3d4c3912
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,发现更多精彩内容 >>
提交
3d4c3912
编写于
9月 22, 2016
作者:
A
AlekseyTs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
RemoveAllSyntaxTrees should preserve embedded syntax trees in Declaration Table.
Fixes #13925.
上级
7f355e7e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
54 addition
and
1 deletion
+54
-1
src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb
...isualBasic/Portable/Compilation/VisualBasicCompilation.vb
+2
-1
src/Compilers/VisualBasic/Portable/Declarations/DeclarationTable.vb
...ers/VisualBasic/Portable/Declarations/DeclarationTable.vb
+5
-0
src/Compilers/VisualBasic/Test/Semantic/Compilation/CompilationAPITests.vb
...ualBasic/Test/Semantic/Compilation/CompilationAPITests.vb
+47
-0
未找到文件。
src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb
浏览文件 @
3d4c3912
...
...
@@ -424,6 +424,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Debug
.
Assert
(
syntaxTrees
.
All
(
Function
(
tree
)
syntaxTrees
(
syntaxTreeOrdinalMap
(
tree
))
Is
tree
))
Debug
.
Assert
(
syntaxTrees
.
SetEquals
(
rootNamespaces
.
Keys
.
AsImmutable
(),
EqualityComparer
(
Of
SyntaxTree
).
Default
))
Debug
.
Assert
(
embeddedTrees
.
All
(
Function
(
treeAndDeclaration
)
declarationTable
.
Contains
(
treeAndDeclaration
.
DeclarationEntry
)))
_options
=
options
_syntaxTrees
=
syntaxTrees
...
...
@@ -971,7 +972,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return
UpdateSyntaxTrees
(
ImmutableArray
(
Of
SyntaxTree
).
Empty
,
ImmutableDictionary
.
Create
(
Of
SyntaxTree
,
Integer
)(),
ImmutableDictionary
.
Create
(
Of
SyntaxTree
,
DeclarationTableEntry
)(),
DeclarationTable
.
Empty
,
AddEmbeddedTrees
(
DeclarationTable
.
Empty
,
_embeddedTrees
)
,
referenceDirectivesChanged
:
=
_declarationTable
.
ReferenceDirectives
.
Any
())
End
Function
...
...
src/Compilers/VisualBasic/Portable/Declarations/DeclarationTable.vb
浏览文件 @
3d4c3912
...
...
@@ -76,6 +76,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
End
If
End
Function
Public
Function
Contains
(
rootDeclaration
As
DeclarationTableEntry
)
As
Boolean
Return
rootDeclaration
IsNot
Nothing
AndAlso
(
_allOlderRootDeclarations
.
Contains
(
rootDeclaration
)
OrElse
_latestLazyRootDeclaration
Is
rootDeclaration
)
End
Function
Public
Function
RemoveRootDeclaration
(
lazyRootDeclaration
As
DeclarationTableEntry
)
As
DeclarationTable
' We can only reuse the cache if we're removing the decl that was just added.
If
_latestLazyRootDeclaration
Is
lazyRootDeclaration
Then
...
...
src/Compilers/VisualBasic/Test/Semantic/Compilation/CompilationAPITests.vb
浏览文件 @
3d4c3912
...
...
@@ -1961,5 +1961,52 @@ End Sub
Assert
.
Throws
(
Of
InvalidOperationException
)(
Function
()
CreateSubmission
(
"?a + 1"
,
previous
:
=
s0
))
End
Sub
<
Fact
>
<
WorkItem
(
13925
,
"https://github.com/dotnet/roslyn/issues/13925"
)
>
Public
Sub
RemoveAllSyntaxTreesAndEmbeddedTrees_01
()
Dim
compilation1
=
CreateCompilationWithMscorlib
(
<
compilation
>
<
file
name
=
"a.vb"
>
Public
Module
C
Sub
Main
()
System
.
Console
.
WriteLine
(
1
)
End
Sub
End
Module
</
file
>
</
compilation
>
,
options
:
=
TestOptions
.
ReleaseExe
.
WithEmbedVbCoreRuntime
(
True
),
references
:
=
{
SystemRef
})
compilation1
.
VerifyDiagnostics
()
Dim
compilation2
=
compilation1
.
RemoveAllSyntaxTrees
()
compilation2
=
compilation2
.
AddSyntaxTrees
(
compilation1
.
SyntaxTrees
)
compilation2
.
VerifyDiagnostics
()
CompileAndVerify
(
compilation2
,
expectedOutput
:
=
"1"
)
End
Sub
<
Fact
>
<
WorkItem
(
13925
,
"https://github.com/dotnet/roslyn/issues/13925"
)
>
Public
Sub
RemoveAllSyntaxTreesAndEmbeddedTrees_02
()
Dim
compilation1
=
CreateCompilationWithMscorlibAndVBRuntime
(
<
compilation
>
<
file
name
=
"a.vb"
>
Public
Module
C
Sub
Main
()
System
.
Console
.
WriteLine
(
1
)
End
Sub
End
Module
</
file
>
</
compilation
>
,
options
:
=
TestOptions
.
ReleaseExe
.
WithEmbedVbCoreRuntime
(
True
))
compilation1
.
VerifyDiagnostics
()
Dim
compilation2
=
compilation1
.
RemoveAllSyntaxTrees
()
compilation2
=
compilation2
.
AddSyntaxTrees
(
compilation1
.
SyntaxTrees
)
compilation2
.
VerifyDiagnostics
()
CompileAndVerify
(
compilation2
,
expectedOutput
:
=
"1"
)
End
Sub
End
Class
End
Namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录