Skip to content

Commit 75e11da

Browse files
committed
fix right_op_wrapper
1 parent 91b06fb commit 75e11da

1 file changed

Lines changed: 48 additions & 21 deletions

File tree

vm/src/types/slot.rs

Lines changed: 48 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,12 @@ fn float_wrapper(num: PyNumber, vm: &VirtualMachine) -> PyResult<PyRef<PyFloat>>
256256

257257
macro_rules! number_binary_op_wrapper {
258258
($name:ident) => {
259-
|num, other, vm| {
260-
vm.call_special_method(
261-
num.deref().to_owned(),
262-
identifier!(vm, $name),
263-
(other.to_owned(),),
264-
)
265-
}
259+
|a, b, vm| vm.call_special_method(a.to_owned(), identifier!(vm, $name), (b.to_owned(),))
260+
};
261+
}
262+
macro_rules! number_binary_right_op_wrapper {
263+
($name:ident) => {
264+
|a, b, vm| vm.call_special_method(b.to_owned(), identifier!(vm, $name), (a.to_owned(),))
266265
};
267266
}
268267

@@ -560,7 +559,7 @@ impl PyType {
560559
toggle_subslot!(number, add, number_binary_op_wrapper!(__add__));
561560
}
562561
_ if name == identifier!(ctx, __radd__) => {
563-
toggle_subslot!(number, right_add, number_binary_op_wrapper!(__radd__));
562+
toggle_subslot!(number, right_add, number_binary_right_op_wrapper!(__radd__));
564563
}
565564
_ if name == identifier!(ctx, __iadd__) => {
566565
toggle_subslot!(number, inplace_add, number_binary_op_wrapper!(__iadd__));
@@ -569,7 +568,11 @@ impl PyType {
569568
toggle_subslot!(number, subtract, number_binary_op_wrapper!(__sub__));
570569
}
571570
_ if name == identifier!(ctx, __rsub__) => {
572-
toggle_subslot!(number, right_subtract, number_binary_op_wrapper!(__rsub__));
571+
toggle_subslot!(
572+
number,
573+
right_subtract,
574+
number_binary_right_op_wrapper!(__rsub__)
575+
);
573576
}
574577
_ if name == identifier!(ctx, __isub__) => {
575578
toggle_subslot!(
@@ -582,7 +585,11 @@ impl PyType {
582585
toggle_subslot!(number, multiply, number_binary_op_wrapper!(__mul__));
583586
}
584587
_ if name == identifier!(ctx, __rmul__) => {
585-
toggle_subslot!(number, right_multiply, number_binary_op_wrapper!(__rmul__));
588+
toggle_subslot!(
589+
number,
590+
right_multiply,
591+
number_binary_right_op_wrapper!(__rmul__)
592+
);
586593
}
587594
_ if name == identifier!(ctx, __imul__) => {
588595
toggle_subslot!(
@@ -595,7 +602,11 @@ impl PyType {
595602
toggle_subslot!(number, remainder, number_binary_op_wrapper!(__mod__));
596603
}
597604
_ if name == identifier!(ctx, __rmod__) => {
598-
toggle_subslot!(number, right_remainder, number_binary_op_wrapper!(__rmod__));
605+
toggle_subslot!(
606+
number,
607+
right_remainder,
608+
number_binary_right_op_wrapper!(__rmod__)
609+
);
599610
}
600611
_ if name == identifier!(ctx, __imod__) => {
601612
toggle_subslot!(
@@ -608,13 +619,21 @@ impl PyType {
608619
toggle_subslot!(number, divmod, number_binary_op_wrapper!(__divmod__));
609620
}
610621
_ if name == identifier!(ctx, __rdivmod__) => {
611-
toggle_subslot!(number, right_divmod, number_binary_op_wrapper!(__rdivmod__));
622+
toggle_subslot!(
623+
number,
624+
right_divmod,
625+
number_binary_right_op_wrapper!(__rdivmod__)
626+
);
612627
}
613628
_ if name == identifier!(ctx, __pow__) => {
614629
toggle_subslot!(number, power, number_binary_op_wrapper!(__pow__));
615630
}
616631
_ if name == identifier!(ctx, __rpow__) => {
617-
toggle_subslot!(number, right_power, number_binary_op_wrapper!(__rpow__));
632+
toggle_subslot!(
633+
number,
634+
right_power,
635+
number_binary_right_op_wrapper!(__rpow__)
636+
);
618637
}
619638
_ if name == identifier!(ctx, __ipow__) => {
620639
toggle_subslot!(number, inplace_power, number_binary_op_wrapper!(__ipow__));
@@ -623,7 +642,11 @@ impl PyType {
623642
toggle_subslot!(number, lshift, number_binary_op_wrapper!(__lshift__));
624643
}
625644
_ if name == identifier!(ctx, __rlshift__) => {
626-
toggle_subslot!(number, right_lshift, number_binary_op_wrapper!(__rlshift__));
645+
toggle_subslot!(
646+
number,
647+
right_lshift,
648+
number_binary_right_op_wrapper!(__rlshift__)
649+
);
627650
}
628651
_ if name == identifier!(ctx, __ilshift__) => {
629652
toggle_subslot!(
@@ -636,7 +659,11 @@ impl PyType {
636659
toggle_subslot!(number, rshift, number_binary_op_wrapper!(__rshift__));
637660
}
638661
_ if name == identifier!(ctx, __rrshift__) => {
639-
toggle_subslot!(number, right_rshift, number_binary_op_wrapper!(__rrshift__));
662+
toggle_subslot!(
663+
number,
664+
right_rshift,
665+
number_binary_right_op_wrapper!(__rrshift__)
666+
);
640667
}
641668
_ if name == identifier!(ctx, __irshift__) => {
642669
toggle_subslot!(
@@ -649,7 +676,7 @@ impl PyType {
649676
toggle_subslot!(number, and, number_binary_op_wrapper!(__and__));
650677
}
651678
_ if name == identifier!(ctx, __rand__) => {
652-
toggle_subslot!(number, right_and, number_binary_op_wrapper!(__rand__));
679+
toggle_subslot!(number, right_and, number_binary_right_op_wrapper!(__rand__));
653680
}
654681
_ if name == identifier!(ctx, __iand__) => {
655682
toggle_subslot!(number, inplace_and, number_binary_op_wrapper!(__iand__));
@@ -658,7 +685,7 @@ impl PyType {
658685
toggle_subslot!(number, xor, number_binary_op_wrapper!(__xor__));
659686
}
660687
_ if name == identifier!(ctx, __rxor__) => {
661-
toggle_subslot!(number, right_xor, number_binary_op_wrapper!(__rxor__));
688+
toggle_subslot!(number, right_xor, number_binary_right_op_wrapper!(__rxor__));
662689
}
663690
_ if name == identifier!(ctx, __ixor__) => {
664691
toggle_subslot!(number, inplace_xor, number_binary_op_wrapper!(__ixor__));
@@ -667,7 +694,7 @@ impl PyType {
667694
toggle_subslot!(number, or, number_binary_op_wrapper!(__or__));
668695
}
669696
_ if name == identifier!(ctx, __ror__) => {
670-
toggle_subslot!(number, right_or, number_binary_op_wrapper!(__ror__));
697+
toggle_subslot!(number, right_or, number_binary_right_op_wrapper!(__ror__));
671698
}
672699
_ if name == identifier!(ctx, __ior__) => {
673700
toggle_subslot!(number, inplace_or, number_binary_op_wrapper!(__ior__));
@@ -683,7 +710,7 @@ impl PyType {
683710
toggle_subslot!(
684711
number,
685712
right_floor_divide,
686-
number_binary_op_wrapper!(__rfloordiv__)
713+
number_binary_right_op_wrapper!(__rfloordiv__)
687714
);
688715
}
689716
_ if name == identifier!(ctx, __ifloordiv__) => {
@@ -700,7 +727,7 @@ impl PyType {
700727
toggle_subslot!(
701728
number,
702729
right_true_divide,
703-
number_binary_op_wrapper!(__rtruediv__)
730+
number_binary_right_op_wrapper!(__rtruediv__)
704731
);
705732
}
706733
_ if name == identifier!(ctx, __itruediv__) => {
@@ -721,7 +748,7 @@ impl PyType {
721748
toggle_subslot!(
722749
number,
723750
right_matrix_multiply,
724-
number_binary_op_wrapper!(__rmatmul__)
751+
number_binary_right_op_wrapper!(__rmatmul__)
725752
);
726753
}
727754
_ if name == identifier!(ctx, __imatmul__) => {

0 commit comments

Comments
 (0)