From 279df04875895b81f69befb72bfe3ab3732f0ee0 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 b242601..6ad8591 100644 --- a/minproto.leg +++ b/minproto.leg @@ -1622,16 +1622,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);