# operand ExprNode
# base_type CBaseTypeNode
# declarator CDeclaratorNode
+ # typecheck boolean
#
# If used from a transform, one can if wanted specify the attribute
# "type" directly and leave base_type and declarator to None
else:
warning(self.pos, "No conversion from %s to %s, python object pointer used." % (self.type, self.operand.type))
elif from_py and to_py:
- if self.typecheck and self.type.is_extension_type:
+ if self.typecheck and self.type.is_pyobject:
self.operand = PyTypeTestNode(self.operand, self.type, env, notnone=True)
elif isinstance(self.operand, SliceIndexNode):
# This cast can influence the created type of string slices.
cdef int old_count = count
cdef Foo x = <Foo?>getFoo()
return count - old_count
+
+def test_builtin_typecheck_cast(maybe_list):
+ """
+ >>> test_builtin_typecheck_cast([])
+ []
+ >>> test_builtin_typecheck_cast({})
+ Traceback (most recent call last):
+ ...
+ TypeError: Expected list, got dict
+ """
+ return <list?>maybe_list