|
47 | 47 | import static com.oracle.graal.python.nodes.SpecialMethodNames.__SETATTR__;
|
48 | 48 | import static com.oracle.graal.python.nodes.SpecialMethodNames.__SET__;
|
49 | 49 | import static com.oracle.graal.python.nodes.SpecialMethodNames.__STR__;
|
| 50 | +import static com.oracle.graal.python.nodes.SpecialMethodNames.__SUBCLASSHOOK__; |
50 | 51 | import static com.oracle.graal.python.runtime.exception.PythonErrorType.AttributeError;
|
51 | 52 | import static com.oracle.graal.python.runtime.exception.PythonErrorType.TypeError;
|
52 | 53 |
|
|
63 | 64 | import com.oracle.graal.python.builtins.objects.PNone;
|
64 | 65 | import com.oracle.graal.python.builtins.objects.PNotImplemented;
|
65 | 66 | import com.oracle.graal.python.builtins.objects.PythonAbstractObject;
|
66 |
| -import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes; |
67 | 67 | import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
|
| 68 | +import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes; |
68 | 69 | import com.oracle.graal.python.builtins.objects.dict.PDict;
|
69 | 70 | import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
|
70 | 71 | import com.oracle.graal.python.builtins.objects.function.PKeyword;
|
71 |
| -import com.oracle.graal.python.builtins.objects.object.ObjectBuiltinsClinicProviders.FormatNodeClinicProviderGen; |
72 | 72 | import com.oracle.graal.python.builtins.objects.getsetdescriptor.DescriptorDeleteMarker;
|
73 | 73 | import com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptorTypeBuiltins.DescrDeleteNode;
|
74 | 74 | import com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptorTypeBuiltins.DescrGetNode;
|
75 | 75 | import com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptorTypeBuiltins.DescrSetNode;
|
| 76 | +import com.oracle.graal.python.builtins.objects.object.ObjectBuiltinsClinicProviders.FormatNodeClinicProviderGen; |
76 | 77 | import com.oracle.graal.python.builtins.objects.object.ObjectBuiltinsFactory.GetAttributeNodeFactory;
|
77 | 78 | import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
|
78 | 79 | import com.oracle.graal.python.builtins.objects.type.TypeNodes.CheckCompatibleForAssigmentNode;
|
@@ -779,4 +780,19 @@ PNone initSubclass(@SuppressWarnings("unused") Object self) {
|
779 | 780 | return PNone.NONE;
|
780 | 781 | }
|
781 | 782 | }
|
| 783 | + |
| 784 | + @Builtin(name = __SUBCLASSHOOK__, minNumOfPositionalArgs = 1, declaresExplicitSelf = true, takesVarArgs = true, takesVarKeywordArgs = true, isClassmethod = true) |
| 785 | + @GenerateNodeFactory |
| 786 | + abstract static class SubclassHookNode extends PythonVarargsBuiltinNode { |
| 787 | + @Specialization |
| 788 | + @SuppressWarnings("unused") |
| 789 | + static Object notImplemented(Object self, Object[] arguments, PKeyword[] keywords) { |
| 790 | + return PNotImplemented.NOT_IMPLEMENTED; |
| 791 | + } |
| 792 | + |
| 793 | + @Override |
| 794 | + public Object varArgExecute(VirtualFrame frame, Object self, Object[] arguments, PKeyword[] keywords) throws VarargsBuiltinDirectInvocationNotSupported { |
| 795 | + return PNotImplemented.NOT_IMPLEMENTED; |
| 796 | + } |
| 797 | + } |
782 | 798 | }
|
0 commit comments