Skip to content

Commit 06b24ce

Browse files
committed
Merge pull request microsoft#6494 from Microsoft/addUndefinedCheckToCollectLinkedAliases
Fix for microsoft#6428
2 parents efc573f + 319faab commit 06b24ce

7 files changed

Lines changed: 66 additions & 1 deletion

src/compiler/checker.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2365,7 +2365,9 @@ namespace ts {
23652365
const firstIdentifier = getFirstIdentifier(internalModuleReference);
23662366
const importSymbol = resolveName(declaration, firstIdentifier.text, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace,
23672367
Diagnostics.Cannot_find_name_0, firstIdentifier);
2368-
buildVisibleNodeList(importSymbol.declarations);
2368+
if (importSymbol) {
2369+
buildVisibleNodeList(importSymbol.declarations);
2370+
}
23692371
}
23702372
});
23712373
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
tests/cases/compiler/declarationEmit_UnknownImport.ts(2,1): error TS2304: Cannot find name 'SomeNonExistingName'.
2+
tests/cases/compiler/declarationEmit_UnknownImport.ts(2,14): error TS2503: Cannot find namespace 'SomeNonExistingName'.
3+
tests/cases/compiler/declarationEmit_UnknownImport.ts(2,14): error TS4000: Import declaration 'Foo' is using private name 'SomeNonExistingName'.
4+
5+
6+
==== tests/cases/compiler/declarationEmit_UnknownImport.ts (3 errors) ====
7+
8+
import Foo = SomeNonExistingName
9+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10+
!!! error TS2304: Cannot find name 'SomeNonExistingName'.
11+
~~~~~~~~~~~~~~~~~~~
12+
!!! error TS2503: Cannot find namespace 'SomeNonExistingName'.
13+
~~~~~~~~~~~~~~~~~~~
14+
!!! error TS4000: Import declaration 'Foo' is using private name 'SomeNonExistingName'.
15+
export {Foo}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//// [declarationEmit_UnknownImport.ts]
2+
3+
import Foo = SomeNonExistingName
4+
export {Foo}
5+
6+
//// [declarationEmit_UnknownImport.js]
7+
"use strict";
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
tests/cases/compiler/declarationEmit_UnknownImport2.ts(2,1): error TS2304: Cannot find name 'From'.
2+
tests/cases/compiler/declarationEmit_UnknownImport2.ts(2,12): error TS1005: '=' expected.
3+
tests/cases/compiler/declarationEmit_UnknownImport2.ts(2,12): error TS2503: Cannot find namespace 'From'.
4+
tests/cases/compiler/declarationEmit_UnknownImport2.ts(2,12): error TS4000: Import declaration 'Foo' is using private name 'From'.
5+
tests/cases/compiler/declarationEmit_UnknownImport2.ts(2,17): error TS1005: ';' expected.
6+
7+
8+
==== tests/cases/compiler/declarationEmit_UnknownImport2.ts (5 errors) ====
9+
10+
import Foo From './Foo'; // Syntax error
11+
~~~~~~~~~~~~~~~
12+
!!! error TS2304: Cannot find name 'From'.
13+
~~~~
14+
!!! error TS1005: '=' expected.
15+
~~~~
16+
!!! error TS2503: Cannot find namespace 'From'.
17+
~~~~
18+
!!! error TS4000: Import declaration 'Foo' is using private name 'From'.
19+
~~~~~~~
20+
!!! error TS1005: ';' expected.
21+
export default Foo
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [declarationEmit_UnknownImport2.ts]
2+
3+
import Foo From './Foo'; // Syntax error
4+
export default Foo
5+
6+
//// [declarationEmit_UnknownImport2.js]
7+
"use strict";
8+
'./Foo'; // Syntax error
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// @target: es5
2+
// @module: commonjs
3+
// @declaration: true
4+
5+
import Foo = SomeNonExistingName
6+
export {Foo}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// @target: es5
2+
// @module: commonjs
3+
// @declaration: true
4+
5+
import Foo From './Foo'; // Syntax error
6+
export default Foo

0 commit comments

Comments
 (0)