From 2f713b3a3444f57c3379579899cdbe8c7c56b9e4 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Fri, 28 Nov 2014 13:36:46 -0600
Subject: [PATCH] Make evaluator compatible with re-evaluating symbolic
 expressions when subscript-by-getitem is disabled

---
 pymbolic/mapper/evaluator.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/pymbolic/mapper/evaluator.py b/pymbolic/mapper/evaluator.py
index 89270e0..aed8876 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)
-- 
GitLab