Author: audreyt
Date: Mon Mar 12 14:20:51 2007
New Revision: 14342

Modified:
   doc/trunk/design/syn/S03.pod

Log:
* S06: Clarify that simple parenless form of declarators must
  support list-context assignment.

Modified: doc/trunk/design/syn/S03.pod
==============================================================================
--- doc/trunk/design/syn/S03.pod        (original)
+++ doc/trunk/design/syn/S03.pod        Mon Mar 12 14:20:51 2007
@@ -12,9 +12,9 @@
 
   Maintainer: Larry Wall <[EMAIL PROTECTED]>
   Date: 8 Mar 2004
-  Last Modified: 12 Mar 2007
+  Last Modified: 13 Mar 2007
   Number: 3
-  Version: 108
+  Version: 109
 
 =head1 Overview
 
@@ -3183,18 +3183,23 @@
 associated type, traits and the initializer:
 
     constant $foo = 123;    # okay: initializes $foo to 123
-    constant ($foo = 123);  # same thing
+    constant ($foo = 123);  # same thing (with explicit parens)
     constant :($foo = 123); # same thing (full Signature form)
     constant ($foo) = 123;  # wrong: constants cannot be assigned to
 
+List-context assignment is supported for simple declarations:
+
+    constant @foo = 1,2,3;      # okay: initializes @foo to (1,2,3)
+    constant (@foo = 1,2,3);    # wrong: 2 and 3 are not variable names
+
 When parentheses are omitted, you may use an infix assignment operator
 instea dof C<=> as the initializer.  In that case, the left hand side of
 the infix operator will be the variable's prototype object:
 
     constant Dog $fido .= new;      # okay: a constant Dog object
     constant Dog $fido = Dog.new;   # same thing
-    constant Dog $fido = $fido.new; # error: cannot refer to itself
-    constant (Dog $fido .= new);    # error: cannot use .= with parens
+    constant Dog $fido = $fido.new; # wrong: invalid self-reference
+    constant (Dog $fido .= new);    # wrong: cannot use .= with parens
 
 Parentheses must always be used when declaring multiple parameters:
 

Reply via email to