Skip to content

Commit befb1ef

Browse files
committed
Fix method __doc__ descriptor
1 parent b1d3eaa commit befb1ef

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/function/FunctionBuiltins.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageIteratorValue;
6262
import com.oracle.graal.python.builtins.objects.common.SequenceNodes.GetObjectArrayNode;
6363
import com.oracle.graal.python.builtins.objects.dict.PDict;
64+
import com.oracle.graal.python.builtins.objects.getsetdescriptor.DescriptorDeleteMarker;
6465
import com.oracle.graal.python.builtins.objects.method.PMethod;
6566
import com.oracle.graal.python.builtins.objects.str.PString;
6667
import com.oracle.graal.python.builtins.objects.str.StringNodes;
@@ -305,18 +306,24 @@ static Object setCode(PFunction self, PCode code,
305306
}
306307
}
307308

308-
@Builtin(name = J___DOC__, minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2, isGetter = true, isSetter = true)
309+
@Builtin(name = J___DOC__, minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2, isGetter = true, isSetter = true, allowsDelete = true)
309310
@GenerateNodeFactory
310311
abstract static class DocNode extends PythonBinaryBuiltinNode {
311312
@Specialization(guards = "isNoValue(none)")
312313
Object get(PFunction self, @SuppressWarnings("unused") Object none) {
313314
return self.getDoc();
314315
}
315316

316-
@Specialization(guards = "!isNoValue(value)")
317+
@Specialization(guards = {"!isNoValue(value)", "!isDeleteMarker(value)"})
317318
Object set(PFunction self, Object value) {
318319
self.setDoc(value);
319320
return PNone.NONE;
320321
}
322+
323+
@Specialization
324+
Object delete(PFunction self, @SuppressWarnings("unused") DescriptorDeleteMarker marker) {
325+
self.setDoc(PNone.NONE);
326+
return PNone.NONE;
327+
}
321328
}
322329
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/method/AbstractMethodBuiltins.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@
6464
import com.oracle.graal.python.nodes.PRaiseNode;
6565
import com.oracle.graal.python.nodes.attributes.GetAttributeNode;
6666
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromPythonObjectNode;
67-
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
6867
import com.oracle.graal.python.nodes.attributes.WriteAttributeToPythonObjectNode;
6968
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
7069
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
@@ -256,22 +255,16 @@ static Object getModule(@SuppressWarnings("unused") PMethod self, @SuppressWarni
256255
abstract static class DocNode extends PythonUnaryBuiltinNode {
257256
@Specialization
258257
static Object getDoc(PMethod self,
259-
@Shared @Cached ReadAttributeFromObjectNode readNode) {
260-
Object doc = readNode.execute(self.getFunction(), T___DOC__);
261-
if (doc == PNone.NO_VALUE) {
262-
return PNone.NONE;
263-
}
264-
return doc;
258+
@Bind("this") Node inliningTarget,
259+
@Shared @Cached PyObjectGetAttr getAttr) {
260+
return getAttr.execute(inliningTarget, self.getFunction(), T___DOC__);
265261
}
266262

267263
@Specialization
268264
static Object getDoc(PBuiltinMethod self,
269-
@Shared @Cached ReadAttributeFromObjectNode readNode) {
270-
Object doc = readNode.execute(self.getFunction(), T___DOC__);
271-
if (doc == PNone.NO_VALUE) {
272-
return PNone.NONE;
273-
}
274-
return doc;
265+
@Bind("this") Node inliningTarget,
266+
@Shared @Cached PyObjectGetAttr getAttr) {
267+
return getAttr.execute(inliningTarget, self.getFunction(), T___DOC__);
275268
}
276269
}
277270

0 commit comments

Comments
 (0)