Skip to content

Commit f658dbd

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

5 files changed

+255
-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,82 @@
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+
}
17+
18+
enum T4 {
19+
a = "1"
20+
}
21+
22+
enum T5 {
23+
a = "1" + "2"
24+
}
25+
26+
declare enum T6 {
27+
a = "1",
28+
b = "1" + "2"
29+
}
30+
31+
32+
//// [enumConstantMemberWithStringDeclaration.js]
33+
var T1;
34+
(function (T1) {
35+
T1["a"] = "1";
36+
T1["b"] = "12";
37+
T1["c"] = "123";
38+
})(T1 || (T1 = {}));
39+
var T2;
40+
(function (T2) {
41+
T2["a"] = "1";
42+
T2["b"] = "12";
43+
})(T2 || (T2 = {}));
44+
var T3;
45+
(function (T3) {
46+
T3["a"] = "1";
47+
T3["b"] = "12";
48+
})(T3 || (T3 = {}));
49+
var T4;
50+
(function (T4) {
51+
T4["a"] = "1";
52+
})(T4 || (T4 = {}));
53+
var T5;
54+
(function (T5) {
55+
T5["a"] = "12";
56+
})(T5 || (T5 = {}));
57+
58+
59+
//// [enumConstantMemberWithStringDeclaration.d.ts]
60+
declare enum T1 {
61+
a = "1",
62+
b = "12",
63+
c = "123",
64+
}
65+
declare enum T2 {
66+
a = "1",
67+
b = "12",
68+
}
69+
declare enum T3 {
70+
a = "1",
71+
b = "12",
72+
}
73+
declare enum T4 {
74+
a = "1",
75+
}
76+
declare enum T5 {
77+
a = "12",
78+
}
79+
declare enum T6 {
80+
a = "1",
81+
b = "12",
82+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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+
35+
enum T4 {
36+
>T4 : Symbol(T4, Decl(enumConstantMemberWithStringDeclaration.ts, 14, 1))
37+
38+
a = "1"
39+
>a : Symbol(T4.a, Decl(enumConstantMemberWithStringDeclaration.ts, 16, 9))
40+
}
41+
42+
enum T5 {
43+
>T5 : Symbol(T5, Decl(enumConstantMemberWithStringDeclaration.ts, 18, 1))
44+
45+
a = "1" + "2"
46+
>a : Symbol(T5.a, Decl(enumConstantMemberWithStringDeclaration.ts, 20, 9))
47+
}
48+
49+
declare enum T6 {
50+
>T6 : Symbol(T6, Decl(enumConstantMemberWithStringDeclaration.ts, 22, 1))
51+
52+
a = "1",
53+
>a : Symbol(T6.a, Decl(enumConstantMemberWithStringDeclaration.ts, 24, 17))
54+
55+
b = "1" + "2"
56+
>b : Symbol(T6.b, Decl(enumConstantMemberWithStringDeclaration.ts, 25, 12))
57+
}
58+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
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+
52+
enum T4 {
53+
>T4 : T4
54+
55+
a = "1"
56+
>a : T4
57+
>"1" : "1"
58+
}
59+
60+
enum T5 {
61+
>T5 : T5
62+
63+
a = "1" + "2"
64+
>a : T5
65+
>"1" + "2" : string
66+
>"1" : "1"
67+
>"2" : "2"
68+
}
69+
70+
declare enum T6 {
71+
>T6 : T6
72+
73+
a = "1",
74+
>a : T6.a
75+
>"1" : "1"
76+
77+
b = "1" + "2"
78+
>b : T6.b
79+
>"1" + "2" : string
80+
>"1" : "1"
81+
>"2" : "2"
82+
}
83+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
}
17+
18+
enum T4 {
19+
a = "1"
20+
}
21+
22+
enum T5 {
23+
a = "1" + "2"
24+
}
25+
26+
declare enum T6 {
27+
a = "1",
28+
b = "1" + "2"
29+
}

0 commit comments

Comments
 (0)