Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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);