From 81d6216f5681a0ada0f6bc4eb0419950e030b486 Mon Sep 17 00:00:00 2001 From: pmichaud Date: Thu, 27 Aug 2009 19:26:34 -0500 Subject: [PATCH] Move prefix:<-> into the setting. --- build/gen_whatever_pir.pl | 2 +- src/builtins/op.pir | 14 -------------- src/classes/Complex.pir | 11 ----------- src/setting/Complex.pm | 8 ++++++++ src/setting/Operators.pm | 18 ++++++++++++++++++ src/setting/Whatever.pm | 5 +++++ 6 files changed, 32 insertions(+), 26 deletions(-) diff --git a/build/gen_whatever_pir.pl b/build/gen_whatever_pir.pl index 211e42c0f61..66b02d74d3d 100644 --- a/build/gen_whatever_pir.pl +++ b/build/gen_whatever_pir.pl @@ -9,7 +9,7 @@ infix:% infix:div infix:mod infix:== infix:!= infix:< infix:> infix:<= infix:>= infix:<=> infix:.. infix:^.. infix:..^ infix:^..^ - prefix:+ prefix:- prefix:~ prefix:? prefix:! prefix:^ + prefix:+ prefix:~ prefix:? prefix:! prefix:^ ); for (@ops) { diff --git a/src/builtins/op.pir b/src/builtins/op.pir index b1431740f9c..3f8c3af444e 100644 --- a/src/builtins/op.pir +++ b/src/builtins/op.pir @@ -122,20 +122,6 @@ src/builtins/op.pir - Perl 6 builtin operators .end -.sub 'prefix:-' :multi(_) - .param num a - $N0 = neg a - .return ($N0) -.end - - -.sub 'prefix:-' :multi('Integer') - .param num a - $N0 = neg a - .tailcall '!upgrade_to_num_if_needed'($N0) -.end - - .sub 'prefix:~' :multi(_) .param string a $P0 = new ['Str'] diff --git a/src/classes/Complex.pir b/src/classes/Complex.pir index bcfd2374225..ddaacfa3a38 100644 --- a/src/classes/Complex.pir +++ b/src/classes/Complex.pir @@ -173,17 +173,6 @@ Casts a value to a complex number. .return (a) .end -=item prefix:- - -=cut - -.sub 'prefix:-' :multi('Complex') - .param pmc a - a = neg a - .return (a) -.end - - =item re =cut diff --git a/src/setting/Complex.pm b/src/setting/Complex.pm index 135763ab24d..68a54dfe238 100644 --- a/src/setting/Complex.pm +++ b/src/setting/Complex.pm @@ -87,4 +87,12 @@ multi sub infix:($a, Complex $b) { } +multi sub prefix:<->(Complex $a) { + Q:PIR { + $P0 = find_lex '$a' + %r = neg $P0 + } +} + + # vim: ft=perl6 diff --git a/src/setting/Operators.pm b/src/setting/Operators.pm index d0a0588bdeb..9ea729ea8a7 100644 --- a/src/setting/Operators.pm +++ b/src/setting/Operators.pm @@ -204,4 +204,22 @@ multi sub infix:<**>(Int $a, Int $b) { } } +multi sub prefix:<->($a) { + Q:PIR { + $P0 = find_lex '$a' + $N0 = $P0 + $N0 = neg $N0 + %r = box $N0 + } +} + +multi sub prefix:<->(Int $a) { + Q:PIR { + $P0 = find_lex '$a' + $N0 = $P0 + $N0 = neg $N0 + %r = '!upgrade_to_num_if_needed'($N0) + } +} + # vim: ft=perl6 diff --git a/src/setting/Whatever.pm b/src/setting/Whatever.pm index 6f1aed1af25..5a70ea418a5 100644 --- a/src/setting/Whatever.pm +++ b/src/setting/Whatever.pm @@ -62,4 +62,9 @@ multi sub infix:<**>($a, Whatever $b) multi sub infix:<**>($a, Whatever $b) { WhateverCodeX('infix:**', $a, $b) } +multi sub prefix:<->(Whatever $a) + { WhateverCodeX('prefix:-', $a) } +multi sub prefix:<->(WhateverCode $a) + { WhateverCodeX('prefix:-', $a) } + # vim: ft=perl6