public void CompareSymbols()
{
var tree = SyntaxTree.ParseText(@"
using System;
class C
{
}
class Program
{
public static void Main()
{
var c = new C(); Console.WriteLine(c.ToString());
}
}");
var mscorlib = MetadataReference.CreateAssemblyReference("mscorlib");
var compilation = Compilation.Create("MyCompilation",
syntaxTrees: new[] { tree }, references: new[] { mscorlib });
var model = compilation.GetSemanticModel(tree);
// Get VariableDeclaratorSyntax corresponding to the statement 'var c = ...' above.
VariableDeclaratorSyntax variableDeclarator = tree.GetRoot()
.DescendantNodes().OfType<VariableDeclaratorSyntax>().Single();
// Get TypeSymbol corresponding to 'var c' above.
ITypeSymbol type = ((LocalSymbol)model.GetDeclaredSymbol(variableDeclarator)).Type;
ITypeSymbol expectedType = compilation.GetTypeByMetadataName("C");
Assert.IsTrue(type.Equals(expectedType));
}