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

difftreelog

feat plus in object comprehensions

Yaroslav Bolyukin2021-08-20parent: #a6c5806.patch.diff
in: master
Fixes #60

3 files changed

modifiedcrates/jrsonnet-evaluator/src/evaluate/mod.rsdiffbeforeafterboth
431 builder431 builder
432 .member(n)432 .member(n)
433 .with_location(obj.value.1.clone())433 .with_location(obj.value.1.clone())
434 .with_add(obj.plus)
434 .bindable(Box::new(ObjCompBinding {435 .bindable(Box::new(ObjCompBinding {
435 context: ctx,436 context: ctx,
436 value: obj.value.clone(),437 value: obj.value.clone(),
modifiedcrates/jrsonnet-parser/src/expr.rsdiffbeforeafterboth
247pub struct ObjComp {247pub struct ObjComp {
248 pub pre_locals: Vec<BindSpec>,248 pub pre_locals: Vec<BindSpec>,
249 pub key: LocExpr,249 pub key: LocExpr,
250 pub plus: bool,
250 pub value: LocExpr,251 pub value: LocExpr,
251 pub post_locals: Vec<BindSpec>,252 pub post_locals: Vec<BindSpec>,
252 pub compspecs: Vec<CompSpec>,253 pub compspecs: Vec<CompSpec>,
modifiedcrates/jrsonnet-parser/src/lib.rsdiffbeforeafterboth
136 / 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::ObjBody
139 = 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,