diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 76e81a959790b..b6ed338966f15 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -46569,7 +46569,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { languageVersion >= ScriptTarget.ES5 && name.escapedText === "Object" && host.getEmitModuleFormatOfFile(getSourceFileOfNode(name)) < ModuleKind.ES2015 ) { - error(name, Diagnostics.Class_name_cannot_be_Object_when_targeting_ES5_with_module_0, ModuleKind[moduleKind]); // https://github.com/Microsoft/TypeScript/issues/17494 + error(name, Diagnostics.Class_name_cannot_be_Object_when_targeting_ES5_and_above_with_module_0, ModuleKind[moduleKind]); // https://github.com/Microsoft/TypeScript/issues/17494 } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 91ecc9f7f0b5e..7e8da14298eb3 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -3419,7 +3419,7 @@ "category": "Error", "code": 2724 }, - "Class name cannot be 'Object' when targeting ES5 with module {0}.": { + "Class name cannot be 'Object' when targeting ES5 and above with module {0}.": { "category": "Error", "code": 2725 }, diff --git a/tests/baselines/reference/checkForObjectTooStrict.errors.txt b/tests/baselines/reference/checkForObjectTooStrict.errors.txt index 0a6236689f01b..a4ab6e628c111 100644 --- a/tests/baselines/reference/checkForObjectTooStrict.errors.txt +++ b/tests/baselines/reference/checkForObjectTooStrict.errors.txt @@ -1,4 +1,4 @@ -checkForObjectTooStrict.ts(3,18): error TS2725: Class name cannot be 'Object' when targeting ES5 with module CommonJS. +checkForObjectTooStrict.ts(3,18): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module CommonJS. ==== checkForObjectTooStrict.ts (1 errors) ==== @@ -6,7 +6,7 @@ checkForObjectTooStrict.ts(3,18): error TS2725: Class name cannot be 'Object' wh export class Object { ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module CommonJS. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module CommonJS. } diff --git a/tests/baselines/reference/exportClassNameWithObjectAMD.errors.txt b/tests/baselines/reference/exportClassNameWithObjectAMD.errors.txt index 2859e1b74a9f4..465856a9af92f 100644 --- a/tests/baselines/reference/exportClassNameWithObjectAMD.errors.txt +++ b/tests/baselines/reference/exportClassNameWithObjectAMD.errors.txt @@ -1,8 +1,8 @@ -exportClassNameWithObjectAMD.ts(1,14): error TS2725: Class name cannot be 'Object' when targeting ES5 with module AMD. +exportClassNameWithObjectAMD.ts(1,14): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module AMD. ==== exportClassNameWithObjectAMD.ts (1 errors) ==== export class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module AMD. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module AMD. \ No newline at end of file diff --git a/tests/baselines/reference/exportClassNameWithObjectCommonJS.errors.txt b/tests/baselines/reference/exportClassNameWithObjectCommonJS.errors.txt index 6ca5af1702b38..99ab5272a9667 100644 --- a/tests/baselines/reference/exportClassNameWithObjectCommonJS.errors.txt +++ b/tests/baselines/reference/exportClassNameWithObjectCommonJS.errors.txt @@ -1,8 +1,8 @@ -exportClassNameWithObjectCommonJS.ts(1,14): error TS2725: Class name cannot be 'Object' when targeting ES5 with module CommonJS. +exportClassNameWithObjectCommonJS.ts(1,14): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module CommonJS. ==== exportClassNameWithObjectCommonJS.ts (1 errors) ==== export class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module CommonJS. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module CommonJS. \ No newline at end of file diff --git a/tests/baselines/reference/exportClassNameWithObjectSystem.errors.txt b/tests/baselines/reference/exportClassNameWithObjectSystem.errors.txt index f65cd27150cf5..e7d609e955497 100644 --- a/tests/baselines/reference/exportClassNameWithObjectSystem.errors.txt +++ b/tests/baselines/reference/exportClassNameWithObjectSystem.errors.txt @@ -1,8 +1,8 @@ -exportClassNameWithObjectSystem.ts(1,14): error TS2725: Class name cannot be 'Object' when targeting ES5 with module System. +exportClassNameWithObjectSystem.ts(1,14): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module System. ==== exportClassNameWithObjectSystem.ts (1 errors) ==== export class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module System. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module System. \ No newline at end of file diff --git a/tests/baselines/reference/exportClassNameWithObjectUMD.errors.txt b/tests/baselines/reference/exportClassNameWithObjectUMD.errors.txt index 0c41c8324d6ef..eaf05918ac298 100644 --- a/tests/baselines/reference/exportClassNameWithObjectUMD.errors.txt +++ b/tests/baselines/reference/exportClassNameWithObjectUMD.errors.txt @@ -1,8 +1,8 @@ -exportClassNameWithObjectUMD.ts(1,14): error TS2725: Class name cannot be 'Object' when targeting ES5 with module UMD. +exportClassNameWithObjectUMD.ts(1,14): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module UMD. ==== exportClassNameWithObjectUMD.ts (1 errors) ==== export class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module UMD. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module UMD. \ No newline at end of file diff --git a/tests/baselines/reference/exportDefaultClassNameWithObject.errors.txt b/tests/baselines/reference/exportDefaultClassNameWithObject.errors.txt index e2d9a13214174..e16339e78c171 100644 --- a/tests/baselines/reference/exportDefaultClassNameWithObject.errors.txt +++ b/tests/baselines/reference/exportDefaultClassNameWithObject.errors.txt @@ -1,8 +1,8 @@ -exportDefaultClassNameWithObject.ts(1,22): error TS2725: Class name cannot be 'Object' when targeting ES5 with module CommonJS. +exportDefaultClassNameWithObject.ts(1,22): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module CommonJS. ==== exportDefaultClassNameWithObject.ts (1 errors) ==== export default class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module CommonJS. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module CommonJS. \ No newline at end of file diff --git a/tests/baselines/reference/instanceofOperator.errors.txt b/tests/baselines/reference/instanceofOperator.errors.txt index 032389a10bee2..76e501db77aef 100644 --- a/tests/baselines/reference/instanceofOperator.errors.txt +++ b/tests/baselines/reference/instanceofOperator.errors.txt @@ -1,4 +1,4 @@ -instanceofOperator.ts(7,11): error TS2725: Class name cannot be 'Object' when targeting ES5 with module CommonJS. +instanceofOperator.ts(7,11): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module CommonJS. instanceofOperator.ts(12,5): error TS2358: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter. instanceofOperator.ts(15,20): error TS2359: The right-hand side of an 'instanceof' expression must be either of type 'any', a class, function, or other type assignable to the 'Function' interface type, or an object type with a 'Symbol.hasInstance' method. instanceofOperator.ts(16,23): error TS2359: The right-hand side of an 'instanceof' expression must be either of type 'any', a class, function, or other type assignable to the 'Function' interface type, or an object type with a 'Symbol.hasInstance' method. @@ -15,7 +15,7 @@ instanceofOperator.ts(21,5): error TS2358: The left-hand side of an 'instanceof' module test { class Object { } ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module CommonJS. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module CommonJS. var obj: Object; diff --git a/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node16).errors.txt b/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node16).errors.txt index 5455c109354a4..e58f5765801f1 100644 --- a/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node16).errors.txt +++ b/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node16).errors.txt @@ -1,6 +1,6 @@ subfolder/index.js(2,10): error TS2441: Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of a module. subfolder/index.js(3,7): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. -subfolder/index.js(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node16. +subfolder/index.js(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node16. subfolder/index.js(5,14): error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. @@ -14,7 +14,7 @@ subfolder/index.js(5,14): error TS1216: Identifier expected. '__esModule' is res !!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node16. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node16. export const __esModule = false; ~~~~~~~~~~ !!! error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. diff --git a/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node18).errors.txt b/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node18).errors.txt index e54f9b0f94ca4..a39cddb168d00 100644 --- a/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node18).errors.txt +++ b/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node18).errors.txt @@ -1,6 +1,6 @@ subfolder/index.js(2,10): error TS2441: Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of a module. subfolder/index.js(3,7): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. -subfolder/index.js(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node18. +subfolder/index.js(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node18. subfolder/index.js(5,14): error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. @@ -14,7 +14,7 @@ subfolder/index.js(5,14): error TS1216: Identifier expected. '__esModule' is res !!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node18. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node18. export const __esModule = false; ~~~~~~~~~~ !!! error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. diff --git a/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node20).errors.txt b/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node20).errors.txt index 1a2f05e108cc8..99887ee4bc674 100644 --- a/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node20).errors.txt +++ b/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=node20).errors.txt @@ -1,6 +1,6 @@ subfolder/index.js(2,10): error TS2441: Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of a module. subfolder/index.js(3,7): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. -subfolder/index.js(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node20. +subfolder/index.js(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node20. subfolder/index.js(5,14): error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. @@ -14,7 +14,7 @@ subfolder/index.js(5,14): error TS1216: Identifier expected. '__esModule' is res !!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node20. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node20. export const __esModule = false; ~~~~~~~~~~ !!! error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. diff --git a/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=nodenext).errors.txt b/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=nodenext).errors.txt index 609137dcd8c30..fab5c6d6cc292 100644 --- a/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=nodenext).errors.txt +++ b/tests/baselines/reference/nodeModulesAllowJsGeneratedNameCollisions(module=nodenext).errors.txt @@ -1,6 +1,6 @@ subfolder/index.js(2,10): error TS2441: Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of a module. subfolder/index.js(3,7): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. -subfolder/index.js(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 with module NodeNext. +subfolder/index.js(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module NodeNext. subfolder/index.js(5,14): error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. @@ -14,7 +14,7 @@ subfolder/index.js(5,14): error TS1216: Identifier expected. '__esModule' is res !!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module NodeNext. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module NodeNext. export const __esModule = false; ~~~~~~~~~~ !!! error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. diff --git a/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node16).errors.txt b/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node16).errors.txt index 534e94fccdbc7..c4703c00ca4c6 100644 --- a/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node16).errors.txt +++ b/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node16).errors.txt @@ -1,6 +1,6 @@ subfolder/index.ts(2,10): error TS2441: Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of a module. subfolder/index.ts(3,7): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. -subfolder/index.ts(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node16. +subfolder/index.ts(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node16. subfolder/index.ts(5,14): error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. @@ -14,7 +14,7 @@ subfolder/index.ts(5,14): error TS1216: Identifier expected. '__esModule' is res !!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node16. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node16. export const __esModule = false; ~~~~~~~~~~ !!! error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. diff --git a/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node18).errors.txt b/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node18).errors.txt index fe89fc2f3863b..96571f17bd522 100644 --- a/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node18).errors.txt +++ b/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node18).errors.txt @@ -1,6 +1,6 @@ subfolder/index.ts(2,10): error TS2441: Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of a module. subfolder/index.ts(3,7): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. -subfolder/index.ts(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node18. +subfolder/index.ts(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node18. subfolder/index.ts(5,14): error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. @@ -14,7 +14,7 @@ subfolder/index.ts(5,14): error TS1216: Identifier expected. '__esModule' is res !!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node18. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node18. export const __esModule = false; ~~~~~~~~~~ !!! error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. diff --git a/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node20).errors.txt b/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node20).errors.txt index 6f76f35748756..3829d38b3ebb8 100644 --- a/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node20).errors.txt +++ b/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=node20).errors.txt @@ -1,6 +1,6 @@ subfolder/index.ts(2,10): error TS2441: Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of a module. subfolder/index.ts(3,7): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. -subfolder/index.ts(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node20. +subfolder/index.ts(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node20. subfolder/index.ts(5,14): error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. @@ -14,7 +14,7 @@ subfolder/index.ts(5,14): error TS1216: Identifier expected. '__esModule' is res !!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module Node20. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module Node20. export const __esModule = false; ~~~~~~~~~~ !!! error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. diff --git a/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=nodenext).errors.txt b/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=nodenext).errors.txt index 1a1ba80e6a10c..87a27397317af 100644 --- a/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=nodenext).errors.txt +++ b/tests/baselines/reference/nodeModulesGeneratedNameCollisions(module=nodenext).errors.txt @@ -1,6 +1,6 @@ subfolder/index.ts(2,10): error TS2441: Duplicate identifier 'require'. Compiler reserves name 'require' in top level scope of a module. subfolder/index.ts(3,7): error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. -subfolder/index.ts(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 with module NodeNext. +subfolder/index.ts(4,7): error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module NodeNext. subfolder/index.ts(5,14): error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules. @@ -14,7 +14,7 @@ subfolder/index.ts(5,14): error TS1216: Identifier expected. '__esModule' is res !!! error TS2441: Duplicate identifier 'exports'. Compiler reserves name 'exports' in top level scope of a module. class Object {} ~~~~~~ -!!! error TS2725: Class name cannot be 'Object' when targeting ES5 with module NodeNext. +!!! error TS2725: Class name cannot be 'Object' when targeting ES5 and above with module NodeNext. export const __esModule = false; ~~~~~~~~~~ !!! error TS1216: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules.