git.delta.rocks / jrsonnet / refs/commits / e9c741d736e9

difftreelog

refactor AssertStmt to struct

zksvlxnsYaroslav Bolyukin2026-04-25parent: #6fbff53.patch.diff
in: master

6 files changed

modifiedcrates/jrsonnet-evaluator/src/evaluate/mod.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/evaluate/mod.rs
+++ b/crates/jrsonnet-evaluator/src/evaluate/mod.rs
@@ -454,19 +454,18 @@
 }
 
 pub fn evaluate_assert(ctx: Context, assertion: &AssertStmt) -> Result<()> {
-	let value = &assertion.0;
-	let msg = &assertion.1;
+	let AssertStmt { assertion, message } = assertion;
 	let assertion_result = in_frame(
-		CallLocation::new(&value.span),
+		CallLocation::new(&assertion.span),
 		|| "assertion condition".to_owned(),
-		|| bool::from_untyped(evaluate(ctx.clone(), value)?),
+		|| bool::from_untyped(evaluate(ctx.clone(), assertion)?),
 	)?;
 	if !assertion_result {
 		in_frame(
-			CallLocation::new(&value.span),
+			CallLocation::new(&assertion.span),
 			|| "assertion failure".to_owned(),
 			|| {
-				if let Some(msg) = msg {
+				if let Some(msg) = message {
 					bail!(AssertionFailed(evaluate(ctx, msg)?.to_string()?));
 				}
 				bail!(AssertionFailed(Val::Null.to_string()?));
modifiedcrates/jrsonnet-ir-parser/src/lib.rsdiffbeforeafterboth
--- a/crates/jrsonnet-ir-parser/src/lib.rs
+++ b/crates/jrsonnet-ir-parser/src/lib.rs
@@ -237,13 +237,13 @@
 
 fn assert_stmt(p: &mut Parser<'_>) -> Result<AssertStmt> {
 	p.eat(T![assert])?;
-	let cond = spanned(p, expr)?;
-	let msg = if p.try_eat(T![:]) {
-		Some(spanned(p, expr)?)
+	let assertion = spanned(p, expr)?;
+	let message = if p.try_eat(T![:]) {
+		Some(expr(p)?)
 	} else {
 		None
 	};
-	Ok(AssertStmt(cond, msg))
+	Ok(AssertStmt { assertion, message })
 }
 
 fn if_spec_data(p: &mut Parser<'_>) -> Result<IfSpecData> {
modifiedcrates/jrsonnet-ir-parser/src/snapshots/jrsonnet_ir_parser__tests__basic_test.snapdiffbeforeafterboth
before · crates/jrsonnet-ir-parser/src/snapshots/jrsonnet_ir_parser__tests__basic_test.snap
1---2source: crates/jrsonnet-ir-parser/src/lib.rs3expression: "format!(\"{v:#?}\")"4---5AssertExpr(6    AssertExpr {7        assert: AssertStmt(8            Index {9                indexable: Literal(10                    True,11                ),12                parts: [13                    IndexPart {14                        span: virtual:<test>:12-17,15                        value: Literal(16                            False,17                        ),18                    },19                ],20            } from virtual:<test>:7-18,21            Some(22                Literal(23                    False,24                ) from virtual:<test>:21-26,25            ),26        ),27        rest: Literal(28            True,29        ),30    },31)
after · crates/jrsonnet-ir-parser/src/snapshots/jrsonnet_ir_parser__tests__basic_test.snap
1---2source: crates/jrsonnet-ir-parser/src/lib.rs3expression: "format!(\"{v:#?}\")"4---5AssertExpr(6    AssertExpr {7        assert: AssertStmt {8            assertion: Index {9                indexable: Literal(10                    True,11                ),12                parts: [13                    IndexPart {14                        span: virtual:<test>:12-17,15                        value: Literal(16                            False,17                        ),18                    },19                ],20            } from virtual:<test>:7-18,21            message: Some(22                Literal(23                    False,24                ),25            ),26        },27        rest: Literal(28            True,29        ),30    },31)
modifiedcrates/jrsonnet-ir/src/expr.rsdiffbeforeafterboth
--- a/crates/jrsonnet-ir/src/expr.rs
+++ b/crates/jrsonnet-ir/src/expr.rs
@@ -38,7 +38,10 @@
 }
 
 #[derive(Debug, PartialEq, Acyclic)]
-pub struct AssertStmt(pub Spanned<Expr>, pub Option<Spanned<Expr>>);
+pub struct AssertStmt {
+	pub assertion: Spanned<Expr>,
+	pub message: Option<Expr>,
+}
 
 #[derive(Debug, PartialEq, Acyclic)]
 pub struct FieldMember {
modifiedcrates/jrsonnet-ir/src/visit.rsdiffbeforeafterboth
--- a/crates/jrsonnet-ir/src/visit.rs
+++ b/crates/jrsonnet-ir/src/visit.rs
@@ -157,10 +157,10 @@
 }
 
 pub fn visit_assert_stmt<V: Visitor>(v: &mut V, ass: &AssertStmt) {
-	let AssertStmt(cond, msg) = ass;
-	v.visit_expr(cond);
-	if let Some(msg) = msg {
-		v.visit_expr(msg);
+	let AssertStmt { assertion, message } = ass;
+	v.visit_expr(assertion);
+	if let Some(message) = message {
+		v.visit_expr(message);
 	}
 }
 pub fn visit_expr<V: Visitor>(v: &mut V, e: &Expr) {
modifiedcrates/jrsonnet-peg-parser/src/lib.rsdiffbeforeafterboth
--- a/crates/jrsonnet-peg-parser/src/lib.rs
+++ b/crates/jrsonnet-peg-parser/src/lib.rs
@@ -138,7 +138,7 @@
 			/ name:id() _ "(" _ params:params(s) _ ")" _ "=" _ value:expr(s) {BindSpec::Function{name, params, value: Rc::new(value)}}
 
 		pub rule assertion(s: &ParserSettings) -> AssertStmt
-			= keyword("assert") _ cond:spanned(<expr(s)>, s) msg:(_ ":" _ e:spanned(<expr(s)>, s) {e})? { AssertStmt(cond, msg) }
+			= keyword("assert") _ assertion:spanned(<expr(s)>, s) message:(_ ":" _ e:expr(s) {e})? { AssertStmt{assertion, message} }
 
 		pub rule whole_line() -> &'input str
 			= str:$((!['\n'][_])* "\n") {str}