From 05ab27d3e7ea2b24eecaaa942ec545f713fbe6ec Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 29 Mar 2012 01:11:14 -0400
Subject: [PATCH] Print specialized CSEs so they can be distinguished.

---
 pymbolic/mapper/__init__.py    | 2 +-
 pymbolic/mapper/stringifier.py | 9 ++++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/pymbolic/mapper/__init__.py b/pymbolic/mapper/__init__.py
index 9703993..a88e861 100644
--- a/pymbolic/mapper/__init__.py
+++ b/pymbolic/mapper/__init__.py
@@ -263,7 +263,7 @@ class IdentityMapperBase(object):
         if is_zero(result):
             return 0
 
-        return expr.__class__(
+        return type(expr)(
                 result,
                 expr.prefix,
                 **expr.get_extra_properties())
diff --git a/pymbolic/mapper/stringifier.py b/pymbolic/mapper/stringifier.py
index 801bbd4..554ec80 100644
--- a/pymbolic/mapper/stringifier.py
+++ b/pymbolic/mapper/stringifier.py
@@ -186,7 +186,14 @@ class StringifyMapper(pymbolic.mapper.RecursiveMapper):
                 return "array(\n%s)" % "".join(lines)
 
     def map_common_subexpression(self, expr, enclosing_prec):
-        return self.format("CSE(%s)", self.rec(expr.child, PREC_NONE))
+        from pymbolic.primitives import CommonSubexpression
+        if type(expr) is CommonSubexpression:
+            type_name = "CSE"
+        else:
+            type_name = type(expr).__name__
+
+        return self.format("%s(%s)",
+                type_name, self.rec(expr.child, PREC_NONE))
 
     def map_if_positive(self, expr, enclosing_prec):
         return "If(%s > 0, %s, %s)" % (
-- 
GitLab