private void CheckImpl(String source, CollectedData <String>[] expectedData) { SemanticModel model = PreparationHelper.Prepare(source, "CastToSameType"); CastToSameTypeDetector detector = new CastToSameTypeDetector(model); detector.Visit(model.SyntaxTree.GetRoot()); Assert.AreEqual(expectedData, detector.Data); }
private IList <CollectedData <String> > GetTopLevelTypeNames(String source) { SemanticModel model = PreparationHelper.Prepare(source, "BadTypeNameCaseCheck"); TopLevelTypeNamesCollector collector = new TopLevelTypeNamesCollector(model); collector.Visit(model.SyntaxTree.GetRoot()); return(collector.Data); }
private void CheckImpl(String source, CollectedData <String>[] expectedData) { SemanticModel model = PreparationHelper.Prepare(source, "BadIdentifiersCheck"); BadIdentifiersDetector detector = new BadIdentifiersDetector(model); detector.Visit(model.SyntaxTree.GetRoot()); Assert.AreEqual(expectedData, detector.Data); }
public void ParseSimpleClass() { const String source = "using System;\r\n" + "namespace SomeNamespace\r\n" + "{\r\n" + " public class SomeClass\r\n" + " {\r\n" + " public void SomeMethod(Int32 i)\r\n" + " {\r\n" + " // Some method body\r\n" + " }\r\n" + " }\r\n" + "}"; SemanticModel model = PreparationHelper.Prepare(source, "SimpleParseExample"); CompilationUnitSyntax root = model.SyntaxTree.GetCompilationUnitRoot(); Console.WriteLine($"root.Kind = {root.Kind()}"); Console.WriteLine(); Console.WriteLine("Usings:"); foreach (UsingDirectiveSyntax usingDirective in root.Usings) { INamespaceSymbol usingModel = (INamespaceSymbol)model.GetSymbolInfo(usingDirective.Name).Symbol; Console.WriteLine($"namepsace = {usingDirective.Name}, assembly = {usingModel.ContainingAssembly.Name}"); } Console.WriteLine(); NamespaceDeclarationSyntax namespaceDeclaration = (NamespaceDeclarationSyntax)root.Members[0]; INamespaceSymbol namespaceModel = (INamespaceSymbol)model.GetSymbolInfo(namespaceDeclaration.Name).Symbol; Console.WriteLine($"NamespaceDeclaration: namespace = {namespaceDeclaration.Name}, assembly = {namespaceModel.ContainingAssembly.Name}"); Console.WriteLine(); ClassDeclarationSyntax classDeclaration = (ClassDeclarationSyntax)namespaceDeclaration.Members[0]; INamedTypeSymbol classModel = model.GetDeclaredSymbol(classDeclaration); INamedTypeSymbol baseClassModel = classModel.BaseType; Console.WriteLine($"ClassDeclaration: modifiers = {classDeclaration.Modifiers}, name = {classModel.ToDisplayString()}, base type = {baseClassModel.ToDisplayString()}"); Console.WriteLine(); MethodDeclarationSyntax methodDeclaration = (MethodDeclarationSyntax)classDeclaration.Members[0]; IMethodSymbol methodModel = model.GetDeclaredSymbol(methodDeclaration); String parameters = String.Join(", ", methodModel.Parameters.Select(p => $"type = {p.Type.ToDisplayString()}, name = {p.Name}")); Console.WriteLine($"MethodDeclaration: modifiers = {methodDeclaration.Modifiers}, name = {methodModel.Name}, return type ={methodModel.ReturnType.ToDisplayString()}, params = ({parameters})"); Console.WriteLine("Method body:"); Console.WriteLine(methodDeclaration.Body.ToFullString()); Console.WriteLine(); }