Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
b4d9fe66
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,发现更多精彩内容 >>
提交
b4d9fe66
编写于
12月 08, 2015
作者:
M
Matt Warren
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add support for NotInheritable and NotOverridable
上级
29a5cb13
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
42 addition
and
27 deletion
+42
-27
src/Workspaces/VisualBasic/Portable/CodeGeneration/VisualBasicSyntaxGenerator.vb
...sic/Portable/CodeGeneration/VisualBasicSyntaxGenerator.vb
+27
-27
src/Workspaces/VisualBasicTest/CodeGeneration/SyntaxGeneratorTests.vb
...es/VisualBasicTest/CodeGeneration/SyntaxGeneratorTests.vb
+15
-0
未找到文件。
src/Workspaces/VisualBasic/Portable/CodeGeneration/VisualBasicSyntaxGenerator.vb
浏览文件 @
b4d9fe66
...
...
@@ -616,7 +616,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Public
Overrides
Function
FieldDeclaration
(
name
As
String
,
type
As
SyntaxNode
,
Optional
accessibility
As
Accessibility
=
Nothing
,
Optional
modifiers
As
DeclarationModifiers
=
Nothing
,
Optional
initializer
As
SyntaxNode
=
Nothing
)
As
SyntaxNode
Return
SyntaxFactory
.
FieldDeclaration
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_fieldModifiers
,
isField
:
=
True
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_fieldModifiers
,
DeclarationKind
.
Field
),
declarators
:
=
SyntaxFactory
.
SingletonSeparatedList
(
VariableDeclarator
(
type
,
name
,
initializer
)))
End
Function
...
...
@@ -632,7 +632,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Dim
statement
=
SyntaxFactory
.
MethodStatement
(
kind
:
=
If
(
returnType
Is
Nothing
,
SyntaxKind
.
SubStatement
,
SyntaxKind
.
FunctionStatement
),
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_methodModifiers
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_methodModifiers
,
DeclarationKind
.
Method
),
subOrFunctionKeyword
:
=
If
(
returnType
Is
Nothing
,
SyntaxFactory
.
Token
(
SyntaxKind
.
SubKeyword
),
SyntaxFactory
.
Token
(
SyntaxKind
.
FunctionKeyword
)),
identifier
:
=
identifier
.
ToIdentifierToken
(),
typeParameterList
:
=
GetTypeParameters
(
typeParameters
),
...
...
@@ -663,7 +663,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Dim
asClause
=
If
(
returnType
IsNot
Nothing
,
SyntaxFactory
.
SimpleAsClause
(
DirectCast
(
returnType
,
TypeSyntax
)),
Nothing
)
Dim
parameterList
=
GetParameterList
(
parameters
)
Dim
operatorToken
=
SyntaxFactory
.
Token
(
GetTokenKind
(
kind
))
Dim
modifierList
As
SyntaxTokenList
=
GetModifierList
(
accessibility
,
modifiers
And
s_methodModifiers
)
Dim
modifierList
As
SyntaxTokenList
=
GetModifierList
(
accessibility
,
modifiers
And
s_methodModifiers
,
DeclarationKind
.
Operator
)
If
kind
=
OperatorKind
.
ImplicitConversion
OrElse
kind
=
OperatorKind
.
ExplicitConversion
Then
modifierList
=
modifierList
.
Add
(
SyntaxFactory
.
Token
(
...
...
@@ -776,7 +776,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Dim
asClause
=
SyntaxFactory
.
SimpleAsClause
(
DirectCast
(
type
,
TypeSyntax
))
Dim
statement
=
SyntaxFactory
.
PropertyStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_propertyModifiers
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_propertyModifiers
,
DeclarationKind
.
Property
),
identifier
:
=
identifier
.
ToIdentifierToken
(),
parameterList
:
=
Nothing
,
asClause
:
=
asClause
,
...
...
@@ -814,7 +814,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Dim
asClause
=
SyntaxFactory
.
SimpleAsClause
(
DirectCast
(
type
,
TypeSyntax
))
Dim
statement
=
SyntaxFactory
.
PropertyStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_indexerModifiers
,
isDefault
:
=
True
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_indexerModifiers
,
DeclarationKind
.
Indexer
,
isDefault
:
=
True
),
identifier
:
=
SyntaxFactory
.
Identifier
(
"Item"
),
parameterList
:
=
SyntaxFactory
.
ParameterList
(
SyntaxFactory
.
SeparatedList
(
parameters
.
Cast
(
Of
ParameterSyntax
))),
asClause
:
=
asClause
,
...
...
@@ -1059,7 +1059,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Dim
prop
=
TryCast
(
declaration
,
PropertyStatementSyntax
)
If
prop
IsNot
Nothing
Then
prop
=
prop
.
WithModifiers
(
WithIsDefault
(
prop
.
Modifiers
,
GetIsDefault
(
prop
.
Modifiers
)
And
allowDefault
))
prop
=
prop
.
WithModifiers
(
WithIsDefault
(
prop
.
Modifiers
,
GetIsDefault
(
prop
.
Modifiers
)
And
allowDefault
,
GetDeclarationKind
(
declaration
)
))
Dim
accessors
=
New
List
(
Of
AccessorBlockSyntax
)
accessors
.
Add
(
CreateGetAccessorBlock
(
Nothing
))
...
...
@@ -1087,7 +1087,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return
isDefault
End
Function
Private
Function
WithIsDefault
(
modifierList
As
SyntaxTokenList
,
isDefault
As
Boolean
)
As
SyntaxTokenList
Private
Function
WithIsDefault
(
modifierList
As
SyntaxTokenList
,
isDefault
As
Boolean
,
kind
As
DeclarationKind
)
As
SyntaxTokenList
Dim
access
As
Accessibility
Dim
modifiers
As
DeclarationModifiers
Dim
currentIsDefault
As
Boolean
...
...
@@ -1095,7 +1095,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Me
.
GetAccessibilityAndModifiers
(
modifierList
,
access
,
modifiers
,
currentIsDefault
)
If
currentIsDefault
<>
isDefault
Then
Return
GetModifierList
(
access
,
modifiers
,
isDefault
)
Return
GetModifierList
(
access
,
modifiers
,
kind
,
isDefault
)
Else
Return
modifierList
End
If
...
...
@@ -1119,7 +1119,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return
SyntaxFactory
.
ConstructorBlock
(
subNewStatement
:
=
SyntaxFactory
.
SubNewStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_constructorModifiers
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_constructorModifiers
,
DeclarationKind
.
Constructor
),
parameterList
:
=
If
(
parameters
IsNot
Nothing
,
SyntaxFactory
.
ParameterList
(
SyntaxFactory
.
SeparatedList
(
parameters
.
Cast
(
Of
ParameterSyntax
)())),
SyntaxFactory
.
ParameterList
())),
statements
:
=
stats
)
End
Function
...
...
@@ -1141,7 +1141,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return
SyntaxFactory
.
ClassBlock
(
classStatement
:
=
SyntaxFactory
.
ClassStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_classModifiers
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_classModifiers
,
DeclarationKind
.
Class
),
identifier
:
=
name
.
ToIdentifierToken
(),
typeParameterList
:
=
GetTypeParameters
(
typeParameters
)),
[
inherits
]
:
=
If
(
baseType
IsNot
Nothing
,
SyntaxFactory
.
SingletonList
(
SyntaxFactory
.
InheritsStatement
(
DirectCast
(
baseType
,
TypeSyntax
))),
Nothing
),
...
...
@@ -1177,7 +1177,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return
SyntaxFactory
.
StructureBlock
(
structureStatement
:
=
SyntaxFactory
.
StructureStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_structModifiers
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
s_structModifiers
,
DeclarationKind
.
Struct
),
identifier
:
=
name
.
ToIdentifierToken
(),
typeParameterList
:
=
GetTypeParameters
(
typeParameters
)),
[
inherits
]
:
=
Nothing
,
...
...
@@ -1212,7 +1212,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return
SyntaxFactory
.
InterfaceBlock
(
interfaceStatement
:
=
SyntaxFactory
.
InterfaceStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
DeclarationModifiers
.
None
),
modifiers
:
=
GetModifierList
(
accessibility
,
DeclarationModifiers
.
None
,
DeclarationKind
.
Interface
),
identifier
:
=
name
.
ToIdentifierToken
(),
typeParameterList
:
=
GetTypeParameters
(
typeParameters
)),
[
inherits
]
:
=
If
(
itypes
IsNot
Nothing
,
SyntaxFactory
.
SingletonList
(
SyntaxFactory
.
InheritsStatement
(
SyntaxFactory
.
SeparatedList
(
itypes
))),
Nothing
),
...
...
@@ -1259,7 +1259,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return
SyntaxFactory
.
EnumBlock
(
enumStatement
:
=
SyntaxFactory
.
EnumStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
GetAllowedModifiers
(
SyntaxKind
.
EnumStatement
),
DeclarationKind
.
Enum
),
identifier
:
=
name
.
ToIdentifierToken
(),
underlyingType
:
=
Nothing
),
members
:
=
AsEnumMembers
(
members
))
...
...
@@ -1302,7 +1302,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return
SyntaxFactory
.
DelegateStatement
(
kind
:
=
kind
,
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
,
kind
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
GetAllowedModifiers
(
kind
),
DeclarationKind
.
Delegate
),
subOrFunctionKeyword
:
=
If
(
kind
=
SyntaxKind
.
DelegateSubStatement
,
SyntaxFactory
.
Token
(
SyntaxKind
.
SubKeyword
),
SyntaxFactory
.
Token
(
SyntaxKind
.
FunctionKeyword
)),
identifier
:
=
name
.
ToIdentifierToken
(),
typeParameterList
:
=
GetTypeParameters
(
typeParameters
),
...
...
@@ -2350,7 +2350,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
GetAccessibilityAndModifiers
(
tokens
,
acc
,
currentMods
,
isDefault
)
If
(
currentMods
<>
modifiers
)
Then
Dim
newTokens
=
GetModifierList
(
acc
,
modifiers
,
declaration
.
Kind
,
isDefault
)
Dim
newTokens
=
GetModifierList
(
acc
,
modifiers
And
GetAllowedModifiers
(
declaration
.
Kind
),
GetDeclarationKind
(
declaration
)
,
isDefault
)
Return
WithModifierTokens
(
declaration
,
Merge
(
tokens
,
newTokens
))
Else
Return
declaration
...
...
@@ -2523,7 +2523,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return
declaration
End
If
Dim
newTokens
=
GetModifierList
(
accessibility
,
mods
,
declaration
.
Kind
,
isDefault
)
Dim
newTokens
=
GetModifierList
(
accessibility
,
mods
,
GetDeclarationKind
(
declaration
)
,
isDefault
)
Return
WithModifierTokens
(
declaration
,
Merge
(
tokens
,
newTokens
))
End
Function
...
...
@@ -2568,12 +2568,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
End
Select
End
Function
Private
Function
GetModifierList
(
accessibility
As
Accessibility
,
modifiers
As
DeclarationModifiers
,
kind
As
SyntaxKind
,
Optional
isDefault
As
Boolean
=
False
)
As
SyntaxTokenList
modifiers
=
modifiers
And
GetAllowedModifiers
(
kind
)
Return
GetModifierList
(
accessibility
,
modifiers
,
isDefault
,
kind
=
SyntaxKind
.
FieldDeclaration
)
End
Function
Private
Function
GetModifierList
(
accessibility
As
Accessibility
,
modifiers
As
DeclarationModifiers
,
Optional
isDefault
As
Boolean
=
False
,
Optional
isField
As
Boolean
=
False
)
As
SyntaxTokenList
Private
Function
GetModifierList
(
accessibility
As
Accessibility
,
modifiers
As
DeclarationModifiers
,
kind
As
DeclarationKind
,
Optional
isDefault
As
Boolean
=
False
)
As
SyntaxTokenList
Dim
_list
=
SyntaxFactory
.
TokenList
()
If
isDefault
Then
...
...
@@ -2632,8 +2627,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
_list
=
_list
.
Add
(
SyntaxFactory
.
Token
(
SyntaxKind
.
WriteOnlyKeyword
))
End
If
Dim
isType
=
kind
=
DeclarationKind
.
Class
Or
kind
=
DeclarationKind
.
Struct
Or
kind
=
DeclarationKind
.
Interface
Or
kind
=
DeclarationKind
.
Enum
If
modifiers
.
IsSealed
Then
_list
=
_list
.
Add
(
SyntaxFactory
.
Token
(
SyntaxKind
.
NotInheritableKeyword
))
If
isType
Then
_list
=
_list
.
Add
(
SyntaxFactory
.
Token
(
SyntaxKind
.
NotInheritableKeyword
))
Else
_list
=
_list
.
Add
(
SyntaxFactory
.
Token
(
SyntaxKind
.
NotOverridableKeyword
))
End
If
End
If
If
modifiers
.
IsUnsafe
Then
...
...
@@ -2650,7 +2650,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
_list
=
_list
.
Add
(
SyntaxFactory
.
Token
(
SyntaxKind
.
PartialKeyword
))
End
If
If
(
is
Field
AndAlso
_list
.
Count
=
0
)
Then
If
(
kind
=
DeclarationKind
.
Field
AndAlso
_list
.
Count
=
0
)
Then
_list
=
_list
.
Add
(
SyntaxFactory
.
Token
(
SyntaxKind
.
DimKeyword
))
End
If
...
...
@@ -2700,7 +2700,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
modifiers
=
modifiers
Or
DeclarationModifiers
.
ReadOnly
Case
SyntaxKind
.
WriteOnlyKeyword
modifiers
=
modifiers
Or
DeclarationModifiers
.
WriteOnly
Case
SyntaxKind
.
NotInheritableKeyword
Case
SyntaxKind
.
NotInheritableKeyword
,
SyntaxKind
.
NotOverridableKeyword
modifiers
=
modifiers
Or
DeclarationModifiers
.
Sealed
Case
SyntaxKind
.
WithEventsKeyword
modifiers
=
modifiers
Or
DeclarationModifiers
.
WithEvents
...
...
@@ -3332,7 +3332,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Public
Overrides
Function
EventDeclaration
(
name
As
String
,
type
As
SyntaxNode
,
Optional
accessibility
As
Accessibility
=
Accessibility
.
NotApplicable
,
Optional
modifiers
As
DeclarationModifiers
=
Nothing
)
As
SyntaxNode
Return
SyntaxFactory
.
EventStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
,
SyntaxKind
.
EventStatem
ent
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
GetAllowedModifiers
(
SyntaxKind
.
EventStatement
),
DeclarationKind
.
Ev
ent
),
customKeyword
:
=
Nothing
,
eventKeyword
:
=
SyntaxFactory
.
Token
(
SyntaxKind
.
EventKeyword
),
identifier
:
=
name
.
ToIdentifierToken
(),
...
...
@@ -3375,7 +3375,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Dim
evStatement
=
SyntaxFactory
.
EventStatement
(
attributeLists
:
=
Nothing
,
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
,
SyntaxKind
.
EventStatem
ent
),
modifiers
:
=
GetModifierList
(
accessibility
,
modifiers
And
GetAllowedModifiers
(
SyntaxKind
.
EventStatement
),
DeclarationKind
.
Ev
ent
),
customKeyword
:
=
SyntaxFactory
.
Token
(
SyntaxKind
.
CustomKeyword
),
eventKeyword
:
=
SyntaxFactory
.
Token
(
SyntaxKind
.
EventKeyword
),
identifier
:
=
name
.
ToIdentifierToken
(),
...
...
src/Workspaces/VisualBasicTest/CodeGeneration/SyntaxGeneratorTests.vb
浏览文件 @
b4d9fe66
...
...
@@ -810,6 +810,21 @@ End Function</x>.Value)
_g
.
MethodDeclaration
(
"m"
,
accessibility
:
=
Accessibility
.
Private
,
modifiers
:
=
DeclarationModifiers
.
Partial
),
<
x
>
Private
Partial
Sub
m
()
End
Sub
</
x
>
.
Value
)
End
Sub
<
Fact
>
Public
Sub
TestDeclarationModifiers
()
VerifySyntax
(
Of
MethodBlockSyntax
)(
_g
.
MethodDeclaration
(
"m"
,
modifiers
:
=
DeclarationModifiers
.
Sealed
),
<
x
>
NotOverridable
Sub
m
()
End
Sub
</
x
>
.
Value
)
VerifySyntax
(
Of
ClassBlockSyntax
)(
_g
.
ClassDeclaration
(
"c"
,
modifiers
:
=
DeclarationModifiers
.
Sealed
),
<
x
>
NotInheritable
Class
c
End
Class
</
x
>
.
Value
)
End
Sub
<
Fact
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录