|
36 | 36 | import java.util.Map.Entry;
|
37 | 37 | import java.util.function.BiConsumer;
|
38 | 38 |
|
| 39 | +import com.oracle.graal.python.builtins.objects.PNone; |
39 | 40 | import com.oracle.graal.python.builtins.objects.function.Arity;
|
40 | 41 | import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
|
41 | 42 | import com.oracle.graal.python.builtins.objects.function.PythonCallable;
|
@@ -72,17 +73,18 @@ public void initialize(PythonCore core) {
|
72 | 73 | }
|
73 | 74 | RootCallTarget callTarget = core.getLanguage().builtinCallTargetCache.computeIfAbsent(factory.getNodeClass(),
|
74 | 75 | (b) -> Truffle.getRuntime().createCallTarget(new BuiltinFunctionRootNode(core.getLanguage(), builtin, factory, declaresExplicitSelf)));
|
| 76 | + Object builtinDoc = builtin.doc().isEmpty() ? PNone.NONE : builtin.doc(); |
75 | 77 | if (builtin.constructsClass().length > 0) {
|
76 | 78 | assert !builtin.isGetter() && !builtin.isSetter() && !builtin.isClassmethod() && !builtin.isStaticmethod();
|
77 | 79 | PBuiltinFunction newFunc = core.factory().createBuiltinFunction(__NEW__, null, createArity(builtin, declaresExplicitSelf), callTarget);
|
78 | 80 | for (PythonBuiltinClassType type : builtin.constructsClass()) {
|
79 | 81 | PythonBuiltinClass builtinClass = core.lookupType(type);
|
80 | 82 | builtinClass.setAttributeUnsafe(__NEW__, newFunc);
|
81 |
| - builtinClass.setAttribute(__DOC__, builtin.doc()); |
| 83 | + builtinClass.setAttribute(__DOC__, builtinDoc); |
82 | 84 | }
|
83 | 85 | } else {
|
84 | 86 | PBuiltinFunction function = core.factory().createBuiltinFunction(builtin.name(), null, createArity(builtin, declaresExplicitSelf), callTarget);
|
85 |
| - function.setAttribute(__DOC__, builtin.doc()); |
| 87 | + function.setAttribute(__DOC__, builtinDoc); |
86 | 88 | BoundBuiltinCallable<?> callable = function;
|
87 | 89 | if (builtin.isGetter() || builtin.isSetter()) {
|
88 | 90 | assert !builtin.isClassmethod() && !builtin.isStaticmethod();
|
|
0 commit comments