dotnet/roslyn
Vedi su GitHubConfusing doc comments and method names in implementation of VB's PENamespaceSymbol
Open
#73.870 aperta il 6 giu 2024
Area-CompilersConcept-APIConcept-Design Debthelp wanted
Metriche repository
- Star
- (20.414 star)
- Metriche merge PR
- (Merge medio 6g 17h) (256 PR mergiate in 30 g)
Descrizione
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