Example #1
0
        public static void TwoGenericOut()
        {
            var syntaxTree = CSharpSyntaxTree.ParseText(
                @"
namespace N
{
    class C
    {
        int M<T>(out T t1, out T t2)
        {
            t1 = default;
            t2 = default;
            return 1;
        }
    }
}");
            var compilation   = CSharpCompilation.Create("test", new[] { syntaxTree });
            var semanticModel = compilation.GetSemanticModel(syntaxTree);
            var parameters    = syntaxTree.FindMethodDeclaration("M").ParameterList.Parameters;
            var symbol1       = semanticModel.GetDeclaredSymbol(parameters[0], CancellationToken.None);
            var symbol2       = semanticModel.GetDeclaredSymbol(parameters[1], CancellationToken.None);

            Assert.AreEqual(true, SymbolComparer.Equal((ISymbol)symbol1, (ISymbol)symbol1));
            Assert.AreEqual(false, SymbolComparer.Equal((ISymbol)symbol1, (ISymbol)symbol2));
            Assert.AreEqual(true, ParameterSymbolComparer.Equal(symbol1, symbol1));
            Assert.AreEqual(false, ParameterSymbolComparer.Equal(symbol1, symbol2));
            Assert.AreEqual(SymbolComparer.Default.GetHashCode(symbol1), ParameterSymbolComparer.Default.GetHashCode(symbol1));
            Assert.AreNotEqual(SymbolComparer.Default.GetHashCode(symbol1), ParameterSymbolComparer.Default.GetHashCode(symbol2));
        }
Example #2
0
        public static void Equals()
        {
            var syntaxTree = CSharpSyntaxTree.ParseText(
                @"
namespace N
{
    public class C
    {
        public int M(int i1, int i2) => 1;
    }
}");
            var compilation   = CSharpCompilation.Create("test", new[] { syntaxTree });
            var semanticModel = compilation.GetSemanticModel(syntaxTree);
            var parameters    = syntaxTree.FindMethodDeclaration("M").ParameterList.Parameters;
            var symbol1       = semanticModel.GetDeclaredSymbol(parameters[0], CancellationToken.None);
            var symbol2       = semanticModel.GetDeclaredSymbol(parameters[1], CancellationToken.None);

            Assert.AreEqual(true, SymbolComparer.Equals((ISymbol)symbol1, (ISymbol)symbol1));
            Assert.AreEqual(false, SymbolComparer.Equals((ISymbol)symbol1, (ISymbol)symbol2));
            Assert.AreEqual(true, ParameterSymbolComparer.Equals(symbol1, symbol1));
            Assert.AreEqual(false, ParameterSymbolComparer.Equals(symbol1, symbol2));
            Assert.AreEqual(SymbolComparer.Default.GetHashCode(symbol1), ParameterSymbolComparer.Default.GetHashCode(symbol1));
            Assert.AreNotEqual(SymbolComparer.Default.GetHashCode(symbol1), ParameterSymbolComparer.Default.GetHashCode(symbol2));
        }