Author: moritz
Date: Sun Nov 9 12:07:25 2008
New Revision: 32473
Modified:
trunk/languages/perl6/src/builtins/op.pir
trunk/languages/perl6/src/classes/Object.pir
Log:
[rakudo] More fiddling with ++/-- aka succ/pred. Closes [perl #59596].
Patch courtesy by Vasily Chekalkin, bacek++
Modified: trunk/languages/perl6/src/builtins/op.pir
==============================================================================
--- trunk/languages/perl6/src/builtins/op.pir (original)
+++ trunk/languages/perl6/src/builtins/op.pir Sun Nov 9 12:07:25 2008
@@ -31,47 +31,28 @@
.sub 'postfix:++' :multi(_)
.param pmc a
$P0 = clone a
- 'prefix:++'(a)
+ inc a
.return ($P0)
.end
.sub 'postfix:--' :multi(_)
.param pmc a
$P0 = clone a
- 'prefix:--'(a)
+ dec a
.return ($P0)
.end
.sub 'prefix:++' :multi(_)
.param pmc a
- push_eh do_inc
- $P1 = find_method a, "succ"
- pop_eh
- a.$P1()
- goto done
-
- do_inc:
- pop_eh
inc a
-
- done:
.return (a)
.end
.sub 'prefix:--' :multi(_)
.param pmc a
- push_eh do_dec
- $P1 = find_method a, "pred"
- pop_eh
- a.$P1()
- goto done
-
- do_dec:
- pop_eh
dec a
- done:
.return (a)
.end
Modified: trunk/languages/perl6/src/classes/Object.pir
==============================================================================
--- trunk/languages/perl6/src/classes/Object.pir (original)
+++ trunk/languages/perl6/src/classes/Object.pir Sun Nov 9 12:07:25 2008
@@ -157,6 +157,31 @@
.end
+=item increment
+
+Override increment in Objects to use 'succ' method.
+
+=cut
+
+.sub '' :method :vtable('increment')
+ $P0 = self.'succ'()
+ 'infix:='(self, $P0)
+ .return(self)
+.end
+
+=item decrement
+
+Override decrement in Objects to use 'pred' method.
+
+=cut
+
+.sub '' :method :vtable('decrement')
+ $P0 = self.'pred'()
+ 'infix:='(self, $P0)
+ .return(self)
+.end
+
+
=item new()
Create a new object having the same class as the invocant.