diff --git a/src/com/annimon/ownlang/parser/ast/BinaryExpression.java b/src/com/annimon/ownlang/parser/ast/BinaryExpression.java index 085d518..1266f02 100644 --- a/src/com/annimon/ownlang/parser/ast/BinaryExpression.java +++ b/src/com/annimon/ownlang/parser/ast/BinaryExpression.java @@ -88,13 +88,13 @@ public final class BinaryExpression implements Expression { private Value add(Value value1, Value value2) { switch (value1.type()) { case Types.NUMBER: return add((NumberValue) value1, value2); - case Types.STRING: return new StringValue(value1.asString() + value2.asString()); case Types.ARRAY: return ArrayValue.add((ArrayValue) value1, value2); case Types.MAP: if (value2.type() != Types.MAP) throw new TypeException("Cannot merge non map value to map"); return MapValue.merge((MapValue) value1, (MapValue) value2); case Types.FUNCTION: /* TODO: combining functions */ + case Types.STRING: default: // Concatenation strings return new StringValue(value1.asString() + value2.asString()); diff --git a/src/com/annimon/ownlang/parser/ast/ContainerAccessExpression.java b/src/com/annimon/ownlang/parser/ast/ContainerAccessExpression.java index 0f06adf..5b13cb1 100644 --- a/src/com/annimon/ownlang/parser/ast/ContainerAccessExpression.java +++ b/src/com/annimon/ownlang/parser/ast/ContainerAccessExpression.java @@ -89,13 +89,6 @@ public final class ContainerAccessExpression implements Expression, Accessible { return indices.get(index).eval(); } - private ArrayValue consumeArray(Value value) { - if (value.type() != Types.ARRAY) { - throw new TypeException("Array expected"); - } - return (ArrayValue) value; - } - public MapValue consumeMap(Value value) { if (value.type() != Types.MAP) { throw new TypeException("Map expected"); diff --git a/src/com/annimon/ownlang/parser/ast/MapExpression.java b/src/com/annimon/ownlang/parser/ast/MapExpression.java index 95e7785..0442866 100644 --- a/src/com/annimon/ownlang/parser/ast/MapExpression.java +++ b/src/com/annimon/ownlang/parser/ast/MapExpression.java @@ -20,8 +20,8 @@ public final class MapExpression implements Expression { public Value eval() { final int size = elements.size(); final MapValue map = new MapValue(size); - for (Expression key : elements.keySet()) { - map.set(key.eval(), elements.get(key).eval()); + for (Map.Entry entry : elements.entrySet()) { + map.set(entry.getKey().eval(), entry.getValue().eval()); } return map; }