Beispiel #1
0
        public SemanticErrorsResponse FindSemanticErrors(Request request)
        {
            var clientFilename = request.FileName.ApplyPathReplacementsForClient();
            var project        = _solution.ProjectContainingFile(request.FileName);

            project.UpdateFile(request.FileName, request.Buffer);
            var solutionSnapshot = new DefaultSolutionSnapshot(_solution.Projects.Select(i => i.ProjectContent));
            var syntaxTree       = new CSharpParser().Parse(request.Buffer, request.FileName);
            var resolver         = new CSharpAstResolver(solutionSnapshot.GetCompilation(project.ProjectContent), syntaxTree);
            var navigator        = new SemanticErrorsNavigator();

            resolver.ApplyNavigator(navigator);
            var errors = navigator.GetErrors().Select(i => new Error
            {
                FileName = clientFilename,
                Message  = i.Message,
                Line     = i.TextLocation.Line,
                Column   = i.TextLocation.Column,
            });

            return(new SemanticErrorsResponse
            {
                Errors = errors,
            });
        }
        public SemanticErrorsResponse FindSemanticErrors(Request request)
        {
            var clientFilename = request.FileName.ApplyPathReplacementsForClient();
            var project = _solution.ProjectContainingFile(request.FileName);
            project.UpdateFile(request.FileName, request.Buffer);
            var solutionSnapshot = new DefaultSolutionSnapshot(_solution.Projects.Select(i => i.ProjectContent));
            SyntaxTree syntaxTree;
            if(project.CompilerSettings!=null){
            	syntaxTree = new CSharpParser(project.CompilerSettings).Parse(request.Buffer, request.FileName);
            }else{
            	syntaxTree = new CSharpParser().Parse(request.Buffer, request.FileName);
            }
            var resolver = new CSharpAstResolver(solutionSnapshot.GetCompilation(project.ProjectContent), syntaxTree);
            var navigator = new SemanticErrorsNavigator();
            resolver.ApplyNavigator(navigator);
            var errors = navigator.GetErrors()
                .Where(e => ShouldIncludeIssue(e.Message))
                .Select(i => new Error
            {
                FileName = clientFilename,
                Message = i.Message,
                Line = i.StartLocation.Line,
                Column = i.EndLocation.Column,
                EndLine = i.EndLocation.Line,
                EndColumn = i.EndLocation.Column
            });

            return new SemanticErrorsResponse
            {
                Errors = errors,
            };
        }
Beispiel #3
0
 public SemanticErrorsResponse FindSemanticErrors(Request request)
 {
     var clientFilename = request.FileName.ApplyPathReplacementsForClient();
     var project = _solution.ProjectContainingFile(request.FileName);
     project.UpdateFile(request.FileName, request.Buffer);
     var solutionSnapshot = new DefaultSolutionSnapshot(_solution.Projects.Select(i => i.ProjectContent));
     var syntaxTree = new CSharpParser().Parse(request.Buffer, request.FileName);
     var resolver = new CSharpAstResolver(solutionSnapshot.GetCompilation(project.ProjectContent), syntaxTree);
     var navigator = new SemanticErrorsNavigator();
     resolver.ApplyNavigator(navigator);
     var errors = navigator.GetErrors().Select(i => new Error
     {
         FileName = clientFilename,
         Message = i.Message,
         Line = i.TextLocation.Line,
         Column = i.TextLocation.Column,
     });
     return new SemanticErrorsResponse
     {
         Errors = errors,
     };
 }
Beispiel #4
0
        public SemanticErrorsResponse FindSemanticErrors(Request request)
        {
            var clientFilename = request.FileName.ApplyPathReplacementsForClient();
            var project        = _solution.ProjectContainingFile(request.FileName);

            project.UpdateFile(request.FileName, request.Buffer);
            var        solutionSnapshot = new DefaultSolutionSnapshot(_solution.Projects.Select(i => i.ProjectContent));
            SyntaxTree syntaxTree;

            if (project.CompilerSettings != null)
            {
                syntaxTree = new CSharpParser(project.CompilerSettings).Parse(request.Buffer, request.FileName);
            }
            else
            {
                syntaxTree = new CSharpParser().Parse(request.Buffer, request.FileName);
            }
            var resolver  = new CSharpAstResolver(solutionSnapshot.GetCompilation(project.ProjectContent), syntaxTree);
            var navigator = new SemanticErrorsNavigator();

            resolver.ApplyNavigator(navigator);
            var errors = navigator.GetErrors()
                         .Where(e => ShouldIncludeIssue(e.Message))
                         .Select(i => new Error
            {
                FileName  = clientFilename,
                Message   = i.Message,
                Line      = i.StartLocation.Line,
                Column    = i.EndLocation.Column,
                EndLine   = i.EndLocation.Line,
                EndColumn = i.EndLocation.Column
            });

            return(new SemanticErrorsResponse
            {
                Errors = errors,
            });
        }