difftreelog
fix(rowan) statements bind the tighest
in: master
3 files changed
crates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth335 }336 }336337337 let m = m.precede(p);338 let m = m.precede(p);338 let parsed_rhs = expr_binding_power(p, right_binding_power)339 let parsed_rhs = if p.at(T![local]) || p.at(T![assert]) {340 expr(p);341 true342 } else {343 expr_binding_power(p, right_binding_power)339 .map(|v| v.precede(p).complete(p, EXPR))344 .map(|v| v.precede(p).complete(p, EXPR))340 .is_ok();345 .is_ok()346 };341 lhs = m.complete(347 lhs = m.complete(342 p,348 p,343 if op == BinaryOperatorKind::MetaObjectApply {349 if op == BinaryOperatorKind::MetaObjectApply {crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_in_binop_rhs.snapdiffbeforeafterboth--- /dev/null
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_in_binop_rhs.snap
@@ -0,0 +1,34 @@
+---
+source: crates/jrsonnet-rowan-parser/src/tests.rs
+expression: "a + local x = 1; x\n"
+---
+SOURCE_FILE@0..19
+ EXPR@0..18
+ EXPR_BINARY@0..18
+ EXPR@0..1
+ EXPR_VAR@0..1
+ NAME@0..1
+ IDENT@0..1 "a"
+ WHITESPACE@1..2 " "
+ PLUS@2..3 "+"
+ WHITESPACE@3..4 " "
+ EXPR@4..18
+ STMT_LOCAL@4..16
+ LOCAL_KW@4..9 "local"
+ WHITESPACE@9..10 " "
+ BIND_DESTRUCT@10..15
+ DESTRUCT_FULL@10..11
+ NAME@10..11
+ IDENT@10..11 "x"
+ WHITESPACE@11..12 " "
+ ASSIGN@12..13 "="
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "1"
+ SEMI@15..16 ";"
+ WHITESPACE@16..17 " "
+ EXPR_VAR@17..18
+ NAME@17..18
+ IDENT@17..18 "x"
+ WHITESPACE@18..19 "\n"
crates/jrsonnet-rowan-parser/src/tests.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/tests.rs
+++ b/crates/jrsonnet-rowan-parser/src/tests.rs
@@ -224,6 +224,10 @@
unary_not_in_call => r#"
std.assertEqual(!false, true)
"#
+
+ local_in_binop_rhs => r#"
+ a + local x = 1; x
+ "#
);
#[test]