Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

ArgumentNullException in GetConstantValueAsString crashes process #353

@jakebailey

Description

@jakebailey

Having exactly this in a file causes the language server to crash until VSC gives up trying to restart it:

from typing import TypeVar

def cla

_ = TypeVar()

Found while making minimal examples for generics.

Assertion Failed
System.ArgumentNullException: Value cannot be null.
Parameter name: source
   at System.Linq.Enumerable.Select[TSource,TResult](IEnumerable`1 source, Func`2 selector)
   at Microsoft.PythonTools.Analysis.AnalysisValueSetExtensions.GetConstantValueAsString(IAnalysisSet values) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\AnalysisValueSetExtensions.cs:line 246
   at Microsoft.PythonTools.Analysis.Values.TypingModuleInfo.<>c__DisplayClass6_0.<NewType_Call>b__0(Node n) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Values\TypingModuleInfo.cs:line 56
   at Microsoft.PythonTools.Analysis.Analyzer.InterpreterScope.GetOrMakeNodeValue(Node node, NodeValueKind kind, Func`2 maker) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Analyzer\InterpreterScope.cs:line 381
   at Microsoft.PythonTools.Analysis.Values.TypingModuleInfo.NewType_Call(Node node, AnalysisUnit unit, IAnalysisSet[] args, NameExpression[] keywordArgNames) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Values\TypingModuleInfo.cs:line 55
   at Microsoft.PythonTools.Analysis.Values.SpecializedCallable.Call(Node node, AnalysisUnit unit, IAnalysisSet[] args, NameExpression[] keywordArgNames) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Values\SpecializedCallable.cs:line 49
   at Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.EvaluateCall(ExpressionEvaluator ee, Node node) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Analyzer\ExpressionEvaluator.cs:line 378
   at Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.EvaluateWorker(Node node) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Analyzer\ExpressionEvaluator.cs:line 211
   at Microsoft.PythonTools.Analysis.Analyzer.ExpressionEvaluator.Evaluate(Expression node) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Analyzer\ExpressionEvaluator.cs:line 55
   at Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(AssignmentStatement node) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Analyzer\DDG.cs:line 137
   at Microsoft.PythonTools.Parsing.Ast.AssignmentStatement.Walk(PythonWalker walker) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Parsing\Ast\AssignmentStatement.cs:line 41
   at Microsoft.PythonTools.Analysis.Analyzer.DDG.Walk(SuiteStatement node) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Analyzer\DDG.cs:line 665
   at Microsoft.PythonTools.Parsing.Ast.SuiteStatement.Walk(PythonWalker walker) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Parsing\Ast\SuiteStatement.cs:line 34
   at Microsoft.PythonTools.Parsing.Ast.PythonAst.Walk(PythonWalker walker) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Parsing\Ast\PythonAst.cs:line 92
   at Microsoft.PythonTools.Analysis.AnalysisUnit.AnalyzeWorker(DDG ddg, CancellationToken cancel) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\AnalysisUnit.cs:line 154
   at Microsoft.PythonTools.Analysis.AnalysisUnit.Analyze(DDG ddg, CancellationToken cancel) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\AnalysisUnit.cs:line 139
   at Microsoft.PythonTools.Analysis.Analyzer.DDG.Analyze(Deque`1 queue, CancellationToken cancel, Action`1 reportQueueSize, Int32 reportQueueInterval) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Analyzer\DDG.cs:line 75
   at Microsoft.PythonTools.Analysis.PythonAnalyzer.AnalyzeQueuedEntries(CancellationToken cancel) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\PythonAnalyzer.cs:line 907
   at Microsoft.PythonTools.Intellisense.AnalysisQueue.GroupAnalysis.Analyze(CancellationToken cancel) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Intellisense\AnalysisQueue.cs:line 229
   at Microsoft.PythonTools.Intellisense.AnalysisQueue.HandleAnalyzable(IAnalyzable item, AnalysisPriority priority, CancellationToken cancellationToken) in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Intellisense\AnalysisQueue.cs:line 152
   at Microsoft.PythonTools.Intellisense.AnalysisQueue.ConsumerLoop() in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Intellisense\AnalysisQueue.cs:line 64

   at Microsoft.Python.LanguageServer.Implementation.Server.Analysis_UnhandledException(Object sender, UnhandledExceptionEventArgs e) in C:\Users\jabaile\python-language-server\src\LanguageServer\Impl\Implementation\Server.cs:line 116
   at Microsoft.PythonTools.Intellisense.AnalysisQueue.ConsumerLoop() in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Intellisense\AnalysisQueue.cs:line 64
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
   at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(IAsyncStateMachineBox box, Boolean allowInlining)
   at System.Threading.Tasks.Task.RunContinuations(Object continuationObject)
   at System.Threading.Tasks.Task`1.TrySetResult(TResult result)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetExistingTaskResult(TResult result)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetResult(TResult result)
   at Microsoft.PythonTools.Intellisense.AnalysisQueue.ConsumeAsync() in C:\Users\jabaile\python-language-server\src\Analysis\Engine\Impl\Intellisense\AnalysisQueue.cs:line 89
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AsyncStateMachineBox`1.MoveNext()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions