Skip to content

Commit 442894b

Browse files
committed
Merge pull request #1212 from xzyfer/fix/issue-1206
Don't eval static division ops inside interpolants
2 parents a6482aa + 9cce07e commit 442894b

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

parser.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,6 +1453,14 @@ namespace Sass {
14531453
return schema;
14541454
}
14551455

1456+
String_Constant* Parser::parse_static_expression()
1457+
{
1458+
if (peek< sequence< number, optional_spaces, exactly<'/'>, optional_spaces, number > >()) {
1459+
return parse_static_value();
1460+
}
1461+
return 0;
1462+
}
1463+
14561464
String_Constant* Parser::parse_static_value()
14571465
{
14581466
lex< static_value >();
@@ -1555,8 +1563,12 @@ namespace Sass {
15551563
}
15561564
else if (lex< interpolant >()) {
15571565
Token insides(Token(lexed.begin + 2, lexed.end - 1));
1558-
Expression* interp_node = Parser::from_token(insides, ctx, pstate).parse_list();
1559-
interp_node->is_interpolant(true);
1566+
Expression* interp_node;
1567+
Parser p = Parser::from_token(insides, ctx, pstate);
1568+
if (!(interp_node = p.parse_static_expression())) {
1569+
interp_node = p.parse_list();
1570+
interp_node->is_interpolant(true);
1571+
}
15601572
(*schema) << interp_node;
15611573
}
15621574
else if (lex< exactly<'%'> >()) {

parser.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ namespace Sass {
241241
Function_Call_Schema* parse_function_call_schema();
242242
String* parse_interpolated_chunk(Token, bool constant = false);
243243
String* parse_string();
244+
String_Constant* parse_static_expression();
244245
String_Constant* parse_static_value();
245246
String* parse_ie_property();
246247
String* parse_ie_keyword_arg();

0 commit comments

Comments
 (0)