提交 84794075 编写于 作者: B Brett V. Forsgren

prevent `Compilation.GetSymbolsWithName() from returning null entries

上级 e49eebfe
......@@ -2940,7 +2940,11 @@ public IEnumerable<ISymbol> GetSymbolsWithName(Func<string, bool> predicate, Sym
if (includeNamespace && predicate(current.Name))
{
var container = GetSpineSymbol(spine);
set.Add(GetSymbol(container, current));
var symbol = GetSymbol(container, current);
if (symbol != null)
{
set.Add(symbol);
}
}
}
else
......@@ -2948,7 +2952,11 @@ public IEnumerable<ISymbol> GetSymbolsWithName(Func<string, bool> predicate, Sym
if (includeType && predicate(current.Name))
{
var container = GetSpineSymbol(spine);
set.Add(GetSymbol(container, current));
var symbol = GetSymbol(container, current);
if (symbol != null)
{
set.Add(symbol);
}
}
if (includeMember)
......@@ -2984,13 +2992,16 @@ public IEnumerable<ISymbol> GetSymbolsWithName(Func<string, bool> predicate, Sym
spine.Add(current);
var container = GetSpineSymbol(spine);
foreach (var member in container.GetMembers())
if (container != null)
{
if (!member.IsTypeOrTypeAlias() &&
(member.CanBeReferencedByName || member.IsExplicitInterfaceImplementation() || member.IsIndexer()) &&
predicate(member.Name))
foreach (var member in container.GetMembers())
{
set.Add(member);
if (!member.IsTypeOrTypeAlias() &&
(member.CanBeReferencedByName || member.IsExplicitInterfaceImplementation() || member.IsIndexer()) &&
predicate(member.Name))
{
set.Add(member);
}
}
}
......
......@@ -2681,12 +2681,18 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
If current.Kind = DeclarationKind.Namespace Then
If includeNamespace AndAlso predicate(current.Name) Then
Dim container = GetSpineSymbol(spine)
[set].Add(GetSymbol(container, current))
Dim symbol = GetSymbol(container, current)
If symbol IsNot Nothing Then
[set].Add(symbol)
End If
End If
Else
If includeType AndAlso predicate(current.Name) Then
Dim container = GetSpineSymbol(spine)
[set].Add(GetSymbol(container, current))
Dim symbol = GetSymbol(container, current)
If symbol IsNot Nothing Then
[set].Add(symbol)
End If
End If
If includeMember Then
......@@ -2719,7 +2725,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
For Each name In mergedType.MemberNames
If predicate(name) Then
container = If(container, GetSpineSymbol(spine))
[set].UnionWith(container.GetMembers(name))
If container IsNot Nothing Then
[set].UnionWith(container.GetMembers(name))
End If
End If
Next
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册