public void NotifyAnalysisComplete(int version, ModuleWalker walker, bool isFinalPass) { lock (AnalysisLock) { if (version < Analysis.Version) { return; } Analysis = CreateAnalysis(version, walker, isFinalPass); GlobalScope = Analysis.GlobalScope; // Derived classes can override OnAnalysisComplete if they want // to perform additional actions on the completed analysis such // as declare additional variables, etc. OnAnalysisComplete(); ContentState = State.Analyzed; if (ModuleType != ModuleType.User) { _buffer.Reset(_buffer.Version, string.Empty); } } // Do not report issues with libraries or stubs if (ModuleType == ModuleType.User) { _diagnosticsService?.Replace(Uri, Analysis.Diagnostics, DiagnosticSource.Analysis); } NewAnalysis?.Invoke(this, EventArgs.Empty); }
public ModuleWalker Analyze(PythonAst ast) { var walker = new ModuleWalker(Services, this, ast, CancellationToken.None); ast.Walk(walker); walker.Complete(); return(walker); }
public ModuleWalker Analyze(PythonAst ast) { var eval = new ExpressionEval(Services, this, ast); var walker = new ModuleWalker(eval, SimpleImportedVariableHandler.Instance); ast.Walk(walker); walker.Complete(); return(walker); }
private IDocumentAnalysis CreateAnalysis(int version, ModuleWalker walker, bool isFinalPass) => ModuleType == ModuleType.Library && isFinalPass ? new LibraryAnalysis(this, version, walker.Eval.Services, walker.GlobalScope, walker.StarImportMemberNames) : (IDocumentAnalysis) new DocumentAnalysis(this, version, walker.GlobalScope, walker.Eval, walker.StarImportMemberNames);