From abc2a350e63062b1c8a2acf1286d180c4b4595a2 Mon Sep 17 00:00:00 2001 From: magic-akari Date: Wed, 10 Aug 2022 07:31:02 +0800 Subject: [PATCH] Fix System module `export import =` (#49788) * Add more SystemJS test case * Fix System module `export import =` * Update test case --- src/compiler/transformers/module/system.ts | 14 ++++++ tests/baselines/reference/systemModule18.js | 43 +++++++++++++++++++ .../reference/systemModule18.symbols | 14 ++++++ .../baselines/reference/systemModule18.types | 14 ++++++ tests/cases/compiler/systemModule18.ts | 9 ++++ 5 files changed, 94 insertions(+) create mode 100644 tests/baselines/reference/systemModule18.js create mode 100644 tests/baselines/reference/systemModule18.symbols create mode 100644 tests/baselines/reference/systemModule18.types create mode 100644 tests/cases/compiler/systemModule18.ts diff --git a/src/compiler/transformers/module/system.ts b/src/compiler/transformers/module/system.ts index 869c1c18d72..d541c3d3ad2 100644 --- a/src/compiler/transformers/module/system.ts +++ b/src/compiler/transformers/module/system.ts @@ -466,6 +466,20 @@ namespace ts { factory.createAssignment(importVariableName, parameterName) ) ); + if (hasSyntacticModifier(entry, ModifierFlags.Export)) { + statements.push( + factory.createExpressionStatement( + factory.createCallExpression( + exportFunction, + /*typeArguments*/ undefined, + [ + factory.createStringLiteral(idText(importVariableName)), + parameterName, + ] + ) + ) + ); + } break; case SyntaxKind.ExportDeclaration: diff --git a/tests/baselines/reference/systemModule18.js b/tests/baselines/reference/systemModule18.js new file mode 100644 index 00000000000..66f975a90a7 --- /dev/null +++ b/tests/baselines/reference/systemModule18.js @@ -0,0 +1,43 @@ +//// [tests/cases/compiler/systemModule18.ts] //// + +//// [react.ts] +export function createElement() {} +export function lazy() {} +export function useState() {} + +//// [index.ts] +export import React = require("./react.js"); + + +//// [react.js] +System.register([], function (exports_1, context_1) { + "use strict"; + var __moduleName = context_1 && context_1.id; + function createElement() { } + exports_1("createElement", createElement); + function lazy() { } + exports_1("lazy", lazy); + function useState() { } + exports_1("useState", useState); + return { + setters: [], + execute: function () { + } + }; +}); +//// [index.js] +System.register(["./react.js"], function (exports_1, context_1) { + "use strict"; + var React; + var __moduleName = context_1 && context_1.id; + return { + setters: [ + function (React_1) { + React = React_1; + exports_1("React", React_1); + } + ], + execute: function () { + } + }; +}); diff --git a/tests/baselines/reference/systemModule18.symbols b/tests/baselines/reference/systemModule18.symbols new file mode 100644 index 00000000000..c7ff2277878 --- /dev/null +++ b/tests/baselines/reference/systemModule18.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/index.ts === +export import React = require("./react.js"); +>React : Symbol(React, Decl(index.ts, 0, 0)) + +=== tests/cases/compiler/react.ts === +export function createElement() {} +>createElement : Symbol(createElement, Decl(react.ts, 0, 0)) + +export function lazy() {} +>lazy : Symbol(lazy, Decl(react.ts, 0, 34)) + +export function useState() {} +>useState : Symbol(useState, Decl(react.ts, 1, 25)) + diff --git a/tests/baselines/reference/systemModule18.types b/tests/baselines/reference/systemModule18.types new file mode 100644 index 00000000000..7da83c25e44 --- /dev/null +++ b/tests/baselines/reference/systemModule18.types @@ -0,0 +1,14 @@ +=== tests/cases/compiler/index.ts === +export import React = require("./react.js"); +>React : typeof React + +=== tests/cases/compiler/react.ts === +export function createElement() {} +>createElement : () => void + +export function lazy() {} +>lazy : () => void + +export function useState() {} +>useState : () => void + diff --git a/tests/cases/compiler/systemModule18.ts b/tests/cases/compiler/systemModule18.ts new file mode 100644 index 00000000000..ec7206d7067 --- /dev/null +++ b/tests/cases/compiler/systemModule18.ts @@ -0,0 +1,9 @@ +// @module: system + +// @filename: react.ts +export function createElement() {} +export function lazy() {} +export function useState() {} + +// @filename: index.ts +export import React = require("./react.js");