dotnet/roslyn
View on GitHubConfusing doc comments and method names in implementation of VB's PENamespaceSymbol
Open
#73,870 opened on Jun 6, 2024
Area-CompilersConcept-APIConcept-Design Debthelp wanted
Repository metrics
- Stars
- (20,414 stars)
- PR merge metrics
- (Avg merge 6d 17h) (256 merged PRs in 30d)
Description
Members dealing with both namespaces and types are documented/named to imply that the types are not involved:
''' <summary>
''' A map of namespaces immediately contained within this namespace
''' grouped by their name (case-insensitively).
''' </summary>
Protected m_lazyMembers As Dictionary(Of String, ImmutableArray(Of Symbol))
...
''' <summary>
''' Create symbols for nested namespaces and initialize m_Namespaces map.
''' </summary>
Private Sub LazyInitializeNamespaces(
childNamespaces As IEnumerable(Of KeyValuePair(Of String, IEnumerable(Of IGrouping(Of String, TypeDefinitionHandle))))
)
If m_lazyMembers Is Nothing Then
Dim members As New Dictionary(Of String, ImmutableArray(Of Symbol))(CaseInsensitiveComparison.Comparer)
' Add namespaces
For Each child In childNamespaces
Dim ns = New PENestedNamespaceSymbol(child.Key, Me, child.Value)
members.Add(ns.Name, ImmutableArray.Create(Of Symbol)(ns))
Next
' Merge in the types
For Each typeSymbols As ImmutableArray(Of PENamedTypeSymbol) In m_lazyTypes.Values
Dim name = typeSymbols(0).Name
Dim symbols As ImmutableArray(Of Symbol) = Nothing
If Not members.TryGetValue(name, symbols) Then
members.Add(name, StaticCast(Of Symbol).From(typeSymbols))
Else
members(name) = symbols.Concat(StaticCast(Of Symbol).From(typeSymbols))
End If
Next
Interlocked.CompareExchange(m_lazyMembers, members, Nothing)
End If
End Sub