From 55692926b9f3c14704d535a25cf3e77b32facc16 Mon Sep 17 00:00:00 2001 From: Vidar Holen Date: Sat, 3 Oct 2015 21:12:28 -0700 Subject: [PATCH] Don't consider {} and {a} brace expansions. --- ShellCheck/Parser.hs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ShellCheck/Parser.hs b/ShellCheck/Parser.hs index 16f9cb2..964ff8e 100644 --- a/ShellCheck/Parser.hs +++ b/ShellCheck/Parser.hs @@ -1152,12 +1152,19 @@ prop_readBraced3 = isOk readBraced "{1,\\},2}" prop_readBraced4 = isOk readBraced "{1,{2,3}}" prop_readBraced5 = isOk readBraced "{JP{,E}G,jp{,e}g}" prop_readBraced6 = isOk readBraced "{foo,bar,$((${var}))}" +prop_readBraced7 = isNotOk readBraced "{}" +prop_readBraced8 = isNotOk readBraced "{foo}" readBraced = try braceExpansion where braceExpansion = T_BraceExpansion `withParser` do char '{' elements <- bracedElement `sepBy1` char ',' + guard $ + case elements of + (_:_:_) -> True + [t] -> ".." `isInfixOf` onlyLiteralString t + [] -> False char '}' return elements bracedElement = @@ -2334,6 +2341,7 @@ readScript = do isWarning p s = parsesCleanly p s == Just False isOk p s = parsesCleanly p s == Just True +isNotOk p s = parsesCleanly p s == Nothing testParse string = runIdentity $ do (res, _) <- runParser (mockedSystemInterface []) readScript "-" string