Resolve re-exports when looking for tslib helpers (#54317)

This commit is contained in:
Andrew Branch 2023-05-19 10:13:53 -07:00 committed by GitHub
parent ae33099f25
commit 2b7d517907
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 107 additions and 1 deletions

View File

@ -47033,7 +47033,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
if (requestedExternalEmitHelperNames.has(name)) continue;
requestedExternalEmitHelperNames.add(name);
const symbol = getSymbol(helpersModule.exports!, escapeLeadingUnderscores(name), SymbolFlags.Value);
const symbol = getSymbol(getExportsOfModule(helpersModule), escapeLeadingUnderscores(name), SymbolFlags.Value);
if (!symbol) {
error(location, Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0, externalHelpersModuleNameText, name);
}

View File

@ -0,0 +1,39 @@
//// [tests/cases/compiler/tslibReExportHelpers.ts] ////
//// [index.d.ts]
export declare function __decorate(...args: any[]): any;
//// [index.d.mts]
export * from "./index.js";
//// [package.json]
{
"name": "tslib",
"version": "1.0.0",
"types": "index.d.ts",
"exports": {
".": {
"types": {
"import": "./index.d.mts",
"default": "./index.d.ts"
}
}
}
}
//// [index.mts]
declare var decorator: any;
@decorator
export class Foo {}
//// [index.mjs]
import { __decorate } from "tslib";
export var Foo = /** @class */ (function () {
function Foo() {
}
Foo = __decorate([
decorator
], Foo);
return Foo;
}());

View File

@ -0,0 +1,19 @@
=== /node_modules/tslib/index.d.ts ===
export declare function __decorate(...args: any[]): any;
>__decorate : Symbol(__decorate, Decl(index.d.ts, 0, 0))
>args : Symbol(args, Decl(index.d.ts, 0, 35))
=== /node_modules/tslib/index.d.mts ===
export * from "./index.js";
=== /index.mts ===
declare var decorator: any;
>decorator : Symbol(decorator, Decl(index.mts, 0, 11))
@decorator
>decorator : Symbol(decorator, Decl(index.mts, 0, 11))
export class Foo {}
>Foo : Symbol(Foo, Decl(index.mts, 0, 27))

View File

@ -0,0 +1,19 @@
=== /node_modules/tslib/index.d.ts ===
export declare function __decorate(...args: any[]): any;
>__decorate : (...args: any[]) => any
>args : any[]
=== /node_modules/tslib/index.d.mts ===
export * from "./index.js";
=== /index.mts ===
declare var decorator: any;
>decorator : any
@decorator
>decorator : any
export class Foo {}
>Foo : Foo

View File

@ -0,0 +1,29 @@
// @module: nodenext
// @experimentalDecorators: true
// @importHelpers: true
// @Filename: /node_modules/tslib/index.d.ts
export declare function __decorate(...args: any[]): any;
// @Filename: /node_modules/tslib/index.d.mts
export * from "./index.js";
// @Filename: /node_modules/tslib/package.json
{
"name": "tslib",
"version": "1.0.0",
"types": "index.d.ts",
"exports": {
".": {
"types": {
"import": "./index.d.mts",
"default": "./index.d.ts"
}
}
}
}
// @Filename: /index.mts
declare var decorator: any;
@decorator
export class Foo {}