diff --git a/STD.pm6 b/STD.pm6 index 4f5f382..38953dd 100644 --- a/STD.pm6 +++ b/STD.pm6 @@ -1542,6 +1542,17 @@ grammar P6 is STD { [ ? ';' <.EXPR>? ';' <.EXPR>? ')' > <.obs('C-style "for (;;)" loop', '"loop (;;)"')> ]? + <.worry_itemlist($)> + } + + method worry_itemlist($expr) { + if $expr { + my $var = $expr.Str; + if substr($var,0,1) eq '$' { + self.cursor($expr.from).worry("'for $var' will never flatten a \$ variable;\n\tto force list interpolation, please use either 'for \@$var' or 'for $var\[]';\n\tif you just want item topicalization, use 'given $var' instead"); + } + } + self; } rule statement_control:given { @@ -1590,7 +1601,7 @@ grammar P6 is STD { rule statement_mod_loop:while { } rule statement_mod_loop:until { } - rule statement_mod_loop:for { } + rule statement_mod_loop:for { <.worry_itemlist($)> } rule statement_mod_loop:given { } ################