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); } } }
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); } }