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); } }
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; }
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); }
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; }
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()); }
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()); }
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); }
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); }
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); }