Skip to content

Commit ef1915f

Browse files
committed
fix issubclass for when __subclasscheck__ is defined on non-types
1 parent 073911d commit ef1915f

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BuiltinFunctions.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,17 +1452,16 @@ public IsSubClassNode createRecursive(byte newDepth) {
14521452
return BuiltinFunctionsFactory.IsSubClassNodeFactory.create(newDepth);
14531453
}
14541454

1455-
private static boolean isSubclassCheckInternal(VirtualFrame frame, Object derived, Object cls, LookupAndCallBinaryNode subclassCheckNode, CoerceToBooleanNode castToBooleanNode) {
1456-
Object instanceCheckResult = subclassCheckNode.executeObject(frame, cls, derived);
1457-
return instanceCheckResult != NOT_IMPLEMENTED && castToBooleanNode.executeBoolean(frame, instanceCheckResult);
1458-
}
1459-
14601455
@Specialization(guards = "!isPTuple(cls)")
14611456
static boolean isSubclass(VirtualFrame frame, Object derived, Object cls,
14621457
@Cached("create(__SUBCLASSCHECK__)") LookupAndCallBinaryNode subclassCheckNode,
14631458
@Cached("createIfTrueNode()") CoerceToBooleanNode castToBooleanNode,
14641459
@Cached IsSubtypeNode isSubtypeNode) {
1465-
return isSubclassCheckInternal(frame, derived, cls, subclassCheckNode, castToBooleanNode) || isSubtypeNode.execute(frame, derived, cls);
1460+
Object instanceCheckResult = subclassCheckNode.executeObject(frame, cls, derived);
1461+
if (instanceCheckResult != NOT_IMPLEMENTED) {
1462+
return castToBooleanNode.executeBoolean(frame, instanceCheckResult);
1463+
}
1464+
return isSubtypeNode.execute(frame, derived, cls);
14661465
}
14671466
}
14681467

0 commit comments

Comments
 (0)