difftreelog
refactor AssertStmt to struct
in: master
6 files changed
crates/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()?));
crates/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> {
crates/jrsonnet-ir-parser/src/snapshots/jrsonnet_ir_parser__tests__basic_test.snapdiffbeforeafterboth1---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)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)crates/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 {
crates/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) {
crates/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}