dotnet/roslyn
在 GitHub 查看Confusing doc comments and method names in implementation of VB's PENamespaceSymbol
Open
#73,870 创建于 2024年6月6日
Area-CompilersConcept-APIConcept-Design Debthelp wanted
仓库指标
- Star
- (20,414 star)
- PR 合并指标
- (平均合并 6天 17小时) (30 天内合并 256 个 PR)
描述
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