提交 f9bb0caf 编写于 作者: C CyrusNajmabadi

Support getting and setting Module accessibility through the SyntaxGenerator.

上级 f97a2dc6
...@@ -2468,6 +2468,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration ...@@ -2468,6 +2468,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return DirectCast(declaration, EnumBlockSyntax).EnumStatement.Modifiers Return DirectCast(declaration, EnumBlockSyntax).EnumStatement.Modifiers
Case SyntaxKind.EnumStatement Case SyntaxKind.EnumStatement
Return DirectCast(declaration, EnumStatementSyntax).Modifiers Return DirectCast(declaration, EnumStatementSyntax).Modifiers
Case SyntaxKind.ModuleBlock
Return DirectCast(declaration, ModuleBlockSyntax).ModuleStatement.Modifiers
Case SyntaxKind.ModuleStatement
Return DirectCast(declaration, ModuleStatementSyntax).Modifiers
Case SyntaxKind.DelegateFunctionStatement, Case SyntaxKind.DelegateFunctionStatement,
SyntaxKind.DelegateSubStatement SyntaxKind.DelegateSubStatement
Return DirectCast(declaration, DelegateStatementSyntax).Modifiers Return DirectCast(declaration, DelegateStatementSyntax).Modifiers
...@@ -2538,6 +2542,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration ...@@ -2538,6 +2542,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Return DirectCast(declaration, EnumBlockSyntax).WithEnumStatement(DirectCast(declaration, EnumBlockSyntax).EnumStatement.WithModifiers(tokens)) Return DirectCast(declaration, EnumBlockSyntax).WithEnumStatement(DirectCast(declaration, EnumBlockSyntax).EnumStatement.WithModifiers(tokens))
Case SyntaxKind.EnumStatement Case SyntaxKind.EnumStatement
Return DirectCast(declaration, EnumStatementSyntax).WithModifiers(tokens) Return DirectCast(declaration, EnumStatementSyntax).WithModifiers(tokens)
Case SyntaxKind.ModuleBlock
Return DirectCast(declaration, ModuleBlockSyntax).WithModuleStatement(DirectCast(declaration, ModuleBlockSyntax).ModuleStatement.WithModifiers(tokens))
Case SyntaxKind.ModuleStatement
Return DirectCast(declaration, ModuleStatementSyntax).WithModifiers(tokens)
Case SyntaxKind.DelegateFunctionStatement, Case SyntaxKind.DelegateFunctionStatement,
SyntaxKind.DelegateSubStatement SyntaxKind.DelegateSubStatement
Return DirectCast(declaration, DelegateStatementSyntax).WithModifiers(tokens) Return DirectCast(declaration, DelegateStatementSyntax).WithModifiers(tokens)
...@@ -2618,38 +2626,40 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration ...@@ -2618,38 +2626,40 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGeneration
Private Function CanHaveAccessibility(declaration As SyntaxNode) As Boolean Private Function CanHaveAccessibility(declaration As SyntaxNode) As Boolean
Select Case declaration.Kind Select Case declaration.Kind
Case SyntaxKind.ClassBlock, Case SyntaxKind.ClassBlock,
SyntaxKind.ClassStatement, SyntaxKind.ClassStatement,
SyntaxKind.StructureBlock, SyntaxKind.StructureBlock,
SyntaxKind.StructureStatement, SyntaxKind.StructureStatement,
SyntaxKind.InterfaceBlock, SyntaxKind.InterfaceBlock,
SyntaxKind.InterfaceStatement, SyntaxKind.InterfaceStatement,
SyntaxKind.EnumBlock, SyntaxKind.EnumBlock,
SyntaxKind.EnumStatement, SyntaxKind.EnumStatement,
SyntaxKind.DelegateFunctionStatement, SyntaxKind.ModuleBlock,
SyntaxKind.DelegateSubStatement, SyntaxKind.ModuleStatement,
SyntaxKind.FieldDeclaration, SyntaxKind.DelegateFunctionStatement,
SyntaxKind.FunctionBlock, SyntaxKind.DelegateSubStatement,
SyntaxKind.SubBlock, SyntaxKind.FieldDeclaration,
SyntaxKind.ConstructorBlock, SyntaxKind.FunctionBlock,
SyntaxKind.FunctionStatement, SyntaxKind.SubBlock,
SyntaxKind.SubStatement, SyntaxKind.ConstructorBlock,
SyntaxKind.SubNewStatement, SyntaxKind.FunctionStatement,
SyntaxKind.PropertyBlock, SyntaxKind.SubStatement,
SyntaxKind.PropertyStatement, SyntaxKind.SubNewStatement,
SyntaxKind.OperatorBlock, SyntaxKind.PropertyBlock,
SyntaxKind.OperatorStatement, SyntaxKind.PropertyStatement,
SyntaxKind.EventBlock, SyntaxKind.OperatorBlock,
SyntaxKind.EventStatement, SyntaxKind.OperatorStatement,
SyntaxKind.GetAccessorBlock, SyntaxKind.EventBlock,
SyntaxKind.GetAccessorStatement, SyntaxKind.EventStatement,
SyntaxKind.SetAccessorBlock, SyntaxKind.GetAccessorBlock,
SyntaxKind.SetAccessorStatement, SyntaxKind.GetAccessorStatement,
SyntaxKind.AddHandlerAccessorBlock, SyntaxKind.SetAccessorBlock,
SyntaxKind.AddHandlerAccessorStatement, SyntaxKind.SetAccessorStatement,
SyntaxKind.RemoveHandlerAccessorBlock, SyntaxKind.AddHandlerAccessorBlock,
SyntaxKind.RemoveHandlerAccessorStatement, SyntaxKind.AddHandlerAccessorStatement,
SyntaxKind.RaiseEventAccessorBlock, SyntaxKind.RemoveHandlerAccessorBlock,
SyntaxKind.RaiseEventAccessorStatement SyntaxKind.RemoveHandlerAccessorStatement,
SyntaxKind.RaiseEventAccessorBlock,
SyntaxKind.RaiseEventAccessorStatement
Return True Return True
Case Else Case Else
Return False Return False
......
...@@ -2301,7 +2301,7 @@ End Class ...@@ -2301,7 +2301,7 @@ End Class
Public Sub TestGetAccessibility() Public Sub TestGetAccessibility()
Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.ClassDeclaration("c", accessibility:=Accessibility.Internal))) Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.ClassDeclaration("c", accessibility:=Accessibility.Internal)))
Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.StructDeclaration("s", accessibility:=Accessibility.Internal))) Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.StructDeclaration("s", accessibility:=Accessibility.Internal)))
Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.EnumDeclaration("i", accessibility:=Accessibility.Internal))) Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.InterfaceDeclaration("i", accessibility:=Accessibility.Internal)))
Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.EnumDeclaration("e", accessibility:=Accessibility.Internal))) Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.EnumDeclaration("e", accessibility:=Accessibility.Internal)))
Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.DelegateDeclaration("d", accessibility:=Accessibility.Internal))) Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.DelegateDeclaration("d", accessibility:=Accessibility.Internal)))
Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.MethodDeclaration("m", accessibility:=Accessibility.Internal))) Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.MethodDeclaration("m", accessibility:=Accessibility.Internal)))
...@@ -2318,6 +2318,11 @@ End Class ...@@ -2318,6 +2318,11 @@ End Class
Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.LocalDeclarationStatement(_g.IdentifierName("t"), "loc"))) Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.LocalDeclarationStatement(_g.IdentifierName("t"), "loc")))
Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.Attribute("a"))) Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.Attribute("a")))
Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(SyntaxFactory.TypeParameter("tp"))) Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(SyntaxFactory.TypeParameter("tp")))
Dim m = SyntaxFactory.ModuleBlock(
SyntaxFactory.ModuleStatement("module2").
WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword))))
Assert.Equal(Accessibility.Public, _g.GetAccessibility(m))
End Sub End Sub
<Fact> <Fact>
...@@ -2341,6 +2346,11 @@ End Class ...@@ -2341,6 +2346,11 @@ End Class
Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.WithAccessibility(_g.LocalDeclarationStatement(_g.IdentifierName("t"), "loc"), Accessibility.Private))) Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.WithAccessibility(_g.LocalDeclarationStatement(_g.IdentifierName("t"), "loc"), Accessibility.Private)))
Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.WithAccessibility(_g.Attribute("a"), Accessibility.Private))) Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.WithAccessibility(_g.Attribute("a"), Accessibility.Private)))
Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.WithAccessibility(SyntaxFactory.TypeParameter("tp"), Accessibility.Private))) Assert.Equal(Accessibility.NotApplicable, _g.GetAccessibility(_g.WithAccessibility(SyntaxFactory.TypeParameter("tp"), Accessibility.Private)))
Dim m = SyntaxFactory.ModuleBlock(
SyntaxFactory.ModuleStatement("module2").
WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword))))
Assert.Equal(Accessibility.Internal, _g.GetAccessibility(_g.WithAccessibility(m, Accessibility.Internal)))
End Sub End Sub
<Fact> <Fact>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册