Author: masak
Date: 2009-10-21 10:50:10 +0200 (Wed, 21 Oct 2009)
New Revision: 28870
Modified:
docs/Perl6/Spec/S06-routines.pod
Log:
[S06] third attempt at describing elusive name collision
Modified: docs/Perl6/Spec/S06-routines.pod
===================================================================
--- docs/Perl6/Spec/S06-routines.pod 2009-10-21 08:46:25 UTC (rev 28869)
+++ docs/Perl6/Spec/S06-routines.pod 2009-10-21 08:50:10 UTC (rev 28870)
@@ -503,12 +503,16 @@
possible on those arguments that are bound to a final slurpy or
arglist variable.)
-All parameters must either have a unique name (sigil excluded)
-or be anonymous. Declaring a routine having two positionals with exactly
-the same name counts as a compile-time error. Renaming a named parameter
-can also cause forbidden name collisions:
+A signature containing a name collision is considered a compile time
+error. A name collision can occur between positional parameters, between
+named parameters, or between a positional parameter and a named one.
+The sigil is not considered in such a comparison, except in the case of
+two positional parameters -- in other words, a signature in which two
+or more parameters are identical except for the sigil is still OK (but
+you won't be able to pass values by that name).
- :($a, $a) # wrong, two a
+ :($a, $a) # wrong, two $a
+ :($a, @a) # OK (but don't do that)
:($a, :a($b)) # wrong, one a, one a through renaming
:($a, :a(@b)) # wrong
:(:$a, :@a) # wrong