diff --git a/pymbolic/mapper/evaluator.py b/pymbolic/mapper/evaluator.py index 89270e081106c7045b11c34cc2379291971a3475..aed88761a7ae88b0156bdee3f27597c72cc42972 100644 --- a/pymbolic/mapper/evaluator.py +++ b/pymbolic/mapper/evaluator.py @@ -76,7 +76,13 @@ class EvaluationMapper(RecursiveMapper, CSECachingMapperMixin): return self.rec(expr.function)(*args, **kwargs) def map_subscript(self, expr): - return self.rec(expr.aggregate)[self.rec(expr.index)] + rec_result = self.rec(expr.aggregate) + + from pymbolic.primitives import Expression + if isinstance(rec_result, Expression): + return rec_result.index(self.rec(expr.index)) + else: + return rec_result[self.rec(expr.index)] def map_lookup(self, expr): return getattr(self.rec(expr.aggregate), expr.name)