difftreelog
feat plus in object comprehensions
in: master
Fixes #60
3 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
@@ -431,6 +431,7 @@
builder
.member(n)
.with_location(obj.value.1.clone())
+ .with_add(obj.plus)
.bindable(Box::new(ObjCompBinding {
context: ctx,
value: obj.value.clone(),
crates/jrsonnet-parser/src/expr.rsdiffbeforeafterboth--- a/crates/jrsonnet-parser/src/expr.rs
+++ b/crates/jrsonnet-parser/src/expr.rs
@@ -247,6 +247,7 @@
pub struct ObjComp {
pub pre_locals: Vec<BindSpec>,
pub key: LocExpr,
+ pub plus: bool,
pub value: LocExpr,
pub post_locals: Vec<BindSpec>,
pub compspecs: Vec<CompSpec>,
crates/jrsonnet-parser/src/lib.rsdiffbeforeafterboth136 / assertion:assertion(s) {expr::Member::AssertStmt(assertion)}136 / assertion:assertion(s) {expr::Member::AssertStmt(assertion)}137 / field:field(s) {expr::Member::Field(field)}137 / field:field(s) {expr::Member::Field(field)}138 pub rule objinside(s: &ParserSettings) -> expr::ObjBody138 pub rule objinside(s: &ParserSettings) -> expr::ObjBody139 = pre_locals:(b: obj_local(s) comma() {b})* "[" _ key:expr(s) _ "]" _ ":" _ value:expr(s) post_locals:(comma() b:obj_local(s) {b})* _ forspec:forspec(s) others:(_ rest:compspec(s) {rest})? {139 = pre_locals:(b: obj_local(s) comma() {b})* "[" _ key:expr(s) _ "]" _ plus:"+"? _ ":" _ value:expr(s) post_locals:(comma() b:obj_local(s) {b})* _ forspec:forspec(s) others:(_ rest:compspec(s) {rest})? {140 let mut compspecs = vec![CompSpec::ForSpec(forspec)];140 let mut compspecs = vec![CompSpec::ForSpec(forspec)];141 compspecs.extend(others.unwrap_or_default());141 compspecs.extend(others.unwrap_or_default());142 expr::ObjBody::ObjComp(expr::ObjComp{142 expr::ObjBody::ObjComp(expr::ObjComp{143 pre_locals,143 pre_locals,144 key,144 key,145 plus: plus.is_some(),145 value,146 value,146 post_locals,147 post_locals,147 compspecs,148 compspecs,