|
77 | 77 | import com.oracle.graal.python.builtins.objects.type.TpSlots;
|
78 | 78 | import com.oracle.graal.python.builtins.objects.type.slots.TpSlotGetAttr.GetAttrBuiltinNode;
|
79 | 79 | import com.oracle.graal.python.lib.PyDictGetItem;
|
| 80 | +import com.oracle.graal.python.lib.PyObjectCallMethodObjArgs; |
80 | 81 | import com.oracle.graal.python.lib.PyObjectIsTrueNode;
|
81 | 82 | import com.oracle.graal.python.lib.PyObjectLookupAttr;
|
82 | 83 | import com.oracle.graal.python.nodes.ErrorMessages;
|
|
97 | 98 | import com.oracle.graal.python.nodes.object.SetDictNode;
|
98 | 99 | import com.oracle.graal.python.nodes.util.CannotCastException;
|
99 | 100 | import com.oracle.graal.python.nodes.util.CastToTruffleStringNode;
|
| 101 | +import com.oracle.graal.python.runtime.PythonContext; |
100 | 102 | import com.oracle.graal.python.runtime.exception.PException;
|
101 | 103 | import com.oracle.graal.python.runtime.object.PFactory;
|
102 | 104 | import com.oracle.truffle.api.HostCompilerDirectives.InliningCutoff;
|
@@ -346,4 +348,19 @@ static Object set(Object self, Object value,
|
346 | 348 | return PNone.NONE;
|
347 | 349 | }
|
348 | 350 | }
|
| 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 | + } |
349 | 366 | }
|
0 commit comments