@@ -12,20 +12,23 @@ namespace ts {
12
12
} ;
13
13
const importedFiles : FileReference [ ] = [ ] ;
14
14
let ambientExternalModules : { ref : FileReference , depth : number } [ ] ;
15
+ let lastToken : SyntaxKind ;
16
+ let currentToken : SyntaxKind ;
15
17
let braceNesting = 0 ;
16
18
// assume that text represent an external module if it contains at least one top level import/export
17
19
// ambient modules that are found inside external modules are interpreted as module augmentations
18
20
let externalModule = false ;
19
21
20
22
function nextToken ( ) {
21
- const token = scanner . scan ( ) ;
22
- if ( token === SyntaxKind . OpenBraceToken ) {
23
+ lastToken = currentToken ;
24
+ currentToken = scanner . scan ( ) ;
25
+ if ( currentToken === SyntaxKind . OpenBraceToken ) {
23
26
braceNesting ++ ;
24
27
}
25
- else if ( token === SyntaxKind . CloseBraceToken ) {
28
+ else if ( currentToken === SyntaxKind . CloseBraceToken ) {
26
29
braceNesting -- ;
27
30
}
28
- return token ;
31
+ return currentToken ;
29
32
}
30
33
31
34
function getFileReference ( ) {
@@ -77,6 +80,9 @@ namespace ts {
77
80
* Returns true if at least one token was consumed from the stream
78
81
*/
79
82
function tryConsumeImport ( ) : boolean {
83
+ if ( lastToken === SyntaxKind . DotToken ) {
84
+ return false ;
85
+ }
80
86
let token = scanner . getToken ( ) ;
81
87
if ( token === SyntaxKind . ImportKeyword ) {
82
88
token = nextToken ( ) ;
@@ -293,6 +299,10 @@ namespace ts {
293
299
// export import i = require("mod")
294
300
// (for JavaScript files) require("mod")
295
301
302
+ // Do not look for:
303
+ // AnySymbol.import("mod")
304
+ // AnySymbol.nested.import("mod")
305
+
296
306
while ( true ) {
297
307
if ( scanner . getToken ( ) === SyntaxKind . EndOfFileToken ) {
298
308
break ;
0 commit comments