C#: Compare symbols using SymbolEqualityComparer.

This commit is contained in:
Calum Grant
2019-11-22 12:51:19 +00:00
parent ca195e9340
commit 5f6527a183
13 changed files with 29 additions and 24 deletions

View File

@@ -282,7 +282,9 @@ namespace Semmle.Extraction
/// of the symbol is a constructed generic.
/// </summary>
/// <param name="symbol">The symbol to populate.</param>
public bool Defines(ISymbol symbol) => !Equals(symbol, symbol.OriginalDefinition) || Scope.InScope(symbol);
public bool Defines(ISymbol symbol) =>
!SymbolEqualityComparer.Default.Equals(symbol, symbol.OriginalDefinition) ||
Scope.InScope(symbol);
/// <summary>
/// Whether the current extraction context defines a given file.

View File

@@ -36,7 +36,7 @@ namespace Semmle.Extraction.Entities
}
public override bool NeedsPopulation =>
!Equals(assembly, Context.Compilation.Assembly) || !Context.IsGlobalContext;
!SymbolEqualityComparer.Default.Equals(assembly, Context.Compilation.Assembly) || !Context.IsGlobalContext;
public override int GetHashCode() =>
symbol == null ? 91187354 : symbol.GetHashCode();

View File

@@ -46,7 +46,9 @@ namespace Semmle.Extraction
public bool InFileScope(string path) => path == filepath;
public bool InScope(ISymbol symbol) => Equals(symbol.ContainingAssembly, assembly) || Equals(symbol, assembly);
public bool InScope(ISymbol symbol) =>
SymbolEqualityComparer.Default.Equals(symbol.ContainingAssembly, assembly) ||
SymbolEqualityComparer.Default.Equals(symbol, assembly);
}
/// <summary>