Author: pmichaud
Date: Thu Jan 25 12:31:11 2007
New Revision: 16793

Added:
   trunk/languages/perl6/src/classes/List.pir
Modified:
   trunk/MANIFEST
   trunk/languages/perl6/config/makefiles/root.in
   trunk/languages/perl6/src/   (props changed)
   trunk/languages/perl6/src/PAST/Grammar.tg
   trunk/languages/perl6/src/builtins/list.pir
   trunk/languages/perl6/src/builtins/range.pir
   trunk/languages/perl6/src/parser/   (props changed)

Log:
[perl6]: Refactor, part 2
* Move List object methods into src/classes/List.pir
* Update some svn:ignore properties


Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST      (original)
+++ trunk/MANIFEST      Thu Jan 25 12:31:11 2007
@@ -1539,6 +1539,7 @@
 languages/perl6/src/builtins/range.pir                      [perl6]
 languages/perl6/src/builtins/string.pir                     [perl6]
 languages/perl6/src/classes/Code.pir                        [perl6]
+languages/perl6/src/classes/List.pir                        [perl6]
 languages/perl6/src/classes/Num.pir                         [perl6]
 languages/perl6/src/classes/Str.pir                         [perl6]
 languages/perl6/src/parser/expression.pir                   [perl6]

Modified: trunk/languages/perl6/config/makefiles/root.in
==============================================================================
--- trunk/languages/perl6/config/makefiles/root.in      (original)
+++ trunk/languages/perl6/config/makefiles/root.in      Thu Jan 25 12:31:11 2007
@@ -44,6 +44,7 @@
   src/builtins/range.pir \
   src/builtins/string.pir \
   src/classes/Code.pir \
+  src/classes/List.pir \
   src/classes/Num.pir \
   src/classes/Str.pir
 

Modified: trunk/languages/perl6/src/PAST/Grammar.tg
==============================================================================
--- trunk/languages/perl6/src/PAST/Grammar.tg   (original)
+++ trunk/languages/perl6/src/PAST/Grammar.tg   Thu Jan 25 12:31:11 2007
@@ -298,7 +298,7 @@
     .return cpast.'new'('PAST::Var', cpast, xpast, 'node'=>node, 
'scope'=>'keyed', 'viviself'=>'.Undef', 'islvalue'=>islvalue)
 
   postcfix_bracket:
-    cpast.'viviself'("'Perl6List'")
+    cpast.'viviself'("'List'")
     .return cpast.'new'('PAST::Var', cpast, xpast, 'node'=>node, 
'scope'=>'keyed', 'viviself'=>'.Undef', 'islvalue'=>islvalue)
 
   postcfix_paren:
@@ -512,7 +512,7 @@
     viviself = '.Undef'
     goto have_viviself
   sigil_array:
-    viviself = "'Perl6List'"
+    viviself = "'List'"
     goto have_viviself
   sigil_hash:
     viviself = "'Perl6Hash'"

Modified: trunk/languages/perl6/src/builtins/list.pir
==============================================================================
--- trunk/languages/perl6/src/builtins/list.pir (original)
+++ trunk/languages/perl6/src/builtins/list.pir Thu Jan 25 12:31:11 2007
@@ -2,71 +2,15 @@
 
 =head1 NAME
 
-src/builtins/list.pir - Perl 6 List class
+src/builtins/list.pir - Perl 6 list operators
 
 =head1 Functions
 
 =over 4
 
-=cut
-
-.namespace
-
-.sub '__onload' :load :init
-    $P0 = subclass 'ResizablePMCArray', 'Perl6List'
-.end
-
-# FIXME:  The 'clone' opcode doesn't seem to naturally work
-# for subclasses of ResizablePMCArray, so we write our own here.
-# FIXME:  #2 - iterators don't properly work for subclasses
-# of ResizablePMCArray (RT #40958), so we have to enumerate the
-# elements by index.
-
-.namespace [ 'Perl6List' ]
-
-.sub '__clone' :method
-    $P0 = new 'Perl6List'
-    $I1 = elements self
-    $I0 = 0
-  loop:
-    if $I0 >= $I1 goto end
-    $P1 = self[$I0]
-    $P0[$I0] = $P1
-    inc $I0
-    goto loop
-  end:
-    .return ($P0)
-.end
-
-.namespace [ 'Perl6List' ]
-
-.sub '__get_string' :method
-    $S0 = ''
-    $I1 = elements self
-    if $I1 < 1 goto end
-    $I0 = 1
-    $S0 = self[0]
-  loop:
-    if $I0 >= $I1 goto end
-    $S1 = self[$I0]
-    $S0 = concat $S0, ' '
-    $S0 .= $S1
-    inc $I0
-    goto loop
-  end:
-    .return ($S0)
-.end
-
-
-.sub 'elems' :method
-    $I0 = elements self
-    .return ($I0)
-.end
-
-
 =item C<list(...)>
 
-Build a Perl6List from its arguments.
+Build a List from its arguments.
 
 =cut
 
@@ -75,7 +19,7 @@
 .sub 'list'
     .param pmc args            :slurpy
     .local pmc list
-    list = new 'Perl6List'
+    list = new 'List'
   args_loop:
     unless args goto end
     $P0 = shift args

Modified: trunk/languages/perl6/src/builtins/range.pir
==============================================================================
--- trunk/languages/perl6/src/builtins/range.pir        (original)
+++ trunk/languages/perl6/src/builtins/range.pir        Thu Jan 25 12:31:11 2007
@@ -6,7 +6,7 @@
     .param num a
     .param num b
     .local pmc range
-    range = new 'Perl6List'
+    range = new 'List'
   loop:
     if a > b goto end
     push range, a

Added: trunk/languages/perl6/src/classes/List.pir
==============================================================================
--- (empty file)
+++ trunk/languages/perl6/src/classes/List.pir  Thu Jan 25 12:31:11 2007
@@ -0,0 +1,70 @@
+## $Id: list.pir 15768 2006-11-22 19:38:04Z pmichaud $
+
+=head1 NAME
+
+src/classes/List.pir - Perl 6 List class
+
+=head1 Functions
+
+=over 4
+
+=cut
+
+.namespace
+
+.sub '__onload' :load :init
+    $P0 = subclass 'ResizablePMCArray', 'List'
+.end
+
+# FIXME:  The 'clone' opcode doesn't seem to naturally work
+# for subclasses of ResizablePMCArray, so we write our own here.
+# FIXME:  #2 - iterators don't properly work for subclasses
+# of ResizablePMCArray (RT #40958), so we have to enumerate the
+# elements by index.
+
+.namespace [ 'List' ]
+
+.sub '__clone' :method
+    $P0 = new 'List'
+    $I1 = elements self
+    $I0 = 0
+  loop:
+    if $I0 >= $I1 goto end
+    $P1 = self[$I0]
+    $P0[$I0] = $P1
+    inc $I0
+    goto loop
+  end:
+    .return ($P0)
+.end
+
+
+.sub '__get_string' :method
+    $S0 = ''
+    $I1 = elements self
+    if $I1 < 1 goto end
+    $I0 = 1
+    $S0 = self[0]
+  loop:
+    if $I0 >= $I1 goto end
+    $S1 = self[$I0]
+    $S0 = concat $S0, ' '
+    $S0 .= $S1
+    inc $I0
+    goto loop
+  end:
+    .return ($S0)
+.end
+
+
+.sub 'elems' :method
+    $I0 = elements self
+    .return ($I0)
+.end
+
+
+=back
+
+=cut
+
+## vim: expandtab sw=4

Reply via email to