Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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();
        }