Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET
Roslyn
提交
71f01cbb
R
Roslyn
项目概览
dotNET
/
Roslyn
通知
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,发现更多精彩内容 >>
提交
71f01cbb
编写于
6月 01, 2017
作者:
F
Fred Silberberg
提交者:
GitHub
6月 01, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19885 from 333fred/fix-syntax-nothing
Fix VB IUsingStatement.Declaration to not have null syntax.
上级
354a3686
ee5db85c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
127 addition
and
4 deletion
+127
-4
src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb
src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb
+11
-4
src/Compilers/VisualBasic/Test/Semantic/BasicCompilerSemanticTest.vbproj
...isualBasic/Test/Semantic/BasicCompilerSemanticTest.vbproj
+1
-0
src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IUsingStatement.vb
...st/Semantic/IOperation/IOperationTests_IUsingStatement.vb
+115
-0
未找到文件。
src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb
浏览文件 @
71f01cbb
...
...
@@ -3,6 +3,7 @@
Imports
System.Collections.Immutable
Imports
Microsoft.CodeAnalysis.Semantics
Imports
Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports
Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace
Microsoft.CodeAnalysis.VisualBasic
...
...
@@ -176,7 +177,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Private
ReadOnly
_syntax
As
SyntaxNode
Public
Sub
New
(
boundCaseBlock
As
BoundCaseBlock
)
' `CaseElseClauseSyntax` is bound to `BoundCaseStatement` with an empty list of case clauses,
' `CaseElseClauseSyntax` is bound to `BoundCaseStatement` with an empty list of case clauses,
' so we explicitly create an IOperation node for Case-Else clause to differentiate it from Case clause.
Dim
caseStatement
=
boundCaseBlock
.
CaseStatement
If
caseStatement
.
CaseClauses
.
IsEmpty
AndAlso
caseStatement
.
Syntax
.
Kind
()
=
SyntaxKind
.
CaseElseStatement
Then
...
...
@@ -1460,7 +1461,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return
s_variablesMappings
.
GetValue
(
Me
,
Function
(
BoundUsing
)
Return
New
Variables
(
BoundUsing
.
ResourceList
.
As
(
Of
IVariableDeclaration
))
If
BoundUsing
.
ResourceList
.
IsDefault
Then
Return
Nothing
End
If
Dim
usingStatementSyntax
=
DirectCast
(
Syntax
,
UsingBlockSyntax
).
UsingStatement
Return
New
Variables
(
BoundUsing
.
ResourceList
.
As
(
Of
IVariableDeclaration
),
usingStatementSyntax
)
End
Function
)
End
Get
End
Property
...
...
@@ -1487,9 +1492,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Implements
IVariableDeclarationStatement
Private
ReadOnly
_variables
As
ImmutableArray
(
Of
IVariableDeclaration
)
Private
ReadOnly
_syntax
As
SyntaxNode
Public
Sub
New
(
variables
As
ImmutableArray
(
Of
IVariableDeclaration
))
Public
Sub
New
(
variables
As
ImmutableArray
(
Of
IVariableDeclaration
)
,
syntax
As
UsingStatementSyntax
)
_variables
=
variables
_syntax
=
syntax
End
Sub
Public
Sub
Accept
(
visitor
As
OperationVisitor
)
Implements
IOperation
.
Accept
...
...
@@ -1514,7 +1521,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Public
ReadOnly
Property
Syntax
As
SyntaxNode
Implements
IOperation
.
Syntax
Get
Return
Nothing
Return
_syntax
End
Get
End
Property
...
...
src/Compilers/VisualBasic/Test/Semantic/BasicCompilerSemanticTest.vbproj
浏览文件 @
71f01cbb
...
...
@@ -128,6 +128,7 @@
<Compile
Include=
"FlowAnalysis\RegionAnalysisTestsWithStaticLocals.vb"
/>
<Compile
Include=
"FlowAnalysis\StructureAnalysisTests.vb"
/>
<Compile
Include=
"FlowAnalysis\TryLockUsingStatementTests.vb"
/>
<Compile
Include=
"IOperation\IOperationTests_IUsingStatement.vb"
/>
<Compile
Include=
"IOperation\IOperationTests_IVariableDeclaration.vb"
/>
<Compile
Include=
"Resource.Designer.vb"
>
<AutoGen>
True
</AutoGen>
...
...
src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IUsingStatement.vb
0 → 100644
浏览文件 @
71f01cbb
Imports
Microsoft.CodeAnalysis.Semantics
Imports
Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports
Roslyn.Test.Utilities
Namespace
Microsoft.CodeAnalysis.VisualBasic.UnitTests.Semantics
Partial
Public
Class
IOperationTests
Inherits
SemanticModelTestBase
<
Fact
>
<
WorkItem
(
19819
,
"https://github.com/dotnet/roslyn/issues/19819"
)
>
Public
Sub
UsingDeclarationSyntaxNotNull
()
Dim
source
=
<
compilation
>
<
file
name
=
"c.vb"
>
<
!
[
CDATA
[
Imports
System
Module
Module1
Class
C1
Implements
IDisposable
Public
Sub
Dispose
()
Implements
IDisposable
.
Dispose
Throw
New
NotImplementedException
()
End
Sub
End
Class
Sub
S1
()
Using
D1
as
New
C1
()
End
Using
End
Sub
End
Module
]]
>
</
file
>
</
compilation
>
Dim
comp
=
CreateCompilationWithMscorlibAndVBRuntime
(
source
,
parseOptions
:
=
TestOptions
.
RegularWithIOperationFeature
)
CompilationUtils
.
AssertNoDiagnostics
(
comp
)
Dim
tree
=
comp
.
SyntaxTrees
.
Single
()
Dim
node
=
tree
.
GetRoot
().
DescendantNodes
().
OfType
(
Of
UsingBlockSyntax
).
Single
()
Dim
op
=
DirectCast
(
comp
.
GetSemanticModel
(
tree
).
GetOperationInternal
(
node
),
IUsingStatement
)
Assert
.
NotNull
(
op
.
Declaration
.
Syntax
)
Assert
.
Same
(
node
.
UsingStatement
,
op
.
Declaration
.
Syntax
)
End
Sub
<
Fact
>
<
WorkItem
(
19887
,
"https://github.com/dotnet/roslyn/issues/19887"
)
>
Public
Sub
UsingDeclarationIncompleteUsingNullDeclaration
()
Dim
source
=
<
compilation
>
<
file
name
=
"c.vb"
>
<
!
[
CDATA
[
Imports
System
Module
Module1
Class
C1
Implements
IDisposable
Public
Sub
Dispose
()
Implements
IDisposable
.
Dispose
Throw
New
NotImplementedException
()
End
Sub
End
Class
Sub
S1
()
Using
End
Using
End
Sub
End
Module
]]
>
</
file
>
</
compilation
>
Dim
comp
=
CreateCompilationWithMscorlibAndVBRuntime
(
source
,
parseOptions
:
=
TestOptions
.
RegularWithIOperationFeature
)
CompilationUtils
.
AssertTheseDiagnostics
(
comp
,
<
expected
>
BC30201
:
Expression
expected
.
Using
~
</
expected
>
)
Dim
tree
=
comp
.
SyntaxTrees
.
Single
()
Dim
node
=
tree
.
GetRoot
().
DescendantNodes
().
OfType
(
Of
UsingBlockSyntax
).
Single
()
Dim
op
=
DirectCast
(
comp
.
GetSemanticModel
(
tree
).
GetOperationInternal
(
node
),
IUsingStatement
)
Assert
.
Null
(
op
.
Declaration
)
End
Sub
<
Fact
>
<
WorkItem
(
19887
,
"https://github.com/dotnet/roslyn/issues/19887"
)
>
Public
Sub
UsingDeclarationExistingVariableNullDeclaration
()
Dim
source
=
<
compilation
>
<
file
name
=
"c.vb"
>
<
!
[
CDATA
[
Imports
System
Module
Module1
Class
C1
Implements
IDisposable
Public
Sub
Dispose
()
Implements
IDisposable
.
Dispose
Throw
New
NotImplementedException
()
End
Sub
End
Class
Sub
S1
()
Dim
x
=
New
C1
()
Using
x
End
Using
End
Sub
End
Module
]]
>
</
file
>
</
compilation
>
Dim
comp
=
CreateCompilationWithMscorlibAndVBRuntime
(
source
,
parseOptions
:
=
TestOptions
.
RegularWithIOperationFeature
)
CompilationUtils
.
AssertNoDiagnostics
(
comp
)
Dim
tree
=
comp
.
SyntaxTrees
.
Single
()
Dim
node
=
tree
.
GetRoot
().
DescendantNodes
().
OfType
(
Of
UsingBlockSyntax
).
Single
()
Dim
op
=
DirectCast
(
comp
.
GetSemanticModel
(
tree
).
GetOperationInternal
(
node
),
IUsingStatement
)
Assert
.
Null
(
op
.
Declaration
)
End
Sub
End
Class
End
Namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录