diff --git a/src/engine.rs b/src/engine.rs index 3b740b71..0fdd0467 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -1064,7 +1064,7 @@ impl Engine { // xxx.prop[expr] | xxx.prop.expr Expr::Index(x) | Expr::Dot(x) => { let (prop, expr, pos) = x.as_ref(); - let is_idx = matches!(expr, Expr::Index(_)); + let is_idx = matches!(rhs, Expr::Index(_)); let args = &mut [obj, &mut Default::default()]; let (mut val, updated) = if let Expr::Property(p) = prop { @@ -1102,7 +1102,7 @@ impl Engine { } // Syntax error _ => Err(Box::new(EvalAltResult::ErrorDotExpr( - "".into(), + format!("{:?}", rhs), rhs.position(), ))), } diff --git a/tests/maps.rs b/tests/maps.rs index 64c5a4c2..a7aef8dd 100644 --- a/tests/maps.rs +++ b/tests/maps.rs @@ -21,6 +21,10 @@ fn test_map_indexing() -> Result<(), Box> { )?, 'o' ); + assert_eq!( + engine.eval::(r#"let a = [#{s:"hello"}]; a[0].s[2] = 'X'; a[0].s"#)?, + "heXlo" + ); } assert_eq!(