Skip to content

Commit c844494

Browse files
committed
[GR-31373][GR-31409] Fix unsupported operand errors
PullRequest: graalpython/1804
2 parents 4a93c46 + 53c1e63 commit c844494

File tree

5 files changed

+27
-2
lines changed

5 files changed

+27
-2
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/dict/DictViewBuiltins.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,11 @@
5252
import static com.oracle.graal.python.nodes.SpecialMethodNames.__LT__;
5353
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NE__;
5454
import static com.oracle.graal.python.nodes.SpecialMethodNames.__OR__;
55+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RAND__;
5556
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REVERSED__;
57+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ROR__;
58+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RSUB__;
59+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RXOR__;
5660
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SUB__;
5761
import static com.oracle.graal.python.nodes.SpecialMethodNames.__XOR__;
5862

@@ -408,6 +412,7 @@ public Object notEqual(VirtualFrame frame, Object self, Object other) {
408412
}
409413

410414
@Builtin(name = __SUB__, minNumOfPositionalArgs = 2)
415+
@Builtin(name = __RSUB__, minNumOfPositionalArgs = 2, reverseOperation = true)
411416
@GenerateNodeFactory
412417
abstract static class SubNode extends PythonBinaryBuiltinNode {
413418

@@ -481,6 +486,7 @@ PBaseSet doNotIterable(VirtualFrame frame, PDictView self, Object other,
481486
}
482487

483488
@Builtin(name = __AND__, minNumOfPositionalArgs = 2)
489+
@Builtin(name = __RAND__, minNumOfPositionalArgs = 2)
484490
@GenerateNodeFactory
485491
abstract static class AndNode extends PythonBinaryBuiltinNode {
486492

@@ -563,6 +569,7 @@ PBaseSet doNotIterable(VirtualFrame frame, PDictView self, Object other,
563569
}
564570

565571
@Builtin(name = __OR__, minNumOfPositionalArgs = 2)
572+
@Builtin(name = __ROR__, minNumOfPositionalArgs = 2)
566573
@GenerateNodeFactory
567574
public abstract static class OrNode extends PythonBinaryBuiltinNode {
568575

@@ -623,6 +630,7 @@ PBaseSet doNotIterable(@SuppressWarnings("unused") VirtualFrame frame, @Suppress
623630
}
624631

625632
@Builtin(name = __XOR__, minNumOfPositionalArgs = 2)
633+
@Builtin(name = __RXOR__, minNumOfPositionalArgs = 2)
626634
@GenerateNodeFactory
627635
public abstract static class XorNode extends PythonBinaryBuiltinNode {
628636

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/set/FrozenSetBuiltins.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
import static com.oracle.graal.python.nodes.SpecialMethodNames.__AND__;
2929
import static com.oracle.graal.python.nodes.SpecialMethodNames.__HASH__;
3030
import static com.oracle.graal.python.nodes.SpecialMethodNames.__OR__;
31+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RAND__;
32+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ROR__;
33+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RSUB__;
34+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RXOR__;
3135
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SUB__;
3236
import static com.oracle.graal.python.nodes.SpecialMethodNames.__XOR__;
3337

@@ -90,6 +94,7 @@ public PFrozenSet subFrozensetIdentity(@SuppressWarnings("unused") VirtualFrame
9094
}
9195

9296
@Builtin(name = __AND__, minNumOfPositionalArgs = 2)
97+
@Builtin(name = __RAND__, minNumOfPositionalArgs = 2)
9398
@GenerateNodeFactory
9499
@ImportStatic(PGuards.class)
95100
abstract static class AndNode extends PythonBinaryBuiltinNode {
@@ -162,6 +167,7 @@ PFrozenSet doSet(@SuppressWarnings("unused") VirtualFrame frame, PFrozenSet self
162167
}
163168

164169
@Builtin(name = __OR__, minNumOfPositionalArgs = 2)
170+
@Builtin(name = __ROR__, minNumOfPositionalArgs = 2)
165171
@GenerateNodeFactory
166172
@ImportStatic(PGuards.class)
167173
abstract static class OrNode extends PythonBinaryBuiltinNode {
@@ -188,6 +194,7 @@ Object doOr(Object self, Object other) {
188194
}
189195

190196
@Builtin(name = __XOR__, minNumOfPositionalArgs = 2)
197+
@Builtin(name = __RXOR__, minNumOfPositionalArgs = 2)
191198
@GenerateNodeFactory
192199
@ImportStatic(PGuards.class)
193200
abstract static class XorNode extends PythonBinaryBuiltinNode {
@@ -227,6 +234,7 @@ PFrozenSet doSet(@SuppressWarnings("unused") VirtualFrame frame, PFrozenSet self
227234
}
228235

229236
@Builtin(name = __SUB__, minNumOfPositionalArgs = 2)
237+
@Builtin(name = __RSUB__, minNumOfPositionalArgs = 2, reverseOperation = true)
230238
@GenerateNodeFactory
231239
@ImportStatic(PGuards.class)
232240
abstract static class SubNode extends PythonBinaryBuiltinNode {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/set/SetBuiltins.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
import static com.oracle.graal.python.nodes.SpecialMethodNames.__HASH__;
3030
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INIT__;
3131
import static com.oracle.graal.python.nodes.SpecialMethodNames.__OR__;
32+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RAND__;
33+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ROR__;
34+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RSUB__;
35+
import static com.oracle.graal.python.nodes.SpecialMethodNames.__RXOR__;
3236
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SUB__;
3337
import static com.oracle.graal.python.nodes.SpecialMethodNames.__XOR__;
3438
import static com.oracle.graal.python.runtime.exception.PythonErrorType.TypeError;
@@ -159,6 +163,7 @@ public static Object add(VirtualFrame frame, PSet self, Object o,
159163
}
160164

161165
@Builtin(name = __OR__, minNumOfPositionalArgs = 2)
166+
@Builtin(name = __ROR__, minNumOfPositionalArgs = 2)
162167
@GenerateNodeFactory
163168
@ImportStatic(PGuards.class)
164169
public abstract static class OrNode extends PythonBinaryBuiltinNode {
@@ -321,6 +326,7 @@ static PNone doSet(VirtualFrame frame, PSet self, Object other,
321326
}
322327

323328
@Builtin(name = __AND__, minNumOfPositionalArgs = 2)
329+
@Builtin(name = __RAND__, minNumOfPositionalArgs = 2)
324330
@GenerateNodeFactory
325331
@ImportStatic(PGuards.class)
326332
public abstract static class AndNode extends PythonBinaryBuiltinNode {
@@ -436,6 +442,7 @@ static PNone doSet(VirtualFrame frame, PSet self, Object other,
436442
}
437443

438444
@Builtin(name = __XOR__, minNumOfPositionalArgs = 2)
445+
@Builtin(name = __RXOR__, minNumOfPositionalArgs = 2)
439446
@GenerateNodeFactory
440447
@ImportStatic(PGuards.class)
441448
public abstract static class XorNode extends PythonBinaryBuiltinNode {
@@ -513,6 +520,7 @@ static PNone doSet(VirtualFrame frame, PSet self, Object other,
513520
}
514521

515522
@Builtin(name = __SUB__, minNumOfPositionalArgs = 2)
523+
@Builtin(name = __RSUB__, minNumOfPositionalArgs = 2, reverseOperation = true)
516524
@GenerateNodeFactory
517525
@ImportStatic(PGuards.class)
518526
abstract static class SubNode extends PythonBinaryBuiltinNode {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/expression/BinaryArithmetic.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,11 @@ public abstract static class BinaryArithmeticNode extends BinaryOpNode {
145145

146146
static Supplier<NotImplementedHandler> createHandler(String operator) {
147147
return () -> new NotImplementedHandler() {
148+
@Child private PRaiseNode raiseNode = PRaiseNode.create();
148149

149150
@Override
150151
public Object execute(VirtualFrame frame, Object arg, Object arg2) {
151-
throw PRaiseNode.getUncached().raise(TypeError, getErrorMessage(arg), operator, arg, arg2);
152+
throw raiseNode.raise(TypeError, getErrorMessage(arg), operator, arg, arg2);
152153
}
153154

154155
@CompilerDirectives.TruffleBoundary

graalpython/lib-graalpython/_functools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def __new__(cls, func, /, *args, **keywords):
119119
if not callable(func):
120120
raise TypeError("the first argument must be callable")
121121

122-
if hasattr(func, "func"):
122+
if type(func) == partial:
123123
args = func.args + args
124124
keywords = {**func.keywords, **keywords}
125125
func = func.func

0 commit comments

Comments
 (0)