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.

Reply via email to