Desugar function calls with table constructor
This commit is contained in:
parent
29aa474b6a
commit
7bfaebc05f
1 changed files with 21 additions and 4 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
use chumsky::Span;
|
||||||
|
|
||||||
use crate::ast::{Call, Expr, Lit, Space};
|
use crate::ast::{Call, Expr, Lit, Space};
|
||||||
use crate::span::HasSpan;
|
use crate::span::HasSpan;
|
||||||
|
|
||||||
|
|
@ -54,13 +56,28 @@ impl Call {
|
||||||
constr,
|
constr,
|
||||||
span,
|
span,
|
||||||
} => {
|
} => {
|
||||||
|
let (expr, desugared) = expr.desugar();
|
||||||
|
if desugared {
|
||||||
let new = Expr::Call(Self::Constr {
|
let new = Expr::Call(Self::Constr {
|
||||||
expr,
|
expr: Box::new(expr),
|
||||||
s0,
|
s0,
|
||||||
constr,
|
constr,
|
||||||
span,
|
span,
|
||||||
});
|
});
|
||||||
(new, false) // TODO Implement
|
return (new, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
let arg = Expr::TableConstr(constr);
|
||||||
|
let arg_span = arg.span();
|
||||||
|
let new = Expr::Call(Self::Arg {
|
||||||
|
expr: Box::new(expr),
|
||||||
|
s0,
|
||||||
|
s1: Space::empty(arg_span.at_start()),
|
||||||
|
arg: Box::new(arg),
|
||||||
|
s2: Space::empty(arg_span.at_end()),
|
||||||
|
span,
|
||||||
|
});
|
||||||
|
(new, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue