mirror of
https://github.com/unisonweb/unison.git
synced 2024-08-15 21:40:50 +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
|
pops p = do
|
||||||
env <- S.get
|
env <- S.get
|
||||||
let l = layout env
|
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]
|
then pure [Token (Semi True) p p]
|
||||||
else
|
else
|
||||||
if column p > top l || topHasClosePair l
|
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)
|
then S.put (env {layout = pop l}) >> ((Token Close p p :) <$> pops p)
|
||||||
else error "impossible"
|
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 :: Layout -> Bool
|
||||||
topHasClosePair [] = False
|
topHasClosePair [] = False
|
||||||
topHasClosePair ((name, _) : _) =
|
topHasClosePair ((name, _) : _) =
|
||||||
|
@ -210,7 +210,13 @@ test =
|
|||||||
[Textual "test escaped quotes \"in quotes\""],
|
[Textual "test escaped quotes \"in quotes\""],
|
||||||
t "\"\\n \\t \\b \\a\"" [Textual "\n \t \b \a"],
|
t "\"\\n \\t \\b \\a\"" [Textual "\n \t \b \a"],
|
||||||
-- Delayed string
|
-- 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 ()
|
t :: String -> [Lexeme] -> Test ()
|
||||||
|
Loading…
Reference in New Issue
Block a user