mirror of
https://github.com/unisonweb/unison.git
synced 2024-07-14 13:50:34 +03:00
bugfix: don't emit virtual semis inside { or [
This commit is contained in:
parent
076163feef
commit
0c2e8c5193
@ -224,7 +224,7 @@ token'' tok p = do
|
||||
pops p = do
|
||||
env <- S.get
|
||||
let l = layout env
|
||||
if top l == column p && topBlockName l /= Just "(" -- don't emit virtual semis inside parens
|
||||
if top l == column p && topContainsVirtualSemis l
|
||||
then pure [Token (Semi True) p p]
|
||||
else
|
||||
if column p > top l || topHasClosePair l
|
||||
@ -234,6 +234,12 @@ token'' tok p = do
|
||||
then S.put (env {layout = pop l}) >> ((Token Close p p :) <$> pops p)
|
||||
else error "impossible"
|
||||
|
||||
-- don't emit virtual semis in (, {, or [ blocks
|
||||
topContainsVirtualSemis :: Layout -> Bool
|
||||
topContainsVirtualSemis = \case
|
||||
[] -> False
|
||||
((name, _) : _) -> name /= "(" && name /= "{" && name /= "["
|
||||
|
||||
topHasClosePair :: Layout -> Bool
|
||||
topHasClosePair [] = False
|
||||
topHasClosePair ((name, _) : _) =
|
||||
|
@ -210,7 +210,13 @@ test =
|
||||
[Textual "test escaped quotes \"in quotes\""],
|
||||
t "\"\\n \\t \\b \\a\"" [Textual "\n \t \b \a"],
|
||||
-- Delayed string
|
||||
t "'\"\"" [Reserved "'", Textual ""]
|
||||
t "'\"\"" [Reserved "'", Textual ""],
|
||||
-- https://github.com/unisonweb/unison/issues/4683
|
||||
-- don't emit virtual semis in ability lists or normal lists
|
||||
t "{foo\n,bar}" [Open "{", simpleWordyId "foo", Reserved ",", simpleWordyId "bar", Close],
|
||||
t "{foo\n ,bar}" [Open "{", simpleWordyId "foo", Reserved ",", simpleWordyId "bar", Close],
|
||||
t "[foo\n,bar]" [Open "[", simpleWordyId "foo", Reserved ",", simpleWordyId "bar", Close],
|
||||
t "[foo\n ,bar]" [Open "[", simpleWordyId "foo", Reserved ",", simpleWordyId "bar", Close]
|
||||
]
|
||||
|
||||
t :: String -> [Lexeme] -> Test ()
|
||||
|
Loading…
Reference in New Issue
Block a user