Skip to content

Commit 20424bf

Browse files
committed
[GH-27] PythonBuiltinClass is not PythonCallable
PullRequest: graalpython/308
2 parents 3530f2f + 85c95b2 commit 20424bf

File tree

3 files changed

+7
-23
lines changed

3 files changed

+7
-23
lines changed

graalpython/com.oracle.graal.python.test/src/com/oracle/graal/python/test/runtime/PythonModuleTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@
3737
import com.oracle.graal.python.PythonLanguage;
3838
import com.oracle.graal.python.builtins.objects.function.PArguments;
3939
import com.oracle.graal.python.builtins.objects.function.PKeyword;
40+
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
4041
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
4142
import com.oracle.graal.python.builtins.objects.module.PythonModule;
4243
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
4344
import com.oracle.graal.python.nodes.BuiltinNames;
45+
import com.oracle.graal.python.nodes.SpecialAttributeNames;
4446
import com.oracle.graal.python.nodes.call.InvokeNode;
4547
import com.oracle.graal.python.runtime.PythonContext;
4648
import com.oracle.graal.python.test.PythonTests;
@@ -75,7 +77,8 @@ public void builtinsMinTest() {
7577
public void builtinsIntTest() {
7678
final PythonModule builtins = context.getBuiltins();
7779
PythonBuiltinClass intClass = (PythonBuiltinClass) builtins.getAttribute(BuiltinNames.INT);
78-
Object returnValue = InvokeNode.create(intClass).execute(null, createWithUserArguments(intClass, "42"), PKeyword.EMPTY_KEYWORDS);
80+
PythonCallable intNew = (PythonCallable) intClass.getAttribute(SpecialAttributeNames.__NEW__);
81+
Object returnValue = InvokeNode.create(intNew).execute(null, createWithUserArguments(intClass, "42"), PKeyword.EMPTY_KEYWORDS);
7982
assertEquals(42, returnValue);
8083
}
8184

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/PythonBuiltinClass.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,17 @@
2525
*/
2626
package com.oracle.graal.python.builtins.objects.type;
2727

28-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEW__;
2928
import static com.oracle.graal.python.runtime.exception.PythonErrorType.TypeError;
3029

3130
import com.oracle.graal.python.PythonLanguage;
3231
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
33-
import com.oracle.graal.python.builtins.objects.function.Arity;
34-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
3532
import com.oracle.truffle.api.CompilerAsserts;
3633
import com.oracle.truffle.api.object.HiddenKey;
3734

3835
/**
3936
* A Python built-in class that is immutable.
4037
*/
41-
public final class PythonBuiltinClass extends PythonClass implements PythonCallable {
38+
public final class PythonBuiltinClass extends PythonClass {
4239
private final PythonBuiltinClassType type;
4340

4441
public PythonBuiltinClass(PythonBuiltinClassType builtinClass, PythonClass base) {
@@ -64,12 +61,6 @@ public void setAttributeUnsafe(Object name, Object value) {
6461
super.setAttribute(name, value);
6562
}
6663

67-
@Override
68-
public Arity getArity() {
69-
PythonCallable init = (PythonCallable) getAttribute(__NEW__);
70-
return init.getArity();
71-
}
72-
7364
public PythonBuiltinClassType getType() {
7465
return type;
7566
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/call/InvokeNode.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
*/
2626
package com.oracle.graal.python.nodes.call;
2727

28-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEW__;
29-
3028
import com.oracle.graal.python.PythonLanguage;
3129
import com.oracle.graal.python.builtins.objects.cell.PCell;
3230
import com.oracle.graal.python.builtins.objects.function.Arity;
@@ -38,7 +36,6 @@
3836
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
3937
import com.oracle.graal.python.builtins.objects.method.PMethod;
4038
import com.oracle.graal.python.builtins.objects.object.PythonObject;
41-
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
4239
import com.oracle.graal.python.nodes.PRootNode;
4340
import com.oracle.graal.python.nodes.argument.ApplyKeywordsNode;
4441
import com.oracle.graal.python.nodes.argument.ArityCheckNode;
@@ -82,9 +79,6 @@ protected static RootCallTarget getCallTarget(PythonCallable callee) {
8279
PBuiltinMethod method = (PBuiltinMethod) callee;
8380
PBuiltinFunction internalFunc = method.getFunction();
8481
callTarget = internalFunc.getCallTarget();
85-
} else if (actualCallee instanceof PythonBuiltinClass) {
86-
actualCallee = (PythonCallable) ((PythonBuiltinClass) actualCallee).getAttribute(__NEW__);
87-
callTarget = actualCallee.getCallTarget();
8882
} else {
8983
throw new UnsupportedOperationException("Unsupported callee type " + actualCallee);
9084
}
@@ -113,15 +107,11 @@ protected final void optionallySetClassBodySpecial(Object[] arguments, CallTarge
113107

114108
@TruffleBoundary
115109
protected static Arity getArity(PythonCallable callee) {
116-
if (callee instanceof PythonBuiltinClass) {
117-
return ((PythonCallable) ((PythonBuiltinClass) callee).getAttribute(__NEW__)).getArity();
118-
} else {
119-
return callee.getArity();
120-
}
110+
return callee.getArity();
121111
}
122112

123113
protected static boolean isBuiltin(PythonCallable callee) {
124-
return callee instanceof PBuiltinFunction || callee instanceof PBuiltinMethod || callee instanceof PythonBuiltinClass;
114+
return callee instanceof PBuiltinFunction || callee instanceof PBuiltinMethod;
125115
}
126116
}
127117

0 commit comments

Comments
 (0)