コード例 #1
0
 private static void AddWarnings(ITextSnapshot snapshot, CollectingErrorSink errorSink, SimpleTagger <ErrorTag> squiggles, TaskProvider provider)
 {
     foreach (ErrorResult warning in errorSink.Warnings)
     {
         var span  = warning.Span;
         var tspan = CreateSpan(snapshot, span);
         squiggles.CreateTagSpan(tspan, new ErrorTag(PredefinedErrorTypeNames.Warning, warning.Message));
         if (provider != null)
         {
             provider.AddWarning(warning);
         }
     }
 }
コード例 #2
0
        public void ParseFile(IProjectEntry projectEntry, string filename, TextReader content, Severity indentationSeverity)
        {
            IProjectEntry         analysis;
            IExternalProjectEntry externalEntry;

            if (filename.EndsWith(".py", StringComparison.OrdinalIgnoreCase))
            {
                PythonAst           ast;
                CollectingErrorSink errorSink;
                ParsePythonCode(content, indentationSeverity, out ast, out errorSink);

                if (ast != null)
                {
                    IPythonProjectEntry pyAnalysis;
                    if (_projectFiles.TryGetValue(filename, out analysis) &&
                        (pyAnalysis = analysis as IPythonProjectEntry) != null)
                    {
                        pyAnalysis.UpdateTree(ast, new FileCookie(filename));
                        _analysisQueue.Enqueue(analysis, AnalysisPriority.Normal);
                    }
                }

                TaskProvider provider = GetTaskListProviderForProject(projectEntry);
                if (provider != null)
                {
                    foreach (ErrorResult warning in errorSink.Warnings)
                    {
                        provider.AddWarning(warning);
                    }

                    foreach (ErrorResult error in errorSink.Errors)
                    {
                        provider.AddError(error);
                    }

                    UpdateErrorList(errorSink, projectEntry.FilePath, provider);
                }
            }
            else if (_projectFiles.TryGetValue(filename, out analysis) && (externalEntry = (analysis as IExternalProjectEntry)) != null)
            {
                externalEntry.ParseContent(content, new FileCookie(filename));
                _analysisQueue.Enqueue(analysis, AnalysisPriority.Normal);
            }
        }