public static void Equivalent() { var syntaxTree = CSharpSyntaxTree.ParseText( @" namespace N { public class C { public int M1() => 1; public int M2() => 2; } }"); var compilation = CSharpCompilation.Create("test", new[] { syntaxTree }); var semanticModel = compilation.GetSemanticModel(syntaxTree); var node1 = syntaxTree.FindMethodDeclaration("M1"); var symbol1 = semanticModel.GetDeclaredSymbol(node1, CancellationToken.None); var node2 = syntaxTree.FindMethodDeclaration("M2"); var symbol2 = semanticModel.GetDeclaredSymbol(node2, CancellationToken.None); Assert.AreEqual(true, SymbolComparer.Equivalent((ISymbol)symbol1, (ISymbol)symbol1)); Assert.AreEqual(false, SymbolComparer.Equivalent((ISymbol)symbol1, (ISymbol)symbol2)); Assert.AreEqual(true, MethodSymbolComparer.Equivalent(symbol1, symbol1)); Assert.AreEqual(false, MethodSymbolComparer.Equivalent(symbol1, symbol2)); }
public void Equals() { var syntaxTree = CSharpSyntaxTree.ParseText( @" namespace RoslynSandbox { public class Foo { public int Bar1() => 1; public int Bar2() => 2; } }"); var compilation = CSharpCompilation.Create("test", new[] { syntaxTree }); var semanticModel = compilation.GetSemanticModel(syntaxTree); var node1 = syntaxTree.FindMethodDeclaration("Bar1"); var symbol1 = semanticModel.GetDeclaredSymbol(node1, CancellationToken.None); var node2 = syntaxTree.FindMethodDeclaration("Bar2"); var symbol2 = semanticModel.GetDeclaredSymbol(node2, CancellationToken.None); Assert.AreEqual(true, SymbolComparer.Equals((ISymbol)symbol1, (ISymbol)symbol1)); Assert.AreEqual(false, SymbolComparer.Equals((ISymbol)symbol1, (ISymbol)symbol2)); Assert.AreEqual(true, MethodSymbolComparer.Equals(symbol1, symbol1)); Assert.AreEqual(false, MethodSymbolComparer.Equals(symbol1, symbol2)); Assert.AreEqual(SymbolComparer.Default.GetHashCode(symbol1), MethodSymbolComparer.Default.GetHashCode(symbol1)); Assert.AreNotEqual(SymbolComparer.Default.GetHashCode(symbol1), MethodSymbolComparer.Default.GetHashCode(symbol2)); }