From 66e361167d34d5b8ab7efc3141a7412c3a5d7db8 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sun, 12 Apr 2020 20:26:49 -0300 Subject: [PATCH] didn't treat appending to containers the same way for variables as well as for container lvalues. Fixes #209 --- src/main/java/carpet/script/Expression.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/script/Expression.java b/src/main/java/carpet/script/Expression.java index cfb3380b..f03e4855 100644 --- a/src/main/java/carpet/script/Expression.java +++ b/src/main/java/carpet/script/Expression.java @@ -657,9 +657,18 @@ public class Expression throw new InternalExpressionException("Failed to resolve left hand side of the += operation"); } Value key = ((LContainerValue) v1).getAddress(); - Value res = cvi.get(key).add(v2); - cvi.put(key, res); - return (cc, tt) -> res; + Value value = cvi.get(key); + if (value instanceof ListValue || value instanceof MapValue) + { + ((AbstractListValue) value).append(v2); + return (cc, tt) -> value; + } + else + { + Value res = value.add(v2); + cvi.put(key, res); + return (cc, tt) -> res; + } } v1.assertAssignable(); String varname = v1.getVariable();