Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
e606db10
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,发现更多精彩内容 >>
未验证
提交
e606db10
编写于
5月 30, 2017
作者:
F
Fredric Silberberg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix VB IUsingStatement.Declaration to not have null syntax.
上级
ea7f125b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
74 addition
and
11 deletion
+74
-11
src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb
src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb
+8
-4
src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests.vb
...s/VisualBasic/Test/Semantic/IOperation/IOperationTests.vb
+66
-7
未找到文件。
src/Compilers/VisualBasic/Portable/BoundTree/Statement.vb
浏览文件 @
e606db10
...
...
@@ -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,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return
s_variablesMappings
.
GetValue
(
Me
,
Function
(
BoundUsing
)
Return
New
Variables
(
BoundUsing
.
ResourceList
.
As
(
Of
IVariableDeclaration
))
Dim
usingStatementSyntax
=
Syntax
.
ChildNodes
().
OfType
(
Of
UsingStatementSyntax
).
SingleOrDefault
()
Return
New
Variables
(
BoundUsing
.
ResourceList
.
As
(
Of
IVariableDeclaration
),
usingStatementSyntax
)
End
Function
)
End
Get
End
Property
...
...
@@ -1487,9 +1489,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
SyntaxNode
)
_variables
=
variables
_syntax
=
syntax
End
Sub
Public
Sub
Accept
(
visitor
As
OperationVisitor
)
Implements
IOperation
.
Accept
...
...
@@ -1514,7 +1518,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/IOperation/IOperationTests.vb
浏览文件 @
e606db10
...
...
@@ -16,24 +16,24 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Semantics
<
file
name
=
"c.vb"
>
<
!
[
CDATA
[
Public
Class
B2
Public
Shared
Operator
+
(
x
As
B2
,
y
As
B2
)
As
B2
Public
Shared
Operator
+
(
x
As
B2
,
y
As
B2
)
As
B2
System
.
Console
.
WriteLine
(
"+"
)
Return
x
End
Operator
Public
Shared
Operator
-
(
x
As
B2
)
As
B2
Public
Shared
Operator
-
(
x
As
B2
)
As
B2
System
.
Console
.
WriteLine
(
"-"
)
Return
x
End
Operator
Public
Shared
Operator
-
(
x
As
B2
)
As
B2
Public
Shared
Operator
-
(
x
As
B2
)
As
B2
System
.
Console
.
WriteLine
(
"-"
)
Return
x
End
Operator
End
Class
Module
Module1
Sub
Main
()
Sub
Main
()
Dim
x
,
y
As
New
B2
()
x
=
x
+
10
x
=
x
+
y
...
...
@@ -142,7 +142,7 @@ IExpressionStatement (OperationKind.ExpressionStatement, IsInvalid) (Syntax: 'x
<
file
name
=
"c.vb"
>
<
!
[
CDATA
[
Public
Class
B2
Public
Shared
Operator
+
(
x
As
B2
,
y
As
B2
)
As
B2
Public
Shared
Operator
+
(
x
As
B2
,
y
As
B2
)
As
B2
System
.
Console
.
WriteLine
(
"+"
)
Return
x
End
Operator
...
...
@@ -150,7 +150,7 @@ End Class
Module
Module1
Sub
Main
()
Dim
x
,
y
As
Integer
Dim
x
,
y
As
Integer
Dim
a
,
b
As
New
B2
()
x
+=
y
a
+=
b
...
...
@@ -291,7 +291,7 @@ IForLoopStatement (LoopKind.For) (OperationKind.LoopStatement) (Syntax: 'For i =
<
file
name
=
"c.vb"
>
<
!
[
CDATA
[
Module
Module1
Sub
Main
()
Sub
Main
()
Test1
(
Nothing
)
Test2
(
New
System
.
Guid
(),
Nothing
)
Test1
(
AddressOf
Main
)
...
...
@@ -352,5 +352,64 @@ BC30581: 'AddressOf' expression cannot be converted to 'Integer' because 'Intege
IObjectCreationExpression (Constructor: Sub System.Guid..ctor()) (OperationKind.ObjectCreationExpression, Type: System.Guid) (Syntax: 'New System.Guid()')
IOperation: (OperationKind.None) (Syntax: 'AddressOf Main')"
)
End
Sub
<
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
Inherits
IDisposable
End
Class
Sub
S1
()
Using
D1
as
New
C1
()
End
Using
End
Sub
End
Module
]]
>
</
file
>
</
compilation
>
Dim
comp
=
CompilationUtils
.
CreateCompilationWithMscorlibAndVBRuntime
(
source
,
parseOptions
:
=
TestOptions
.
RegularWithIOperationFeature
)
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
.
Equal
(
"Using D1 as New C1()"
,
op
.
Declaration
.
Syntax
.
ToString
())
End
Sub
<
Fact
>
<
WorkItem
(
19819
,
"https://github.com/dotnet/roslyn/issues/19819"
)
>
Public
Sub
UsingDeclarationIncompleteUsingNotNullSyntax
()
Dim
source
=
<
compilation
>
<
file
name
=
"c.vb"
>
<
!
[
CDATA
[
Imports
System
Module
Module1
Class
C1
Inherits
IDisposable
End
Class
Sub
S1
()
Using
End
Using
End
Sub
End
Module
]]
>
</
file
>
</
compilation
>
Dim
comp
=
CompilationUtils
.
CreateCompilationWithMscorlibAndVBRuntime
(
source
,
parseOptions
:
=
TestOptions
.
RegularWithIOperationFeature
)
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
.
Equal
(
"Using"
,
op
.
Declaration
.
Syntax
.
ToString
())
End
Sub
End
Class
End
Namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录