Fix subclass specialization.
authorRobert Bradshaw <robertwb@math.washington.edu>
Thu, 11 Feb 2010 19:53:39 +0000 (11:53 -0800)
committerRobert Bradshaw <robertwb@math.washington.edu>
Thu, 11 Feb 2010 19:53:39 +0000 (11:53 -0800)
Cython/Compiler/PyrexTypes.py

index d2e1666304aa11b5004e3a3dad2728afd3868eba..96f1ee0cd47982dc1583db76f207f671a8402a47 100755 (executable)
@@ -1850,7 +1850,10 @@ class CppClassType(CType):
             return self.specializations[key]
         template_values = [t.specialize(values) for t in self.templates]
         specialized = self.specializations[key] = \
-            CppClassType(self.name, None, self.cname, self.base_classes, template_values, template_type=self)
+            CppClassType(self.name, None, self.cname, [], template_values, template_type=self)
+        # Need to do these *after* self.specializations[key] is set to 
+        # avoid infinite recursion on circular references.
+        specialized.base_classes = [b.specialize(values) for b in self.base_classes]
         specialized.scope = self.scope.specialize(values)
         return specialized