Skip to content

Commit 0a74ec4

Browse files
authored
Remove ES5 references, misc cleanup (#63075)
1 parent b92ec99 commit 0a74ec4

File tree

7 files changed

+199
-4
lines changed

7 files changed

+199
-4
lines changed

src/compiler/checker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6774,7 +6774,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
67746774
return parentName;
67756775
}
67766776
const memberName = symbolName(type.symbol);
6777-
if (isIdentifierText(memberName, ScriptTarget.ES5)) {
6777+
if (isIdentifierText(memberName, ScriptTarget.ESNext)) {
67786778
return appendReferenceToType(
67796779
parentName as TypeReferenceNode | ImportTypeNode,
67806780
factory.createTypeReferenceNode(memberName, /*typeArguments*/ undefined),
@@ -46772,7 +46772,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4677246772
*/
4677346773
function checkClassNameCollisionWithObject(name: Identifier): void {
4677446774
if (
46775-
languageVersion >= ScriptTarget.ES5 && name.escapedText === "Object"
46775+
name.escapedText === "Object"
4677646776
&& host.getEmitModuleFormatOfFile(getSourceFileOfNode(name)) < ModuleKind.ES2015
4677746777
) {
4677846778
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

src/compiler/emitter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2625,7 +2625,7 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri
26252625
}
26262626

26272627
const preferNewLine = node.multiLine ? ListFormat.PreferNewLine : ListFormat.None;
2628-
const allowTrailingComma = currentSourceFile && currentSourceFile.languageVersion >= ScriptTarget.ES5 && !isJsonSourceFile(currentSourceFile) ? ListFormat.AllowTrailingComma : ListFormat.None;
2628+
const allowTrailingComma = currentSourceFile && !isJsonSourceFile(currentSourceFile) ? ListFormat.AllowTrailingComma : ListFormat.None;
26292629
emitList(node, node.properties, ListFormat.ObjectLiteralExpressionProperties | allowTrailingComma | preferNewLine);
26302630

26312631
if (indentedFlag) {

src/compiler/transformers/ts.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -879,7 +879,7 @@ export function transformTypeScript(context: TransformationContext): Transformer
879879

880880
function visitClassDeclaration(node: ClassDeclaration): VisitResult<Statement> {
881881
const facts = getClassFacts(node);
882-
const promoteToIIFE = languageVersion <= ScriptTarget.ES5 &&
882+
const promoteToIIFE = languageVersion < ScriptTarget.ES2015 &&
883883
!!(facts & ClassFacts.MayNeedImmediatelyInvokedFunctionExpression);
884884

885885
if (
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//// [tests/cases/compiler/enumMemberNameNonIdentifier.ts] ////
2+
3+
//// [enumMemberNameNonIdentifier.ts]
4+
export const enum E {
5+
regular = 0,
6+
"hyphen-member" = 1,
7+
"123startsWithNumber" = 2,
8+
"has space" = 3,
9+
// Greek Capital Yot (U+037F) - valid identifier in ES2015+ but NOT in ES5
10+
Ϳ = 4,
11+
}
12+
13+
export const a = E["hyphen-member"];
14+
export const b = E["123startsWithNumber"];
15+
export const c = E["has space"];
16+
export const d = E.regular;
17+
export const e = E.Ϳ;
18+
19+
20+
//// [enumMemberNameNonIdentifier.js]
21+
export const a = 1 /* E["hyphen-member"] */;
22+
export const b = 2 /* E["123startsWithNumber"] */;
23+
export const c = 3 /* E["has space"] */;
24+
export const d = 0 /* E.regular */;
25+
export const e = 4 /* E.Ϳ */;
26+
27+
28+
//// [enumMemberNameNonIdentifier.d.ts]
29+
export declare const enum E {
30+
regular = 0,
31+
"hyphen-member" = 1,
32+
"123startsWithNumber" = 2,
33+
"has space" = 3,
34+
Ϳ = 4
35+
}
36+
export declare const a = E["hyphen-member"];
37+
export declare const b = E["123startsWithNumber"];
38+
export declare const c = E["has space"];
39+
export declare const d = E.regular;
40+
export declare const e = E.Ϳ;
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
//// [tests/cases/compiler/enumMemberNameNonIdentifier.ts] ////
2+
3+
=== enumMemberNameNonIdentifier.ts ===
4+
export const enum E {
5+
>E : Symbol(E, Decl(enumMemberNameNonIdentifier.ts, 0, 0))
6+
7+
regular = 0,
8+
>regular : Symbol(E.regular, Decl(enumMemberNameNonIdentifier.ts, 0, 21))
9+
10+
"hyphen-member" = 1,
11+
>"hyphen-member" : Symbol(E["hyphen-member"], Decl(enumMemberNameNonIdentifier.ts, 1, 16))
12+
13+
"123startsWithNumber" = 2,
14+
>"123startsWithNumber" : Symbol(E["123startsWithNumber"], Decl(enumMemberNameNonIdentifier.ts, 2, 24))
15+
16+
"has space" = 3,
17+
>"has space" : Symbol(E["has space"], Decl(enumMemberNameNonIdentifier.ts, 3, 30))
18+
19+
// Greek Capital Yot (U+037F) - valid identifier in ES2015+ but NOT in ES5
20+
Ϳ = 4,
21+
>Ϳ : Symbol(E.Ϳ, Decl(enumMemberNameNonIdentifier.ts, 4, 20))
22+
}
23+
24+
export const a = E["hyphen-member"];
25+
>a : Symbol(a, Decl(enumMemberNameNonIdentifier.ts, 9, 12))
26+
>E : Symbol(E, Decl(enumMemberNameNonIdentifier.ts, 0, 0))
27+
>"hyphen-member" : Symbol(E["hyphen-member"], Decl(enumMemberNameNonIdentifier.ts, 1, 16))
28+
29+
export const b = E["123startsWithNumber"];
30+
>b : Symbol(b, Decl(enumMemberNameNonIdentifier.ts, 10, 12))
31+
>E : Symbol(E, Decl(enumMemberNameNonIdentifier.ts, 0, 0))
32+
>"123startsWithNumber" : Symbol(E["123startsWithNumber"], Decl(enumMemberNameNonIdentifier.ts, 2, 24))
33+
34+
export const c = E["has space"];
35+
>c : Symbol(c, Decl(enumMemberNameNonIdentifier.ts, 11, 12))
36+
>E : Symbol(E, Decl(enumMemberNameNonIdentifier.ts, 0, 0))
37+
>"has space" : Symbol(E["has space"], Decl(enumMemberNameNonIdentifier.ts, 3, 30))
38+
39+
export const d = E.regular;
40+
>d : Symbol(d, Decl(enumMemberNameNonIdentifier.ts, 12, 12))
41+
>E.regular : Symbol(E.regular, Decl(enumMemberNameNonIdentifier.ts, 0, 21))
42+
>E : Symbol(E, Decl(enumMemberNameNonIdentifier.ts, 0, 0))
43+
>regular : Symbol(E.regular, Decl(enumMemberNameNonIdentifier.ts, 0, 21))
44+
45+
export const e = E.Ϳ;
46+
>e : Symbol(e, Decl(enumMemberNameNonIdentifier.ts, 13, 12))
47+
>E.Ϳ : Symbol(E.Ϳ, Decl(enumMemberNameNonIdentifier.ts, 4, 20))
48+
>E : Symbol(E, Decl(enumMemberNameNonIdentifier.ts, 0, 0))
49+
>Ϳ : Symbol(E.Ϳ, Decl(enumMemberNameNonIdentifier.ts, 4, 20))
50+
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
//// [tests/cases/compiler/enumMemberNameNonIdentifier.ts] ////
2+
3+
=== enumMemberNameNonIdentifier.ts ===
4+
export const enum E {
5+
>E : E
6+
> : ^
7+
8+
regular = 0,
9+
>regular : E.regular
10+
> : ^^^^^^^^^
11+
>0 : 0
12+
> : ^
13+
14+
"hyphen-member" = 1,
15+
>"hyphen-member" : (typeof E)["hyphen-member"]
16+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
17+
>1 : 1
18+
> : ^
19+
20+
"123startsWithNumber" = 2,
21+
>"123startsWithNumber" : (typeof E)["123startsWithNumber"]
22+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
23+
>2 : 2
24+
> : ^
25+
26+
"has space" = 3,
27+
>"has space" : (typeof E)["has space"]
28+
> : ^^^^^^^^^^^^^^^^^^^^^^^
29+
>3 : 3
30+
> : ^
31+
32+
// Greek Capital Yot (U+037F) - valid identifier in ES2015+ but NOT in ES5
33+
Ϳ = 4,
34+
>Ϳ : E.Ϳ
35+
> : ^^^
36+
>4 : 4
37+
> : ^
38+
}
39+
40+
export const a = E["hyphen-member"];
41+
>a : (typeof E)["hyphen-member"]
42+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
43+
>E["hyphen-member"] : (typeof E)["hyphen-member"]
44+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^
45+
>E : typeof E
46+
> : ^^^^^^^^
47+
>"hyphen-member" : "hyphen-member"
48+
> : ^^^^^^^^^^^^^^^
49+
50+
export const b = E["123startsWithNumber"];
51+
>b : (typeof E)["123startsWithNumber"]
52+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
53+
>E["123startsWithNumber"] : (typeof E)["123startsWithNumber"]
54+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
55+
>E : typeof E
56+
> : ^^^^^^^^
57+
>"123startsWithNumber" : "123startsWithNumber"
58+
> : ^^^^^^^^^^^^^^^^^^^^^
59+
60+
export const c = E["has space"];
61+
>c : (typeof E)["has space"]
62+
> : ^^^^^^^^^^^^^^^^^^^^^^^
63+
>E["has space"] : (typeof E)["has space"]
64+
> : ^^^^^^^^^^^^^^^^^^^^^^^
65+
>E : typeof E
66+
> : ^^^^^^^^
67+
>"has space" : "has space"
68+
> : ^^^^^^^^^^^
69+
70+
export const d = E.regular;
71+
>d : E.regular
72+
> : ^^^^^^^^^
73+
>E.regular : E.regular
74+
> : ^^^^^^^^^
75+
>E : typeof E
76+
> : ^^^^^^^^
77+
>regular : E.regular
78+
> : ^^^^^^^^^
79+
80+
export const e = E.Ϳ;
81+
>e : E.Ϳ
82+
> : ^^^
83+
>E.Ϳ : E.Ϳ
84+
> : ^^^
85+
>E : typeof E
86+
> : ^^^^^^^^
87+
>Ϳ : E.Ϳ
88+
> : ^^^
89+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// @declaration: true
2+
3+
export const enum E {
4+
regular = 0,
5+
"hyphen-member" = 1,
6+
"123startsWithNumber" = 2,
7+
"has space" = 3,
8+
// Greek Capital Yot (U+037F) - valid identifier in ES2015+ but NOT in ES5
9+
Ϳ = 4,
10+
}
11+
12+
export const a = E["hyphen-member"];
13+
export const b = E["123startsWithNumber"];
14+
export const c = E["has space"];
15+
export const d = E.regular;
16+
export const e = E.Ϳ;

0 commit comments

Comments
 (0)