difftreelog
fix(parser) desugar % to std.mod
in: master
2 files changed
crates/jsonnet-parser/src/expr.rsdiffbeforeafterboth50pub enum BinaryOpType {50pub enum BinaryOpType {51 Mul,51 Mul,52 Div,52 Div,53 Mod,53 // Mod is desugared to stdlib5454 // Mod,55 Add,55 Add,56 Sub,56 Sub,5757crates/jsonnet-parser/src/lib.rsdiffbeforeafterboth--- a/crates/jsonnet-parser/src/lib.rs
+++ b/crates/jsonnet-parser/src/lib.rs
@@ -246,7 +246,12 @@
--
a:(@) _ "*" _ b:@ {loc_expr_todo!(Expr::BinaryOp(a, BinaryOpType::Mul, b))}
a:(@) _ "/" _ b:@ {loc_expr_todo!(Expr::BinaryOp(a, BinaryOpType::Div, b))}
- a:(@) _ "%" _ b:@ {loc_expr_todo!(Expr::BinaryOp(a, BinaryOpType::Mod, b))}
+ a:(@) _ "%" _ b:@ {loc_expr_todo!(Expr::Apply(
+ el!(Expr::Index(
+ el!(Expr::Var("std".to_owned())),
+ el!(Expr::Str("mod".to_owned()))
+ )), ArgsDesc(vec![Arg(None, a), Arg(None, b)])
+ ))}
--
"-" _ b:@ {loc_expr_todo!(Expr::UnaryOp(UnaryOpType::Minus, b))}
"!" _ b:@ {loc_expr_todo!(Expr::UnaryOp(UnaryOpType::Not, b))}