From 58d0138aa5ae26a09402b895ce0f1fabd3b9100d Mon Sep 17 00:00:00 2001 From: MaximeBarniaudy Date: Mon, 13 May 2024 14:35:43 +0900 Subject: [PATCH] Fix range access overshadowing key access --- minproto.leg | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/minproto.leg b/minproto.leg index ed4ccf5..1b0ba14 100644 --- a/minproto.leg +++ b/minproto.leg @@ -1352,16 +1352,16 @@ oop GetArray_eval(oop exp, oop env) default: fatal("[]: %s is not indexable", storeString(obj, 0)); } } - if (getType(ind) == Object) { - switch (getType(obj)) { - case String: { - int start = integerValue(eval(Object_get(ind, sym_start), env), "[..]"); - int end = integerValue(eval(Object_get(ind, sym_end ), env), "[..]"); - oop slice = newStringLen(String_aref(obj, start), end - start); - return slice; + if (getType(ind) == Object && Object_get(ind, prop_name) == Object_get(pRange, prop_name)) { + switch (getType(obj)) { + case String: { + int start = integerValue(eval(Object_get(ind, sym_start), env), "[..]"); + int end = integerValue(eval(Object_get(ind, sym_end ), env), "[..]"); + oop slice = newStringLen(String_aref(obj, start), end - start); + return slice; + } + default: fatal("[]: %s is not range - indexable", storeString(obj, 0)); } - default: fatal("[]: %s is not range - indexable", storeString(obj, 0)); - } } if (!is(Object, obj)) fatal("[]: %s is not an object", storeString(obj, 0)); return Object_getLocal(obj, ind);