Added constainsWildcardImport flag as output of parser.

This commit is contained in:
Eric Traut 2019-10-19 12:02:22 -07:00
parent e8925a2c26
commit 800e060403
2 changed files with 14 additions and 2 deletions

View File

@ -327,6 +327,13 @@ export class SourceFile {
this._parseTreeNeedsCleaning = true;
this._isTypeAnalysisFinalized = false;
this._isTypeAnalysisPassNeeded = true;
// If the file continas a wildcard import, we need to rebind
// also because the dependent import may have changed.
if (this._parseResults && this._parseResults.containsWildcardImport) {
this._isBindingNeeded = true;
this._moduleSymbolTable = undefined;
}
}
setClientVersion(version: number | null, contents: string): void {
@ -481,7 +488,8 @@ export class SourceFile {
typeIgnoreLines: {},
predominantEndOfLineSequence: '\n',
predominantTabSequence: ' '
}
},
containsWildcardImport: false
};
this._imports = undefined;
this._builtinsImport = undefined;

View File

@ -62,6 +62,7 @@ export interface ParseResults {
importedModules: ModuleImport[];
futureImports: StringMap<boolean>;
tokenizerOutput: TokenizerOutput;
containsWildcardImport: boolean;
}
export interface ParseExpressionTextResults {
@ -92,6 +93,7 @@ export class Parser {
private _isParsingTypeAnnotation = false;
private _futureImportMap = new StringMap<boolean>();
private _importedModules: ModuleImport[] = [];
private _containsWildcardImport = false;
parseSourceFile(fileContents: string, parseOptions: ParseOptions,
diagSink: DiagnosticSink, cancelToken?: CancelToken): ParseResults {
@ -132,7 +134,8 @@ export class Parser {
parseTree: moduleNode,
importedModules: this._importedModules,
futureImports: this._futureImportMap,
tokenizerOutput: this._tokenizerOutput!
tokenizerOutput: this._tokenizerOutput!,
containsWildcardImport: this._containsWildcardImport
};
}
@ -979,6 +982,7 @@ export class Parser {
if (this._consumeTokenIfOperator(OperatorType.Multiply)) {
extendRange(importFromNode, possibleStarToken);
importFromNode.isWildcardImport = true;
this._containsWildcardImport = true;
} else {
const inParen = this._consumeTokenIfType(TokenType.OpenParenthesis);