Warn about 'for $var in values'.

This commit is contained in:
Vidar Holen 2014-11-09 16:22:01 -08:00
parent af1bb93aba
commit d9dd58bec8
1 changed files with 4 additions and 1 deletions

View File

@ -1618,11 +1618,12 @@ prop_readForClause8 = isOk readForClause "for ((;;)) ; do echo $i\ndone"
prop_readForClause9 = isOk readForClause "for i do true; done" prop_readForClause9 = isOk readForClause "for i do true; done"
prop_readForClause10= isOk readForClause "for ((;;)) { true; }" prop_readForClause10= isOk readForClause "for ((;;)) { true; }"
prop_readForClause11= isOk readForClause "for a b in *; do echo $a $b; done" prop_readForClause11= isOk readForClause "for a b in *; do echo $a $b; done"
prop_readForClause12= isWarning readForClause "for $a in *; do echo \"$a\"; done"
readForClause = called "for loop" $ do readForClause = called "for loop" $ do
pos <- getPosition pos <- getPosition
(T_For id) <- g_For (T_For id) <- g_For
spacing spacing
readRegular id pos <|> readArithmetic id pos readArithmetic id pos <|> readRegular id pos
where where
readArithmetic id pos = called "arithmetic for condition" $ do readArithmetic id pos = called "arithmetic for condition" $ do
try $ string "((" try $ string "(("
@ -1643,6 +1644,8 @@ readForClause = called "for loop" $ do
return list return list
readRegular id pos = do readRegular id pos = do
acceptButWarn (char '$') ErrorC 1086
"Don't use $ on the iterator name in for loops."
names <- readNames names <- readNames
readShort names <|> readLong names readShort names <|> readLong names
where where