Fixed up warnings for \r, and added warnings for
This commit is contained in:
parent
5794f3d390
commit
438c4ec572
|
@ -36,18 +36,18 @@ import GHC.Exts (sortWith)
|
||||||
|
|
||||||
|
|
||||||
backslash = char '\\'
|
backslash = char '\\'
|
||||||
linefeed = char '\n'
|
linefeed = (optional carriageReturn) >> char '\n'
|
||||||
singleQuote = char '\''
|
singleQuote = char '\''
|
||||||
doubleQuote = char '"'
|
doubleQuote = char '"'
|
||||||
variableStart = upper <|> lower <|> oneOf "_"
|
variableStart = upper <|> lower <|> oneOf "_"
|
||||||
variableChars = upper <|> lower <|> digit <|> oneOf "_"
|
variableChars = upper <|> lower <|> digit <|> oneOf "_"
|
||||||
specialVariable = oneOf "@*#?-$!"
|
specialVariable = oneOf "@*#?-$!"
|
||||||
tokenDelimiter = oneOf "&|;<> \t\n"
|
tokenDelimiter = oneOf "&|;<> \t\n\r" <|> nbsp
|
||||||
quotable = oneOf "|&;<>()$`\\ \"'\t\n"
|
quotable = oneOf "|&;<>()$`\\ \"'\t\n\r" <|> nbsp
|
||||||
bracedQuotable = oneOf "}\"$`'"
|
bracedQuotable = oneOf "}\"$`'"
|
||||||
doubleQuotable = oneOf "\"$`"
|
doubleQuotable = oneOf "\"$`"
|
||||||
whitespace = oneOf " \t\n"
|
whitespace = oneOf " \t\n" <|> carriageReturn <|> nbsp
|
||||||
linewhitespace = oneOf " \t"
|
linewhitespace = oneOf " \t" <|> nbsp
|
||||||
extglobStart = oneOf "?*@!+"
|
extglobStart = oneOf "?*@!+"
|
||||||
|
|
||||||
prop_spacing = isOk spacing " \\\n # Comment"
|
prop_spacing = isOk spacing " \\\n # Comment"
|
||||||
|
@ -61,13 +61,18 @@ prop_allspacing2 = isOk allspacing " #foo\n # bar\n#baz\n"
|
||||||
prop_allspacing3 = isOk allspacing "#foo\n#bar\n#baz\n"
|
prop_allspacing3 = isOk allspacing "#foo\n#bar\n#baz\n"
|
||||||
allspacing = do
|
allspacing = do
|
||||||
spacing
|
spacing
|
||||||
x <- option False ((linefeed <|> carriageReturn) >> return True)
|
x <- option False (linefeed >> return True)
|
||||||
when x allspacing
|
when x allspacing
|
||||||
|
|
||||||
carriageReturn = do
|
carriageReturn = do
|
||||||
parseNote ErrorC "Literal carriage return. Run script through tr -d '\\r' ."
|
parseNote ErrorC "Literal carriage return. Run script through tr -d '\\r' ."
|
||||||
char '\r'
|
char '\r'
|
||||||
|
|
||||||
|
nbsp = do
|
||||||
|
parseNote ErrorC "This is a . Delete it and retype as space."
|
||||||
|
char '\xA0'
|
||||||
|
return ' '
|
||||||
|
|
||||||
--------- Message/position annotation on top of user state
|
--------- Message/position annotation on top of user state
|
||||||
data Note = Note Severity String deriving (Show, Eq)
|
data Note = Note Severity String deriving (Show, Eq)
|
||||||
data ParseNote = ParseNote SourcePos Severity String deriving (Show, Eq)
|
data ParseNote = ParseNote SourcePos Severity String deriving (Show, Eq)
|
||||||
|
@ -1509,6 +1514,9 @@ readShebang = do
|
||||||
optional linefeed
|
optional linefeed
|
||||||
return str
|
return str
|
||||||
|
|
||||||
|
prop_readScript1 = isOk readScript "#!/bin/bash\necho hello world\n"
|
||||||
|
prop_readScript2 = isWarning readScript "#!/bin/bash\r\necho hello world\n"
|
||||||
|
prop_readScript3 = isWarning readScript "#!/bin/bash\necho hello\xA0world"
|
||||||
readScript = do
|
readScript = do
|
||||||
id <- getNextId
|
id <- getNextId
|
||||||
sb <- option "" readShebang
|
sb <- option "" readShebang
|
||||||
|
|
Loading…
Reference in New Issue