From 7d58828a10e0f687df077048176cbf027122ab97 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 29 Mar 2012 01:12:00 -0400
Subject: [PATCH] Fix wrap_in_cse() for specialized CSEs.

---
 pymbolic/primitives.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/pymbolic/primitives.py b/pymbolic/primitives.py
index dcfa09f..b68fa14 100644
--- a/pymbolic/primitives.py
+++ b/pymbolic/primitives.py
@@ -686,6 +686,13 @@ class CommonSubexpression(Expression):
         return (self.child, self.prefix)
 
     def get_extra_properties(self):
+        """Return a dictionary of extra kwargs to be passed to the
+        constructor from the identity mapper.
+
+        This allows derived classes to exist without having to
+        extend every mapper that processes them.
+        """
+
         return {}
 
     mapper_method = intern("map_common_subexpression")
@@ -875,7 +882,7 @@ def wrap_in_cse(expr, prefix=None):
     if isinstance(expr, CommonSubexpression):
         if prefix is None:
             return expr
-        if expr.prefix is None:
+        if expr.prefix is None and type(expr) is CommonSubexpression:
             return CommonSubexpression(expr.child, prefix)
 
         # existing prefix wins
-- 
GitLab