Skip to content

Commit 3371f3d

Browse files
committed
avoid cast and accept baseline
1 parent e4d32d8 commit 3371f3d

5 files changed

+266
-4
lines changed

src/compiler/checker.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -4974,12 +4974,11 @@ namespace ts {
49744974
}
49754975

49764976
function isStringConcatExpression(expr: Node): boolean {
4977-
if (expr.kind === SyntaxKind.StringLiteral) {
4977+
if (isStringLiteral(expr)) {
49784978
return true;
49794979
}
4980-
else if (expr.kind === SyntaxKind.BinaryExpression) {
4981-
const binaryExpression = <BinaryExpression>expr;
4982-
return binaryExpression.operatorToken.kind === SyntaxKind.PlusToken && isStringConcatExpression(binaryExpression.left) && isStringConcatExpression(binaryExpression.right);
4980+
else if (isBinaryExpression(expr)) {
4981+
return expr.operatorToken.kind === SyntaxKind.PlusToken && isStringConcatExpression(expr.left) && isStringConcatExpression(expr.right);
49834982
}
49844983
return false;
49854984
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
//// [enumConstantMemberWithStringDeclaration.ts]
2+
enum T1 {
3+
a = "1",
4+
b = "1" + "2",
5+
c = "1" + "2" + "3"
6+
}
7+
8+
enum T2 {
9+
a = "1",
10+
b = "1" + "2"
11+
}
12+
13+
enum T3 {
14+
a = "1",
15+
b = "1" + "2",
16+
c = 1
17+
}
18+
19+
enum T4 {
20+
a = "1"
21+
}
22+
23+
enum T5 {
24+
a = "1" + "2"
25+
}
26+
27+
declare enum T6 {
28+
a = "1",
29+
b = "1" + "2"
30+
}
31+
32+
33+
//// [enumConstantMemberWithStringDeclaration.js]
34+
var T1;
35+
(function (T1) {
36+
T1["a"] = "1";
37+
T1["b"] = "12";
38+
T1["c"] = "123";
39+
})(T1 || (T1 = {}));
40+
var T2;
41+
(function (T2) {
42+
T2["a"] = "1";
43+
T2["b"] = "12";
44+
})(T2 || (T2 = {}));
45+
var T3;
46+
(function (T3) {
47+
T3["a"] = "1";
48+
T3["b"] = "12";
49+
T3[T3["c"] = 1] = "c";
50+
})(T3 || (T3 = {}));
51+
var T4;
52+
(function (T4) {
53+
T4["a"] = "1";
54+
})(T4 || (T4 = {}));
55+
var T5;
56+
(function (T5) {
57+
T5["a"] = "12";
58+
})(T5 || (T5 = {}));
59+
60+
61+
//// [enumConstantMemberWithStringDeclaration.d.ts]
62+
declare enum T1 {
63+
a = "1",
64+
b = "12",
65+
c = "123",
66+
}
67+
declare enum T2 {
68+
a = "1",
69+
b = "12",
70+
}
71+
declare enum T3 {
72+
a = "1",
73+
b = "12",
74+
c = 1,
75+
}
76+
declare enum T4 {
77+
a = "1",
78+
}
79+
declare enum T5 {
80+
a = "12",
81+
}
82+
declare enum T6 {
83+
a = "1",
84+
b = "12",
85+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
=== tests/cases/conformance/enums/enumConstantMemberWithStringDeclaration.ts ===
2+
enum T1 {
3+
>T1 : Symbol(T1, Decl(enumConstantMemberWithStringDeclaration.ts, 0, 0))
4+
5+
a = "1",
6+
>a : Symbol(T1.a, Decl(enumConstantMemberWithStringDeclaration.ts, 0, 9))
7+
8+
b = "1" + "2",
9+
>b : Symbol(T1.b, Decl(enumConstantMemberWithStringDeclaration.ts, 1, 12))
10+
11+
c = "1" + "2" + "3"
12+
>c : Symbol(T1.c, Decl(enumConstantMemberWithStringDeclaration.ts, 2, 18))
13+
}
14+
15+
enum T2 {
16+
>T2 : Symbol(T2, Decl(enumConstantMemberWithStringDeclaration.ts, 4, 1))
17+
18+
a = "1",
19+
>a : Symbol(T2.a, Decl(enumConstantMemberWithStringDeclaration.ts, 6, 9))
20+
21+
b = "1" + "2"
22+
>b : Symbol(T2.b, Decl(enumConstantMemberWithStringDeclaration.ts, 7, 12))
23+
}
24+
25+
enum T3 {
26+
>T3 : Symbol(T3, Decl(enumConstantMemberWithStringDeclaration.ts, 9, 1))
27+
28+
a = "1",
29+
>a : Symbol(T3.a, Decl(enumConstantMemberWithStringDeclaration.ts, 11, 9))
30+
31+
b = "1" + "2",
32+
>b : Symbol(T3.b, Decl(enumConstantMemberWithStringDeclaration.ts, 12, 12))
33+
34+
c = 1
35+
>c : Symbol(T3.c, Decl(enumConstantMemberWithStringDeclaration.ts, 13, 18))
36+
}
37+
38+
enum T4 {
39+
>T4 : Symbol(T4, Decl(enumConstantMemberWithStringDeclaration.ts, 15, 1))
40+
41+
a = "1"
42+
>a : Symbol(T4.a, Decl(enumConstantMemberWithStringDeclaration.ts, 17, 9))
43+
}
44+
45+
enum T5 {
46+
>T5 : Symbol(T5, Decl(enumConstantMemberWithStringDeclaration.ts, 19, 1))
47+
48+
a = "1" + "2"
49+
>a : Symbol(T5.a, Decl(enumConstantMemberWithStringDeclaration.ts, 21, 9))
50+
}
51+
52+
declare enum T6 {
53+
>T6 : Symbol(T6, Decl(enumConstantMemberWithStringDeclaration.ts, 23, 1))
54+
55+
a = "1",
56+
>a : Symbol(T6.a, Decl(enumConstantMemberWithStringDeclaration.ts, 25, 17))
57+
58+
b = "1" + "2"
59+
>b : Symbol(T6.b, Decl(enumConstantMemberWithStringDeclaration.ts, 26, 12))
60+
}
61+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
=== tests/cases/conformance/enums/enumConstantMemberWithStringDeclaration.ts ===
2+
enum T1 {
3+
>T1 : T1
4+
5+
a = "1",
6+
>a : T1.a
7+
>"1" : "1"
8+
9+
b = "1" + "2",
10+
>b : T1.b
11+
>"1" + "2" : string
12+
>"1" : "1"
13+
>"2" : "2"
14+
15+
c = "1" + "2" + "3"
16+
>c : T1.c
17+
>"1" + "2" + "3" : string
18+
>"1" + "2" : string
19+
>"1" : "1"
20+
>"2" : "2"
21+
>"3" : "3"
22+
}
23+
24+
enum T2 {
25+
>T2 : T2
26+
27+
a = "1",
28+
>a : T2.a
29+
>"1" : "1"
30+
31+
b = "1" + "2"
32+
>b : T2.b
33+
>"1" + "2" : string
34+
>"1" : "1"
35+
>"2" : "2"
36+
}
37+
38+
enum T3 {
39+
>T3 : T3
40+
41+
a = "1",
42+
>a : T3.a
43+
>"1" : "1"
44+
45+
b = "1" + "2",
46+
>b : T3.b
47+
>"1" + "2" : string
48+
>"1" : "1"
49+
>"2" : "2"
50+
51+
c = 1
52+
>c : T3.c
53+
>1 : 1
54+
}
55+
56+
enum T4 {
57+
>T4 : T4
58+
59+
a = "1"
60+
>a : T4
61+
>"1" : "1"
62+
}
63+
64+
enum T5 {
65+
>T5 : T5
66+
67+
a = "1" + "2"
68+
>a : T5
69+
>"1" + "2" : string
70+
>"1" : "1"
71+
>"2" : "2"
72+
}
73+
74+
declare enum T6 {
75+
>T6 : T6
76+
77+
a = "1",
78+
>a : T6.a
79+
>"1" : "1"
80+
81+
b = "1" + "2"
82+
>b : T6.b
83+
>"1" + "2" : string
84+
>"1" : "1"
85+
>"2" : "2"
86+
}
87+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// @declaration: true
2+
enum T1 {
3+
a = "1",
4+
b = "1" + "2",
5+
c = "1" + "2" + "3"
6+
}
7+
8+
enum T2 {
9+
a = "1",
10+
b = "1" + "2"
11+
}
12+
13+
enum T3 {
14+
a = "1",
15+
b = "1" + "2",
16+
c = 1
17+
}
18+
19+
enum T4 {
20+
a = "1"
21+
}
22+
23+
enum T5 {
24+
a = "1" + "2"
25+
}
26+
27+
declare enum T6 {
28+
a = "1",
29+
b = "1" + "2"
30+
}

0 commit comments

Comments
 (0)