Skip to content

Commit fb13c36

Browse files
committed
Add missing module.__repr__
1 parent 14d0ae7 commit fb13c36

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/Python3Core.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import static com.oracle.graal.python.nodes.BuiltinNames.T___BUILTINS__;
3838
import static com.oracle.graal.python.nodes.BuiltinNames.T___IMPORT__;
3939
import static com.oracle.graal.python.nodes.SpecialAttributeNames.T___PACKAGE__;
40-
import static com.oracle.graal.python.nodes.SpecialMethodNames.T___REPR__;
4140
import static com.oracle.graal.python.nodes.StringLiterals.J_PY_EXTENSION;
4241
import static com.oracle.graal.python.nodes.StringLiterals.T_DOT;
4342
import static com.oracle.graal.python.nodes.StringLiterals.T_GRAALPYTHON;
@@ -965,11 +964,6 @@ private void initializeImportlib() {
965964
importFunc = (PFunction) __import__;
966965
importlib = bootstrap;
967966

968-
PythonBuiltinClass moduleType = lookupType(PythonBuiltinClassType.PythonModule);
969-
writeNode.execute(moduleType, T___REPR__, readNode.execute(bootstrap, toTruffleStringUncached("_module_repr")));
970-
971-
SpecialMethodSlot.reinitializeSpecialMethodSlots(moduleType, getLanguage());
972-
973967
// see CPython's init_importlib_external
974968
callNode.execute(null, null, bootstrap, toTruffleStringUncached("_install_external_importers"));
975969
if (!PythonImageBuildOptions.WITHOUT_COMPRESSION_LIBRARIES) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/module/ModuleBuiltins.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
import com.oracle.graal.python.builtins.objects.type.TpSlots;
7878
import com.oracle.graal.python.builtins.objects.type.slots.TpSlotGetAttr.GetAttrBuiltinNode;
7979
import com.oracle.graal.python.lib.PyDictGetItem;
80+
import com.oracle.graal.python.lib.PyObjectCallMethodObjArgs;
8081
import com.oracle.graal.python.lib.PyObjectIsTrueNode;
8182
import com.oracle.graal.python.lib.PyObjectLookupAttr;
8283
import com.oracle.graal.python.nodes.ErrorMessages;
@@ -97,6 +98,7 @@
9798
import com.oracle.graal.python.nodes.object.SetDictNode;
9899
import com.oracle.graal.python.nodes.util.CannotCastException;
99100
import com.oracle.graal.python.nodes.util.CastToTruffleStringNode;
101+
import com.oracle.graal.python.runtime.PythonContext;
100102
import com.oracle.graal.python.runtime.exception.PException;
101103
import com.oracle.graal.python.runtime.object.PFactory;
102104
import com.oracle.truffle.api.HostCompilerDirectives.InliningCutoff;
@@ -346,4 +348,19 @@ static Object set(Object self, Object value,
346348
return PNone.NONE;
347349
}
348350
}
351+
352+
@Slot(value = SlotKind.tp_repr, isComplex = true)
353+
@GenerateNodeFactory
354+
abstract static class ReprNode extends PythonUnaryBuiltinNode {
355+
356+
public static final TruffleString T__MODULE_REPR = tsLiteral("_module_repr");
357+
358+
@Specialization
359+
Object repr(VirtualFrame frame, Object self,
360+
@Bind Node inliningTarget,
361+
@Bind PythonContext context,
362+
@Cached PyObjectCallMethodObjArgs callMethod) {
363+
return callMethod.execute(frame, inliningTarget, context.getImportlib(), T__MODULE_REPR, self);
364+
}
365+
}
349366
}

0 commit comments

Comments
 (0)