Merge pull request #23358 from joscha/joscha/fix-non-imports-matching

fix: do not match MySymbol.import("mod")
This commit is contained in:
Mohamed Hegazy 2018-04-16 12:37:53 -07:00 committed by GitHub
commit a8618a79e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 4 deletions

View File

@ -59,6 +59,32 @@ describe("PreProcessFile:", () => {
});
}),
it("Do not return reference path of non-imports", () => {
test("Quill.import('delta');",
/*readImportFile*/ true,
/*detectJavaScriptImports*/ false,
{
referencedFiles: <ts.FileReference[]>[],
importedFiles: <ts.FileReference[]>[],
typeReferenceDirectives: [],
ambientExternalModules: undefined,
isLibFile: false
});
}),
it("Do not return reference path of nested non-imports", () => {
test("a.b.import('c');",
/*readImportFile*/ true,
/*detectJavaScriptImports*/ false,
{
referencedFiles: <ts.FileReference[]>[],
importedFiles: <ts.FileReference[]>[],
typeReferenceDirectives: [],
ambientExternalModules: undefined,
isLibFile: false
});
}),
it("Correctly return imported files", () => {
test("import i1 = require(\"r1.ts\"); import i2 =require(\"r2.ts\"); import i3= require(\"r3.ts\"); import i4=require(\"r4.ts\"); import i5 = require (\"r5.ts\");",
/*readImportFile*/ true,

View File

@ -12,20 +12,23 @@ namespace ts {
};
const importedFiles: FileReference[] = [];
let ambientExternalModules: { ref: FileReference, depth: number }[];
let lastToken: SyntaxKind;
let currentToken: SyntaxKind;
let braceNesting = 0;
// assume that text represent an external module if it contains at least one top level import/export
// ambient modules that are found inside external modules are interpreted as module augmentations
let externalModule = false;
function nextToken() {
const token = scanner.scan();
if (token === SyntaxKind.OpenBraceToken) {
lastToken = currentToken;
currentToken = scanner.scan();
if (currentToken === SyntaxKind.OpenBraceToken) {
braceNesting++;
}
else if (token === SyntaxKind.CloseBraceToken) {
else if (currentToken === SyntaxKind.CloseBraceToken) {
braceNesting--;
}
return token;
return currentToken;
}
function getFileReference() {
@ -77,6 +80,9 @@ namespace ts {
* Returns true if at least one token was consumed from the stream
*/
function tryConsumeImport(): boolean {
if (lastToken === SyntaxKind.DotToken) {
return false;
}
let token = scanner.getToken();
if (token === SyntaxKind.ImportKeyword) {
token = nextToken();
@ -293,6 +299,10 @@ namespace ts {
// export import i = require("mod")
// (for JavaScript files) require("mod")
// Do not look for:
// AnySymbol.import("mod")
// AnySymbol.nested.import("mod")
while (true) {
if (scanner.getToken() === SyntaxKind.EndOfFileToken) {
break;