git.delta.rocks / jrsonnet / refs/commits / 66126184bd67

difftreelog

fix(rowan) unary wrapping

zokmnylkYaroslav Bolyukin2026-04-01parent: #7c42a3d.patch.diff
in: master

4 files changed

modifiedcrates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -917,7 +917,8 @@
 
 		let m = p.start();
 		p.bump();
-		let _ = expr_binding_power(p, right_binding_power);
+		let _ = expr_binding_power(p, right_binding_power)
+			.map(|v| v.precede(p).complete(p, EXPR));
 		m.complete(p, EXPR_UNARY)
 	} else if p.at(T!['(']) {
 		let m = p.start();
addedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unary_not.snapdiffbeforeafterboth
after · crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unary_not.snap
1---2source: crates/jrsonnet-rowan-parser/src/tests.rs3expression: "!false\n"4---5SOURCE_FILE@0..76  EXPR@0..67    EXPR_UNARY@0..68      NOT@0..1 "!"9      EXPR@1..610        EXPR_LITERAL@1..611          FALSE_KW@1..6 "false"12  WHITESPACE@6..7 "\n"
addedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unary_not_in_call.snapdiffbeforeafterboth
--- /dev/null
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unary_not_in_call.snap
@@ -0,0 +1,31 @@
+---
+source: crates/jrsonnet-rowan-parser/src/tests.rs
+expression: "std.assertEqual(!false, true)\n"
+---
+SOURCE_FILE@0..30
+  EXPR@0..29
+    EXPR_VAR@0..3
+      NAME@0..3
+        IDENT@0..3 "std"
+    SUFFIX_INDEX@3..15
+      DOT@3..4 "."
+      NAME@4..15
+        IDENT@4..15 "assertEqual"
+    SUFFIX_APPLY@15..29
+      ARGS_DESC@15..29
+        L_PAREN@15..16 "("
+        ARG@16..22
+          EXPR@16..22
+            EXPR_UNARY@16..22
+              NOT@16..17 "!"
+              EXPR@17..22
+                EXPR_LITERAL@17..22
+                  FALSE_KW@17..22 "false"
+        COMMA@22..23 ","
+        WHITESPACE@23..24 " "
+        ARG@24..28
+          EXPR@24..28
+            EXPR_LITERAL@24..28
+              TRUE_KW@24..28 "true"
+        R_PAREN@28..29 ")"
+  WHITESPACE@29..30 "\n"
modifiedcrates/jrsonnet-rowan-parser/src/tests.rsdiffbeforeafterboth
--- a/crates/jrsonnet-rowan-parser/src/tests.rs
+++ b/crates/jrsonnet-rowan-parser/src/tests.rs
@@ -216,6 +216,14 @@
 			unhide::: 3,
 		}
 	"#
+
+	unary_not => r#"
+		!false
+	"#
+
+	unary_not_in_call => r#"
+		std.assertEqual(!false, true)
+	"#
 );
 
 #[test]