Пример #1
0
        internal static void AssertSymbolKeysEqual(ISymbol symbol1, ISymbol symbol2, SymbolKeyComparison comparison, bool expectEqual = true)
        {
            var sid1 = SymbolKey.Create(symbol1, CancellationToken.None);
            var sid2 = SymbolKey.Create(symbol2, CancellationToken.None);

            // default is Insensitive
            var ignoreCase = (comparison & SymbolKeyComparison.IgnoreCase) == SymbolKeyComparison.IgnoreCase;

            // default is NOT ignore
            var ignoreAssemblyIds = (comparison & SymbolKeyComparison.IgnoreAssemblyIds) == SymbolKeyComparison.IgnoreAssemblyIds;
            var message           = string.Concat(
                ignoreCase ? "SymbolID IgnoreCase" : "SymbolID",
                ignoreAssemblyIds ? " IgnoreAssemblyIds " : " ",
                "Compare");

            var ret = CodeAnalysis.SymbolKey.GetComparer(ignoreCase, ignoreAssemblyIds).Equals(sid2, sid1);

            if (expectEqual)
            {
                Assert.True(ret, message);
            }
            else
            {
                Assert.False(ret, message);
            }
        }
Пример #2
0
        internal static void AssertSymbolKeysEqual(ISymbol symbol1, ISymbol symbol2, SymbolKeyComparison comparison, bool expectEqual = true)
        {
            var sid1 = SymbolKey.Create(symbol1, CancellationToken.None);
            var sid2 = SymbolKey.Create(symbol2, CancellationToken.None);

            // default is Insensitive
            var isCaseSensitive = (comparison & SymbolKeyComparison.CaseSensitive) == SymbolKeyComparison.CaseSensitive;

            // default is NOT ignore
            var ignoreAssemblyIds = (comparison & SymbolKeyComparison.IgnoreAssemblyIds) == SymbolKeyComparison.IgnoreAssemblyIds;
            var message = string.Concat(
                isCaseSensitive ? "SymbolID CaseSensitive" : "SymbolID CaseInsensitive",
                ignoreAssemblyIds ? " IgnoreAssemblyIds " : " ",
                "Compare");

            var ret = CodeAnalysis.SymbolKey.GetComparer(isCaseSensitive, ignoreAssemblyIds).Equals(sid2, sid1);
            if (expectEqual)
            {
                Assert.True(ret, message);
            }
            else
            {
                Assert.False(ret, message);
            }
        }
        internal static ISymbol ResolveSymbol(ISymbol originalSymbol, Compilation originalCompilation, Compilation targetCompilation, SymbolKeyComparison comparison)
        {
            var sid = SymbolKey.Create(originalSymbol, originalCompilation, CancellationToken.None);
            var symInfo = sid.Resolve(targetCompilation, (comparison & SymbolKeyComparison.IgnoreAssemblyIds) == SymbolKeyComparison.IgnoreAssemblyIds);

            return symInfo.Symbol;
        }
Пример #4
0
        internal static void ResolveAndVerifySymbol(
            ExpressionSyntax node,
            ISymbol sourceSymbol,
            SemanticModel model,
            CSharpCompilation sourceComp,
            SymbolKeyComparison comparison = SymbolKeyComparison.None
            )
        {
            var syminfo = model.GetSymbolInfo(node);

            ResolveAndVerifySymbol(syminfo.Symbol, sourceSymbol, sourceComp, comparison);
        }
Пример #5
0
        internal static ISymbol ResolveSymbol(ISymbol originalSymbol, Compilation targetCompilation, SymbolKeyComparison comparison)
        {
            var sid = SymbolKey.Create(originalSymbol, CancellationToken.None);

            // Verify that serialization works.
            var serialized = sid.ToString();
            var deserialized = new SymbolKey(serialized);
            var comparer = SymbolKey.GetComparer(ignoreCase: false, ignoreAssemblyKeys: false);
            Assert.True(comparer.Equals(sid, deserialized));

            var symInfo = sid.Resolve(targetCompilation, (comparison & SymbolKeyComparison.IgnoreAssemblyIds) == SymbolKeyComparison.IgnoreAssemblyIds);
            return symInfo.Symbol;
        }
Пример #6
0
        internal static void ResolveAndVerifySymbol(ISymbol symbol1, ISymbol symbol2, Compilation compilation2, SymbolKeyComparison comparison = SymbolKeyComparison.None)
        {
            // same ID
            AssertSymbolKeysEqual(symbol1, symbol2, comparison);

            var resolvedSymbol = ResolveSymbol(symbol1, compilation2, comparison);

            Assert.NotNull(resolvedSymbol);

            // same Symbol
            Assert.Equal(symbol2, resolvedSymbol);
            Assert.Equal(symbol2.GetHashCode(), resolvedSymbol.GetHashCode());
        }
Пример #7
0
        internal static void ResolveAndVerifySymbol(
            ISymbol symbol1,
            ISymbol symbol2,
            Compilation compilation2,
            SymbolKeyComparison comparison = SymbolKeyComparison.None
            )
        {
            // same ID
            AssertSymbolKeysEqual(symbol1, symbol2, comparison);

            var resolvedSymbol = ResolveSymbol(symbol1, compilation2, comparison);

            Assert.NotNull(resolvedSymbol);

            // same Symbol
            Assert.Equal(symbol2, resolvedSymbol);
            Assert.Equal(symbol2.GetHashCode(), resolvedSymbol.GetHashCode());
        }
Пример #8
0
        internal static ISymbol ResolveSymbol(
            ISymbol originalSymbol,
            Compilation targetCompilation,
            SymbolKeyComparison comparison
            )
        {
            var sid = SymbolKey.Create(originalSymbol, CancellationToken.None);

            // Verify that serialization works.
            var serialized   = sid.ToString();
            var deserialized = new SymbolKey(serialized);
            var comparer     = SymbolKey.GetComparer(ignoreCase: false, ignoreAssemblyKeys: false);

            Assert.True(comparer.Equals(sid, deserialized));

            var symInfo = sid.Resolve(
                targetCompilation,
                (comparison & SymbolKeyComparison.IgnoreAssemblyIds)
                == SymbolKeyComparison.IgnoreAssemblyIds
                );

            return(symInfo.Symbol);
        }
Пример #9
0
 internal static void ResolveAndVerifySymbol(ExpressionSyntax node, ISymbol sourceSymbol, SemanticModel model, CSharpCompilation sourceComp, SymbolKeyComparison comparison = SymbolKeyComparison.None)
 {
     var syminfo = model.GetSymbolInfo(node);
     ResolveAndVerifySymbol(syminfo.Symbol, sourceSymbol, sourceComp, comparison);
 }
Пример #10
0
        internal static ISymbol ResolveSymbol(ISymbol originalSymbol, Compilation targetCompilation, SymbolKeyComparison comparison)
        {
            var sid     = SymbolKey.Create(originalSymbol, CancellationToken.None);
            var symInfo = sid.Resolve(targetCompilation, (comparison & SymbolKeyComparison.IgnoreAssemblyIds) == SymbolKeyComparison.IgnoreAssemblyIds);

            return(symInfo.Symbol);
        }