Commit c1b040db authored by memeplex's avatar memeplex

Allow cast(...) to python types.

parent 7db02782
...@@ -9625,8 +9625,7 @@ class TypecastNode(ExprNode): ...@@ -9625,8 +9625,7 @@ class TypecastNode(ExprNode):
return CoerceIntToBytesNode(self.operand, env) return CoerceIntToBytesNode(self.operand, env)
elif self.operand.type.can_coerce_to_pyobject(env): elif self.operand.type.can_coerce_to_pyobject(env):
self.result_ctype = py_object_type self.result_ctype = py_object_type
base_type = self.base_type.analyse(env) self.operand = self.operand.coerce_to(self.type, env)
self.operand = self.operand.coerce_to(base_type, env)
else: else:
if self.operand.type.is_ptr: if self.operand.type.is_ptr:
if not (self.operand.type.base_type.is_void or self.operand.type.base_type.is_struct): if not (self.operand.type.base_type.is_void or self.operand.type.base_type.is_struct):
......
...@@ -2707,7 +2707,8 @@ class TransformBuiltinMethods(EnvTransform): ...@@ -2707,7 +2707,8 @@ class TransformBuiltinMethods(EnvTransform):
else: else:
type = node.args[0].analyse_as_type(self.current_env()) type = node.args[0].analyse_as_type(self.current_env())
if type: if type:
node = ExprNodes.TypecastNode(node.function.pos, type=type, operand=node.args[1]) node = ExprNodes.TypecastNode(
node.function.pos, type=type, operand=node.args[1], typecheck=False)
else: else:
error(node.args[0].pos, "Not a type") error(node.args[0].pos, "Not a type")
elif function == u'sizeof': elif function == u'sizeof':
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment