Skip to content

Commit

Permalink
Add missing isolatedModules error for export import (#47838)
Browse files Browse the repository at this point in the history
* Add missing isolatedModules error for `export import`

* Update existing baseline
  • Loading branch information
andrewbranch authored Feb 11, 2022
1 parent 954d044 commit 0655f32
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/compiler/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39940,6 +39940,9 @@ namespace ts {
name
);
}
if (isType && node.kind === SyntaxKind.ImportEqualsDeclaration && hasEffectiveModifier(node, ModifierFlags.Export)) {
error(node, Diagnostics.Cannot_use_export_import_on_a_type_or_type_only_namespace_when_the_isolatedModules_flag_is_provided);
}
break;
}
case SyntaxKind.ExportSpecifier: {
Expand Down
6 changes: 5 additions & 1 deletion src/compiler/diagnosticMessages.json
Original file line number Diff line number Diff line change
Expand Up @@ -867,6 +867,10 @@
"category": "Error",
"code": 1268
},
"Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided.": {
"category": "Error",
"code": 1269
},

"'with' statements are not allowed in an async function block.": {
"category": "Error",
Expand Down Expand Up @@ -1421,7 +1425,7 @@
"category": "Error",
"code": 1474
},

"The types of '{0}' are incompatible between these types.": {
"category": "Error",
"code": 2200
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
tests/cases/compiler/factory.ts(3,1): error TS1269: Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided.


==== tests/cases/compiler/jsx.ts (0 errors) ====
export namespace JSXInternal {
export type HTMLAttributes = string
export type ComponentChildren = string
}

==== tests/cases/compiler/factory.ts (1 errors) ====
import { JSXInternal } from "./jsx"

export import JSX = JSXInternal;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS1269: Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided.

export function createElement<ElementType extends HTMLElement>(
tagName: string,
attributes: JSX.HTMLAttributes,
...children: JSX.ComponentChildren[]
): any {
//...
}


Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//// [tests/cases/compiler/isolatedModulesExportImportUninstantiatedNamespace.ts] ////

//// [jsx.ts]
export namespace JSXInternal {
export type HTMLAttributes = string
export type ComponentChildren = string
}

//// [factory.ts]
import { JSXInternal } from "./jsx"

export import JSX = JSXInternal;

export function createElement<ElementType extends HTMLElement>(
tagName: string,
attributes: JSX.HTMLAttributes,
...children: JSX.ComponentChildren[]
): any {
//...
}



//// [jsx.js]
export {};
//// [factory.js]
export function createElement(tagName, attributes) {
var children = [];
for (var _i = 2; _i < arguments.length; _i++) {
children[_i - 2] = arguments[_i];
}
//...
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
/user.ts(2,10): error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'.
/user.ts(3,1): error TS1269: Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided.
/user.ts(17,10): error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'.
/user.ts(25,10): error TS1448: 'CC' resolves to a type-only declaration and must be re-exported using a type-only re-export when 'isolatedModules' is enabled.


==== /user.ts (3 errors) ====
==== /user.ts (4 errors) ====
// Error, can't re-export something that's only a type.
export { T } from "./exportT";
~
!!! error TS1205: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'.
export import T2 = require("./exportEqualsT");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS1269: Cannot use 'export import' on a type or type-only namespace when the '--isolatedModules' flag is provided.

// OK, has a value side
export { C } from "./exportValue";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// @module: esnext
// @isolatedModules: true
// @noTypesAndSymbols: true

// @Filename: jsx.ts
export namespace JSXInternal {
export type HTMLAttributes = string
export type ComponentChildren = string
}

// @Filename: factory.ts
import { JSXInternal } from "./jsx"

export import JSX = JSXInternal;

export function createElement<ElementType extends HTMLElement>(
tagName: string,
attributes: JSX.HTMLAttributes,
...children: JSX.ComponentChildren[]
): any {
//...
}

0 comments on commit 0655f32

Please sign in to comment.