Add missing isolatedModules error for export import (#47838)

* Add missing isolatedModules error for `export import`

* Update existing baseline
This commit is contained in:
Andrew Branch 2022-02-10 16:13:04 -08:00 committed by GitHub
parent 954d0442eb
commit 0655f32e05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 93 additions and 2 deletions

View File

@ -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: {

View File

@ -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",
@ -1421,7 +1425,7 @@
"category": "Error",
"code": 1474
},
"The types of '{0}' are incompatible between these types.": {
"category": "Error",
"code": 2200

View File

@ -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 {
//...
}

View File

@ -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];
}
//...
}

View File

@ -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";

View File

@ -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 {
//...
}