diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e5756b54b6ac9..6d5a3d3a2cd7f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -34665,8 +34665,8 @@ namespace ts { } } - if (node.kind === SyntaxKind.BindingElement) { - if (node.parent.kind === SyntaxKind.ObjectBindingPattern && languageVersion < ScriptTarget.ESNext) { + if (isBindingElement(node)) { + if (isObjectBindingPattern(node.parent) && node.dotDotDotToken && languageVersion < ScriptTarget.ES2018) { checkExternalEmitHelpers(node, ExternalEmitHelpers.Rest); } // check computed properties inside property names of binding elements diff --git a/tests/baselines/reference/tslibInJs.errors.txt b/tests/baselines/reference/tslibInJs.errors.txt new file mode 100644 index 0000000000000..8b1d596b6c32e --- /dev/null +++ b/tests/baselines/reference/tslibInJs.errors.txt @@ -0,0 +1,8 @@ +tests/cases/compiler/main.js(2,25): error TS2307: Cannot find module 'bar' or its corresponding type declarations. + + +==== tests/cases/compiler/main.js (1 errors) ==== + "use strict"; + const { foo } = require("bar"); + ~~~~~ +!!! error TS2307: Cannot find module 'bar' or its corresponding type declarations. \ No newline at end of file diff --git a/tests/baselines/reference/tslibInJs.symbols b/tests/baselines/reference/tslibInJs.symbols new file mode 100644 index 0000000000000..0ddae09e238d0 --- /dev/null +++ b/tests/baselines/reference/tslibInJs.symbols @@ -0,0 +1,6 @@ +=== tests/cases/compiler/main.js === +"use strict"; +const { foo } = require("bar"); +>foo : Symbol(foo, Decl(main.js, 1, 7)) +>require : Symbol(require) + diff --git a/tests/baselines/reference/tslibInJs.types b/tests/baselines/reference/tslibInJs.types new file mode 100644 index 0000000000000..7c7354cd41293 --- /dev/null +++ b/tests/baselines/reference/tslibInJs.types @@ -0,0 +1,10 @@ +=== tests/cases/compiler/main.js === +"use strict"; +>"use strict" : "use strict" + +const { foo } = require("bar"); +>foo : any +>require("bar") : any +>require : any +>"bar" : "bar" + diff --git a/tests/cases/compiler/tslibInJs.ts b/tests/cases/compiler/tslibInJs.ts new file mode 100644 index 0000000000000..b91de37a899a7 --- /dev/null +++ b/tests/cases/compiler/tslibInJs.ts @@ -0,0 +1,13 @@ +// @checkJs: true +// @allowJs: true +// @moduleResolution: node +// @target: es2018 +// @module: commonjs +// @importHelpers: true +// @lib: es2018 +// @outDir: out +// @noEmit: true + +// @fileName: main.js +"use strict"; +const { foo } = require("bar"); \ No newline at end of file