From 9cbf2871463dfe61e03817acce67863ab5ce7137 Mon Sep 17 00:00:00 2001 From: CyrusNajmabadi Date: Fri, 14 Apr 2017 21:53:48 -0700 Subject: [PATCH] Shared constructors are private. --- ...bleItemFactory.DeclaredSymbolNavigableItem.cs | 1 + .../VisualBasicSyntaxFactsService.vb | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Features/Core/Portable/Navigation/NavigableItemFactory.DeclaredSymbolNavigableItem.cs b/src/Features/Core/Portable/Navigation/NavigableItemFactory.DeclaredSymbolNavigableItem.cs index 1c234d27ea8..741127b4ea7 100644 --- a/src/Features/Core/Portable/Navigation/NavigableItemFactory.DeclaredSymbolNavigableItem.cs +++ b/src/Features/Core/Portable/Navigation/NavigableItemFactory.DeclaredSymbolNavigableItem.cs @@ -46,6 +46,7 @@ private static Glyph GetPublicGlyph(DeclaredSymbolInfoKind kind) { case DeclaredSymbolInfoKind.Class: return Glyph.ClassPublic; case DeclaredSymbolInfoKind.Constant: return Glyph.ConstantPublic; + case DeclaredSymbolInfoKind.Constructor: return Glyph.MethodPublic; case DeclaredSymbolInfoKind.Delegate: return Glyph.DelegatePublic; case DeclaredSymbolInfoKind.Enum: return Glyph.EnumPublic; case DeclaredSymbolInfoKind.EnumMember: return Glyph.EnumMemberPublic; diff --git a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb index 83c8fee4453..a8c2c2b413a 100644 --- a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb +++ b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb @@ -863,7 +863,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic GetContainerDisplayName(node.Parent), GetFullyQualifiedContainerName(node.Parent), DeclaredSymbolInfoKind.Constructor, - GetAccessibility(typeBlock, typeBlock.BlockStatement.Modifiers), + GetAccessibility(constructor, constructor.SubNewStatement.Modifiers), constructor.SubNewStatement.NewKeyword.Span, ImmutableArray(Of String).Empty, parameterCount:=CType(If(constructor.SubNewStatement.ParameterList?.Parameters.Count, 0), UShort)) @@ -1091,8 +1091,18 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ' No accessibility modifiers Select Case node.Parent.Kind() Case SyntaxKind.ClassBlock - ' In a class, fields are private by default, everything else is public - Return If(node.Kind() = SyntaxKind.FieldDeclaration, Accessibility.Private, Accessibility.Public) + ' In a class, fields and shared-constructors are private by default, + ' everything Else Is Public + If node.Kind() = SyntaxKind.FieldDeclaration Then + Return Accessibility.Private + End If + + If node.Kind() = SyntaxKind.ConstructorBlock AndAlso + DirectCast(node, ConstructorBlockSyntax).SubNewStatement.Modifiers.Any(SyntaxKind.SharedKeyword) Then + Return Accessibility.Private + End If + + Return Accessibility.Public Case SyntaxKind.StructureBlock, SyntaxKind.InterfaceBlock ' Everything in a struct/interface is public -- GitLab