|
43 | 43 | import static com.oracle.graal.python.nodes.SpecialMethodNames.J___CONTAINS__;
|
44 | 44 | import static com.oracle.graal.python.nodes.SpecialMethodNames.T___CONTAINS__;
|
45 | 45 |
|
| 46 | +import com.oracle.graal.python.builtins.PythonBuiltinClassType; |
| 47 | +import com.oracle.graal.python.builtins.objects.PNone; |
46 | 48 | import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.CheckInquiryResultNode;
|
47 | 49 | import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ExternalFunctionInvokeNode;
|
48 | 50 | import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.PExternalFunctionWrapper;
|
|
54 | 56 | import com.oracle.graal.python.builtins.objects.type.slots.TpSlot.TpSlotPythonSingle;
|
55 | 57 | import com.oracle.graal.python.builtins.objects.type.slots.TpSlotBinaryFunc.TpSlotBinaryFuncBuiltin;
|
56 | 58 | import com.oracle.graal.python.lib.PyObjectIsTrueNode;
|
| 59 | +import com.oracle.graal.python.nodes.ErrorMessages; |
| 60 | +import com.oracle.graal.python.nodes.PRaiseNode; |
57 | 61 | import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
|
58 | 62 | import com.oracle.graal.python.runtime.ExecutionContext.CallContext;
|
59 | 63 | import com.oracle.graal.python.runtime.PythonContext;
|
@@ -114,7 +118,11 @@ static boolean callCachedBuiltin(VirtualFrame frame, @SuppressWarnings("unused")
|
114 | 118 | @Specialization
|
115 | 119 | static boolean callPython(VirtualFrame frame, Node inliningTarget, TpSlotPythonSingle slot, Object self, Object arg,
|
116 | 120 | @Cached BinaryPythonSlotDispatcherNode dispatcherNode,
|
117 |
| - @Cached PyObjectIsTrueNode isTrueNode) { |
| 121 | + @Cached PyObjectIsTrueNode isTrueNode, |
| 122 | + @Cached PRaiseNode raiseNode) { |
| 123 | + if (slot.getCallable() == PNone.NONE) { |
| 124 | + throw raiseNode.raise(inliningTarget, PythonBuiltinClassType.TypeError, ErrorMessages.IS_NOT_A_CONTAINER, self); |
| 125 | + } |
118 | 126 | Object result = dispatcherNode.execute(frame, inliningTarget, slot.getCallable(), slot.getType(), self, arg);
|
119 | 127 | return isTrueNode.execute(frame, result);
|
120 | 128 | }
|
|
0 commit comments