Skip to content

Commit efcb768

Browse files
committed
[GR-53703] ObjectBuiltins.GetAttributeNode is a @slot, but AbstractCallMethodNode.getVarargs accepts only @Builtin-s.
PullRequest: graalpython/3316
2 parents ce34cad + c8d1443 commit efcb768

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/call/special/AbstractCallMethodNode.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import static com.oracle.graal.python.nodes.ErrorMessages.EXPECTED_D_ARGS;
4444

4545
import com.oracle.graal.python.PythonLanguage;
46+
import com.oracle.graal.python.annotations.Slot;
4647
import com.oracle.graal.python.annotations.Slot.SlotSignature;
4748
import com.oracle.graal.python.builtins.Builtin;
4849
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
@@ -234,8 +235,10 @@ PythonVarargsBuiltinNode getVarargs(VirtualFrame frame, Object func) {
234235
if (builtinNodeFactory == null) {
235236
return null; // see for example MethodDescriptorRoot and subclasses
236237
}
237-
assert builtinNodeFactory.getNodeClass().getAnnotationsByType(Builtin.class).length > 0 : "PBuiltinFunction " + builtinFunc + " is expected to have a Builtin annotated node.";
238-
if (builtinNodeFactory.getNodeClass().getAnnotationsByType(Builtin.class)[0].needsFrame() && frame == null) {
238+
Builtin[] builtinAnnotations = builtinNodeFactory.getNodeClass().getAnnotationsByType(Builtin.class);
239+
assert builtinAnnotations.length > 0 || builtinNodeFactory.getNodeClass().getAnnotationsByType(Slot.class).length > 0 : "PBuiltinFunction " + builtinFunc +
240+
" is expected to have a Builtin or Slot annotated node.";
241+
if (builtinAnnotations.length > 0 && builtinAnnotations[0].needsFrame() && frame == null) {
239242
return null;
240243
}
241244
if (PythonVarargsBuiltinNode.class.isAssignableFrom(builtinNodeFactory.getNodeClass())) {

0 commit comments

Comments
 (0)