Skip to content

Commit 0ad1b18

Browse files
committed
fix stupid recursion
1 parent e82e30d commit 0ad1b18

File tree

2 files changed

+33
-36
lines changed

2 files changed

+33
-36
lines changed

src/main/javacc/CSS3Parser.jj

+8-12
Original file line numberDiff line numberDiff line change
@@ -1567,13 +1567,7 @@ LexicalUnit term(LexicalUnit prev) :
15671567
Locator locator = null;
15681568
}
15691569
{
1570-
( op = unaryOperator() )?
1571-
{
1572-
if (op != ' ')
1573-
{
1574-
locator = createLocator(token);
1575-
}
1576-
}
1570+
( op = unaryOperator() )? { if (op != ' ') { locator = createLocator(token); } }
15771571
(
15781572
( value = number(prev, op)
15791573
| value = dimension(prev, op)
@@ -1646,7 +1640,7 @@ LexicalUnit function(LexicalUnit prev) :
16461640
)?
16471641
body = term(body)
16481642
)*
1649-
)?
1643+
)?
16501644
<RROUND>
16511645
{
16521646
return functionInternal(prev, funct, param);
@@ -1758,6 +1752,7 @@ LexicalUnit calcValue(LexicalUnit prev) :
17581752
| prev = percentage(prev, op)
17591753
)
17601754
)
1755+
| prev = var(prev)
17611756
|
17621757
(
17631758
(
@@ -1862,6 +1857,7 @@ LexicalUnit calcNumberValue(LexicalUnit prev) :
18621857
(op = unaryOperator() )?
18631858
prev = number(prev, op)
18641859
)
1860+
| prev = var(prev)
18651861
|
18661862
(
18671863
(
@@ -1894,18 +1890,18 @@ LexicalUnit calcNumberValue(LexicalUnit prev) :
18941890
LexicalUnit var(LexicalUnit prev) :
18951891
{
18961892
Token t;
1897-
LexicalUnit value, propertyName;
1893+
LexicalUnit value, current, propertyName;
18981894
String funct = "";
18991895
}
19001896
{
19011897
t = <FUNCTION_VAR> { funct = unescape(t.image, false); }
19021898
( <S> )*
1903-
t = <CUSTOM_PROPERTY_NAME> { prev = LexicalUnitImpl.createIdent(prev, unescape(t.image, false)); propertyName = prev; }
1899+
t = <CUSTOM_PROPERTY_NAME> { current = LexicalUnitImpl.createIdent(prev, unescape(t.image, false)); propertyName = current; }
19041900
( <S> )*
19051901
(
1906-
<COMMA> { prev = LexicalUnitImpl.createComma(prev); }
1902+
<COMMA> { current = LexicalUnitImpl.createComma(current); }
19071903
( <S> )*
1908-
prev = term(prev)
1904+
current = term(current)
19091905
)*
19101906
<RROUND>
19111907
{

src/test/java/com/gargoylesoftware/css/parser/CSS3ParserTest.java

+25-24
Original file line numberDiff line numberDiff line change
@@ -1241,36 +1241,37 @@ public void calcExpressions() throws Exception {
12411241
expression("h1 { top: calc(14 + (7 + 3) - 1) }");
12421242
}
12431243

1244+
@Test
12441245
public void varExpressions() throws Exception {
12451246
// test cases for successful parsing
1246-
expression("#v { --my-var: 3 }");
1247-
expression("#v { --my-var: 2px }");
1248-
expression("#v { --my-var: 10pt }");
1249-
expression("#v { --my-var: 11% }");
1250-
expression("#v { --my-var: rgb(255, 255, 255) }");
1251-
expression("#v { --my-var: rgba(255, 255, 255, 0) }");
1252-
expression("#v { --my-var: var(--test) }");
1253-
expression("#v { --my-var: \"test\" }");
1254-
expression("#v { --my-var: 3 }");
1255-
expression("#v { --my-var: 3; top: var(--my-var, 10) }");
1256-
expression("#v { --my-var: -2; top: var(--my-var, 10) }");
1257-
expression("#v { --my-var: -2; top: var(--my-var, 10, 11) }");
1258-
expression("#v { --my-var: -2; top: var(--my-var, 10, 11, 12, \"test\") }");
1259-
expression("#v { --my-var: -2; top: var(--my-var, 10, 11, 12, rgb(12, 24, 35)) }");
1247+
expression("h1 { --my-var: 3 }");
1248+
expression("h1 { --my-var: 2px }");
1249+
expression("h1 { --my-var: 10pt }");
1250+
expression("h1 { --my-var: 11% }");
1251+
expression("h1 { --my-var: rgb(255, 255, 255) }");
1252+
expression("h1 { --my-var: rgba(255, 255, 255, 0) }");
1253+
expression("h1 { --my-var: var(--test) }");
1254+
expression("h1 { --my-var: \"test\" }");
1255+
expression("h1 { --my-var: 3 }");
1256+
expression("h1 { --my-var: 3; top: var(--my-var, 10) }");
1257+
expression("h1 { --my-var: -2; top: var(--my-var, 10) }");
1258+
expression("h1 { --my-var: -2; top: var(--my-var, 10, 11) }");
1259+
expression("h1 { --my-var: -2; top: var(--my-var, 10, 11, 12, \"test\") }");
1260+
expression("h1 { --my-var: -2; top: var(--my-var, 10, 11, 12, rgb(12, 24, 35)) }");
12601261

12611262
// special test cases with different expected result
1262-
expression("#v { --my-var: +11; top: var(--my-var, 10) }",
1263-
"#v { --my-var: 11; top: var(--my-var, 10) }");
1264-
expression("#v { --my-var: -2; top: var(--my-var, 10, 11, 12, 'test') }",
1265-
"#v { --my-var: -2; top: var(--my-var, 10, 11, 12, \"test\") }");
1266-
expression("#v { --my-var: 'test' }",
1267-
"#v { --my-var: \"test\" }");
1263+
expression("h1 { --my-var: +11; top: var(--my-var, 10) }",
1264+
"h1 { --my-var: 11; top: var(--my-var, 10) }");
1265+
expression("h1 { --my-var: -2; top: var(--my-var, 10, 11, 12, 'test') }",
1266+
"h1 { --my-var: -2; top: var(--my-var, 10, 11, 12, \"test\") }");
1267+
expression("h1 { --my-var: 'test' }",
1268+
"h1 { --my-var: \"test\" }");
12681269

12691270
// test cases for unsuccessful parsing
1270-
expression("#v { --my-var: var(test) }", 1, 0, 0);
1271-
expression("#v { --my-var: var() }", 1, 0, 0);
1272-
expression("#v { --my-var: var(-test) }", 1, 0, 0);
1273-
expression("#v { --my-var: var(---test) }", 1, 0, 0);
1271+
expression("h1 { --my-var: var(test) }", 1, 0, 0);
1272+
expression("h1 { --my-var: var() }", 1, 0, 0);
1273+
expression("h1 { --my-var: var(-test) }", 1, 0, 0);
1274+
expression("h1 { --my-var: var(---test) }", 1, 0, 0);
12741275
}
12751276

12761277
private void expression(String cssText) throws Exception {

0 commit comments

Comments
 (0)