# doc ExprNode or None Doc string
# module_name string Name of defining module
- subexprs = ['name', 'bases', 'doc']
-
+ subexprs = ['bases', 'doc']
+
def analyse_types(self, env):
- self.name.analyse_types(env)
- self.name = self.name.coerce_to_pyobject(env)
+ self.cname = env.intern_identifier(self.name)
self.bases.analyse_types(env)
if self.doc:
self.doc.analyse_types(env)
self.type = py_object_type
self.is_temp = 1
env.use_utility_code(create_class_utility_code);
-
+
def generate_result_code(self, code):
if self.doc:
code.put_error_if_neg(self.pos,
self.result_code,
self.bases.py_result(),
self.dict.py_result(),
- self.name.py_result(),
+ self.cname,
self.module_name,
code.error_goto_if_null(self.result_code, self.pos)))
PyObject *py_modname;
PyObject *result = 0;
+ #if PY_MAJOR_VERSION < 3
py_modname = PyString_FromString(modname);
+ #else
+ py_modname = PyUnicode_FromString(modname);
+ #endif
if (!py_modname)
goto bad;
if (PyDict_SetItemString(dict, "__module__", py_modname) < 0)
doc_node = ExprNodes.StringNode(pos, value = doc)
else:
doc_node = None
- self.classobj = ExprNodes.ClassNode(pos,
- name = ExprNodes.StringNode(pos, value = name),
+ self.classobj = ExprNodes.ClassNode(pos, name = name,
bases = bases, dict = self.dict, doc = doc_node)
self.target = ExprNodes.NameNode(pos, name = name)