Fixed a few crashing bugs where language services were calling into evaluator for unreachable code.

This commit is contained in:
Eric Traut 2019-11-16 23:48:32 -08:00
parent 69980ab8dd
commit 16df910504
3 changed files with 14 additions and 0 deletions

View File

@ -391,6 +391,10 @@ export class CompletionProvider {
private _getMemberAccessCompletions(leftExprNode: ExpressionNode,
priorWord: string): CompletionList | undefined {
if (AnalyzerNodeInfo.isCodeUnreachable(leftExprNode)) {
return undefined;
}
const leftType = this._evaluator.getType(leftExprNode);
const symbolTable = new Map<string, Symbol>();

View File

@ -9,6 +9,7 @@
* position within a smart editor.
*/
import { isCodeUnreachable } from '../analyzer/analyzerNodeInfo';
import { Declaration, DeclarationType } from '../analyzer/declaration';
import * as ParseTreeUtils from '../analyzer/parseTreeUtils';
import { TypeEvaluator } from '../analyzer/typeEvaluator';
@ -137,6 +138,10 @@ export class HoverProvider {
}
private static _getTypeFromNode(node: NameNode, evaluator: TypeEvaluator): Type | undefined {
if (isCodeUnreachable(node)) {
return undefined;
}
return evaluator.getType(node);
}

View File

@ -10,6 +10,7 @@
*/
import { ImportLookup } from '../analyzer/analyzerFileInfo';
import { isCodeUnreachable } from '../analyzer/analyzerNodeInfo';
import { extractParameterDocumentation } from '../analyzer/docStringUtils';
import * as ParseTreeUtils from '../analyzer/parseTreeUtils';
import { TypeEvaluator } from '../analyzer/typeEvaluator';
@ -82,6 +83,10 @@ export class SignatureHelpProvider {
return undefined;
}
if (isCodeUnreachable(callNode.leftExpression)) {
return undefined;
}
const callType = evaluator.getType(callNode.leftExpression);
if (callType === undefined) {
return undefined;