Skip to content

Commit 245f485

Browse files
committed
Allow trailing commas in comma-separated syntax elements
1 parent fe06496 commit 245f485

File tree

9 files changed

+354
-13
lines changed

9 files changed

+354
-13
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
res1: Int(isEven, isNonZero, isBetween(-10, 10), ) = 6
2+
res2: Int(
3+
isEven, isNonZero, isBetween(-10, 10),
4+
) = 6
5+
res3: Int(
6+
isEven,
7+
isNonZero,
8+
isBetween(-10, 10),
9+
) = 6
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
local lA1 = (a, b, c,) -> true
2+
local lA2 = (
3+
a, b, c,
4+
) -> true
5+
local lA3 = (
6+
a,
7+
b,
8+
c,
9+
) -> true
10+
11+
local lB1 = (a: Int, b: Int, c: Int,) -> true
12+
local lB2 = (
13+
a: Int, b: Int, c: Int,
14+
) -> true
15+
local lB3 = (
16+
a: Int,
17+
b: Int,
18+
c: Int,
19+
) -> true
20+
21+
local lC1: Mixin = new { a, -> x = true }
22+
local lC2: Mixin = new { a, ->
23+
x = true
24+
}
25+
local lC3: Mixin = new {
26+
a, -> x = true
27+
}
28+
local lC4: Mixin = new {
29+
a, ->
30+
x = true
31+
}
32+
33+
local lD1: Mixin = new { a: Dynamic, -> x = true }
34+
local lD2: Mixin = new { a: Dynamic, ->
35+
x = true
36+
}
37+
local lD3: Mixin = new {
38+
a: Dynamic, -> x = true
39+
}
40+
local lD4: Mixin = new {
41+
a: Dynamic, ->
42+
x = true
43+
}
44+
45+
lA1Call = lA1.apply(1, 2, 3)
46+
lA2Call = lA2.apply(1, 2, 3)
47+
lA3Call = lA3.apply(1, 2, 3)
48+
lB1Call = lB1.apply(1, 2, 3)
49+
lB2Call = lB2.apply(1, 2, 3)
50+
lB3Call = lB3.apply(1, 2, 3)
51+
lC1Call = new Dynamic {} |> lC1
52+
lC2Call = new Dynamic {} |> lC2
53+
lC3Call = new Dynamic {} |> lC3
54+
lC4Call = new Dynamic {} |> lC4
55+
lD1Call = new Dynamic {} |> lD1
56+
lD2Call = new Dynamic {} |> lD2
57+
lD3Call = new Dynamic {} |> lD3
58+
lD4Call = new Dynamic {} |> lD4
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
function moduleMethodA1(a, b, c, ) = true
2+
function moduleMethodA2(
3+
a, b, c,
4+
) = true
5+
function moduleMethodA3(
6+
a,
7+
b,
8+
c,
9+
) = true
10+
function moduleMethodB1(a: Int, b: Int, c: Int, ) = true
11+
function moduleMethodB2(
12+
a: Int, b: Int, c: Int,
13+
) = true
14+
function moduleMethodB3(
15+
a: Int,
16+
b: Int,
17+
c: Int,
18+
) = true
19+
20+
class A {
21+
function classMethodA1(a, b, c, ) = true
22+
function classMethodA2(
23+
a, b, c,
24+
) = true
25+
function classMethodA3(
26+
a,
27+
b,
28+
c,
29+
) = true
30+
function classMethodB1(a: Int, b: Int, c: Int, ) = true
31+
function classMethodB2(
32+
a: Int, b: Int, c: Int,
33+
) = true
34+
function classMethodB3(
35+
a: Int,
36+
b: Int,
37+
c: Int,
38+
) = true
39+
}
40+
41+
moduleMethodA1Call1 = moduleMethodA1(1, 2, 3, )
42+
moduleMethodA1Call2 = moduleMethodA1(
43+
1, 2, 3,
44+
)
45+
moduleMethodA1Call3 = moduleMethodA1(
46+
1,
47+
2,
48+
3,
49+
)
50+
moduleMethodA2Call1 = moduleMethodA2(1, 2, 3, )
51+
moduleMethodA2Call2 = moduleMethodA2(
52+
1, 2, 3,
53+
)
54+
moduleMethodA2Call3 = moduleMethodA2(
55+
1,
56+
2,
57+
3,
58+
)
59+
60+
moduleMethodA3Call1 = moduleMethodA3(1, 2, 3, )
61+
moduleMethodA3Call2 = moduleMethodA3(
62+
1, 2, 3,
63+
)
64+
moduleMethodA3Call3 = moduleMethodA3(
65+
1,
66+
2,
67+
3,
68+
)
69+
70+
moduleMethodB1Call1 = moduleMethodB1(1, 2, 3, )
71+
moduleMethodB1Call2 = moduleMethodB1(
72+
1, 2, 3,
73+
)
74+
moduleMethodB1Call3 = moduleMethodB1(
75+
1,
76+
2,
77+
3,
78+
)
79+
moduleMethodB2Call1 = moduleMethodB2(1, 2, 3, )
80+
moduleMethodB2Call2 = moduleMethodB2(
81+
1, 2, 3,
82+
)
83+
moduleMethodB2Call3 = moduleMethodB2(
84+
1,
85+
2,
86+
3,
87+
)
88+
89+
moduleMethodB3Call1 = moduleMethodB3(1, 2, 3, )
90+
moduleMethodB3Call2 = moduleMethodB3(
91+
1, 2, 3,
92+
)
93+
moduleMethodB3Call3 = moduleMethodB3(
94+
1,
95+
2,
96+
3,
97+
)
98+
99+
local a: A = new {}
100+
101+
classMethodA1Call1 = a.classMethodA1(1, 2, 3, )
102+
classMethodA1Call2 = a.classMethodA1(
103+
1, 2, 3,
104+
)
105+
classMethodA1Call3 = a.classMethodA1(
106+
1,
107+
2,
108+
3,
109+
)
110+
classMethodA2Call1 = a.classMethodA2(1, 2, 3, )
111+
classMethodA2Call2 = a.classMethodA2(
112+
1, 2, 3,
113+
)
114+
classMethodA2Call3 = a.classMethodA2(
115+
1,
116+
2,
117+
3,
118+
)
119+
120+
classMethodA3Call1 = a.classMethodA3(1, 2, 3, )
121+
classMethodA3Call2 = a.classMethodA3(
122+
1, 2, 3,
123+
)
124+
classMethodA3Call3 = a.classMethodA3(
125+
1,
126+
2,
127+
3,
128+
)
129+
130+
classMethodB1Call1 = a.classMethodB1(1, 2, 3, )
131+
classMethodB1Call2 = a.classMethodB1(
132+
1, 2, 3,
133+
)
134+
classMethodB1Call3 = a.classMethodB1(
135+
1,
136+
2,
137+
3,
138+
)
139+
classMethodB2Call1 = a.classMethodB2(1, 2, 3, )
140+
classMethodB2Call2 = a.classMethodB2(
141+
1, 2, 3,
142+
)
143+
classMethodB2Call3 = a.classMethodB2(
144+
1,
145+
2,
146+
3,
147+
)
148+
149+
classMethodB3Call1 = a.classMethodB3(1, 2, 3, )
150+
classMethodB3Call2 = a.classMethodB3(
151+
1, 2, 3,
152+
)
153+
classMethodB3Call3 = a.classMethodB3(
154+
1,
155+
2,
156+
3,
157+
)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Foo<
2+
Key,
3+
Value,
4+
> {
5+
test: Mapping<
6+
Key,
7+
Value,
8+
>
9+
10+
function bar<
11+
A,
12+
B,
13+
>(a: A, b: B,): Value? = "\(a):\(b) - \(test)"
14+
}
15+
16+
res1: Foo<String, String,>(!test.isEmpty) = new Foo<String, String,> {
17+
test {
18+
["hello"] = "world"
19+
}
20+
}
21+
22+
res2 = res1.bar(123, "foo")
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
res1 = 6
2+
res2 = 6
3+
res3 = 6
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
lA1Call = true
2+
lA2Call = true
3+
lA3Call = true
4+
lB1Call = true
5+
lB2Call = true
6+
lB3Call = true
7+
lC1Call {
8+
x = true
9+
}
10+
lC2Call {
11+
x = true
12+
}
13+
lC3Call {
14+
x = true
15+
}
16+
lC4Call {
17+
x = true
18+
}
19+
lD1Call {
20+
x = true
21+
}
22+
lD2Call {
23+
x = true
24+
}
25+
lD3Call {
26+
x = true
27+
}
28+
lD4Call {
29+
x = true
30+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
moduleMethodA1Call1 = true
2+
moduleMethodA1Call2 = true
3+
moduleMethodA1Call3 = true
4+
moduleMethodA2Call1 = true
5+
moduleMethodA2Call2 = true
6+
moduleMethodA2Call3 = true
7+
moduleMethodA3Call1 = true
8+
moduleMethodA3Call2 = true
9+
moduleMethodA3Call3 = true
10+
moduleMethodB1Call1 = true
11+
moduleMethodB1Call2 = true
12+
moduleMethodB1Call3 = true
13+
moduleMethodB2Call1 = true
14+
moduleMethodB2Call2 = true
15+
moduleMethodB2Call3 = true
16+
moduleMethodB3Call1 = true
17+
moduleMethodB3Call2 = true
18+
moduleMethodB3Call3 = true
19+
classMethodA1Call1 = true
20+
classMethodA1Call2 = true
21+
classMethodA1Call3 = true
22+
classMethodA2Call1 = true
23+
classMethodA2Call2 = true
24+
classMethodA2Call3 = true
25+
classMethodA3Call1 = true
26+
classMethodA3Call2 = true
27+
classMethodA3Call3 = true
28+
classMethodB1Call1 = true
29+
classMethodB1Call2 = true
30+
classMethodB1Call3 = true
31+
classMethodB2Call1 = true
32+
classMethodB2Call2 = true
33+
classMethodB2Call3 = true
34+
classMethodB3Call1 = true
35+
classMethodB3Call2 = true
36+
classMethodB3Call3 = true
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
–– Pkl Error ––
2+
Only standard library members can have type parameters.
3+
4+
x | Key,
5+
^^^
6+
at trailingCommas (file:///$snippetsDir/input/types/trailingCommas.pkl)

0 commit comments

Comments
 (0)