Handle function calls in call args
This commit is contained in:
parent
bc0c1d35f6
commit
d6ed0391db
21
src/args.rs
21
src/args.rs
@ -202,6 +202,27 @@ pub(crate) fn eat_call_args<I: Iterator<Item = Token>>(
|
||||
}
|
||||
}
|
||||
}
|
||||
TokenKind::Symbol(Symbol::OpenParen) => {
|
||||
val.push(Token { kind, pos });
|
||||
let mut unclosed_parens = 0;
|
||||
while let Some(tok) = toks.next() {
|
||||
match &tok.kind {
|
||||
TokenKind::Symbol(Symbol::OpenParen) => {
|
||||
unclosed_parens += 1;
|
||||
}
|
||||
TokenKind::Symbol(Symbol::CloseParen) => {
|
||||
if unclosed_parens <= 1 {
|
||||
val.push(tok);
|
||||
break;
|
||||
} else {
|
||||
unclosed_parens -= 1;
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
val.push(tok);
|
||||
}
|
||||
}
|
||||
TokenKind::Symbol(Symbol::CloseParen) => {
|
||||
if val.is_empty() {
|
||||
break;
|
||||
|
@ -23,6 +23,11 @@ test!(
|
||||
"@function a($a) {\n @return $a;\n}\n\nb {\ncolor: a(1);\n}\n",
|
||||
"b {\n color: 1;\n}\n"
|
||||
);
|
||||
test!(
|
||||
function_call_as_arg,
|
||||
"@function a($a) {\n @return $a;\n}\n\nb {\ncolor: a(a(2));\n}\n",
|
||||
"b {\n color: 2;\n}\n"
|
||||
);
|
||||
// test!(
|
||||
// return_no_semicolon,
|
||||
// "@function a() {\n @return 1\n}\n\nb {\ncolor: a();\n}\n",
|
||||
|
Loading…
x
Reference in New Issue
Block a user