Added warning for fi }, and not for ) }

This commit is contained in:
Vidar Holen 2012-11-30 09:25:49 -08:00
parent f7be39cb5f
commit ea4176691d
1 changed files with 15 additions and 2 deletions

View File

@ -1199,11 +1199,24 @@ readPattern = (readNormalWord `thenSkip` spacing) `sepBy1` (char '|' `thenSkip`
readCompoundCommand = do
id <- getNextId
cmd <- choice [ readBraceGroup, readArithmeticExpression, readSubshell, readCondition, readWhileClause, readUntilClause, readIfClause, readForClause, readCaseClause, readFunctionDefinition]
-- This is all Bash specific. fi } fails, but ) } works.
cmd <- do
x <- needsSeparator
return (True, x)
<|> do
x <- noSeparator
return (False, x)
spacing
redirs <- many readIoRedirect
return $ T_Redirecting id redirs $ cmd
when (fst cmd) $ optional $ do
try . lookAhead $ (spacing >> g_Rbrace)
parseProblem WarningC "Bash requires semicolon or linefeed before the } here."
return $ T_Redirecting id redirs $ snd cmd
where
needsSeparator = choice [ readArithmeticExpression, readCondition, readWhileClause, readUntilClause, readIfClause, readForClause, readCaseClause]
noSeparator = choice [ readBraceGroup, readSubshell, readFunctionDefinition]
readCompoundList = readTerm