Skip to content

Commit 7d93434

Browse files
authored
Fix crash on non-dts-require (microsoft#19980)
1 parent 3d60293 commit 7d93434

5 files changed

Lines changed: 59 additions & 1 deletion

File tree

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17179,7 +17179,7 @@ namespace ts {
1717917179
if (targetDeclarationKind !== SyntaxKind.Unknown) {
1718017180
const decl = getDeclarationOfKind(resolvedRequire, targetDeclarationKind);
1718117181
// function/variable declaration should be ambient
17182-
return !!(decl.flags & NodeFlags.Ambient);
17182+
return !!decl && !!(decl.flags & NodeFlags.Ambient);
1718317183
}
1718417184
return false;
1718517185
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//// [index.js]
2+
(function(require, module, exports){
3+
const mod = require("./mod");
4+
mod.foo;
5+
})(null, null, null);
6+
7+
//// [index.js]
8+
(function (require, module, exports) {
9+
var mod = require("./mod");
10+
mod.foo;
11+
})(null, null, null);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
=== tests/cases/compiler/index.js ===
2+
(function(require, module, exports){
3+
>require : Symbol(require, Decl(index.js, 0, 10))
4+
>module : Symbol(module, Decl(index.js, 0, 18))
5+
>exports : Symbol(exports, Decl(index.js, 0, 26))
6+
7+
const mod = require("./mod");
8+
>mod : Symbol(mod, Decl(index.js, 1, 9))
9+
>require : Symbol(require, Decl(index.js, 0, 10))
10+
11+
mod.foo;
12+
>mod : Symbol(mod, Decl(index.js, 1, 9))
13+
14+
})(null, null, null);
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
=== tests/cases/compiler/index.js ===
2+
(function(require, module, exports){
3+
>(function(require, module, exports){ const mod = require("./mod"); mod.foo;})(null, null, null) : void
4+
>(function(require, module, exports){ const mod = require("./mod"); mod.foo;}) : (require: any, module: any, exports: any) => void
5+
>function(require, module, exports){ const mod = require("./mod"); mod.foo;} : (require: any, module: any, exports: any) => void
6+
>require : any
7+
>module : any
8+
>exports : any
9+
10+
const mod = require("./mod");
11+
>mod : any
12+
>require("./mod") : any
13+
>require : any
14+
>"./mod" : "./mod"
15+
16+
mod.foo;
17+
>mod.foo : any
18+
>mod : any
19+
>foo : any
20+
21+
})(null, null, null);
22+
>null : null
23+
>null : null
24+
>null : null
25+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// @allowJs: true
2+
// @checkJs: true
3+
// @outDir: ./built
4+
// @filename: index.js
5+
(function(require, module, exports){
6+
const mod = require("./mod");
7+
mod.foo;
8+
})(null, null, null);

0 commit comments

Comments
 (0)