Add a few more hardcoded fixities

ghc92
Lennart Spitzner 2023-05-18 20:24:44 +02:00
parent a90550f62d
commit 5ee0733f96
1 changed files with 181 additions and 169 deletions

View File

@ -193,143 +193,143 @@ remSuperfluousParens outerFixity = \case
hardcodedFixity :: Bool -> String -> Maybe Fixity
hardcodedFixity allowUnqualify = \case
"." -> Just $ Fixity NoSourceText 9 InfixR
"!!" -> Just $ Fixity NoSourceText 9 InfixL
"**" -> Just $ Fixity NoSourceText 8 InfixR
"^" -> Just $ Fixity NoSourceText 8 InfixR
"^^" -> Just $ Fixity NoSourceText 8 InfixR
"*" -> Just $ Fixity NoSourceText 7 InfixL
"/" -> Just $ Fixity NoSourceText 7 InfixL
"`quot`" -> Just $ Fixity NoSourceText 7 InfixL
"`rem`" -> Just $ Fixity NoSourceText 7 InfixL
"`div`" -> Just $ Fixity NoSourceText 7 InfixL
"`mod`" -> Just $ Fixity NoSourceText 7 InfixL
"+" -> Just $ Fixity NoSourceText 6 InfixL
"-" -> Just $ Fixity NoSourceText 6 InfixL
":" -> Just $ Fixity NoSourceText 5 InfixR
"==" -> Just $ Fixity NoSourceText 4 InfixN
"/=" -> Just $ Fixity NoSourceText 4 InfixN
"<" -> Just $ Fixity NoSourceText 4 InfixN
"<=" -> Just $ Fixity NoSourceText 4 InfixN
">" -> Just $ Fixity NoSourceText 4 InfixN
">=" -> Just $ Fixity NoSourceText 4 InfixN
"&&" -> Just $ Fixity NoSourceText 3 InfixR
"||" -> Just $ Fixity NoSourceText 2 InfixR
">>=" -> Just $ Fixity NoSourceText 1 InfixL
">>" -> Just $ Fixity NoSourceText 1 InfixL
"=<<" -> Just $ Fixity NoSourceText 1 InfixR
"$" -> Just $ Fixity NoSourceText 0 InfixR
"`seq`" -> Just $ Fixity NoSourceText 0 InfixR
"$!" -> Just $ Fixity NoSourceText 0 InfixR
"!" -> Just $ Fixity NoSourceText 9 InfixL
"//" -> Just $ Fixity NoSourceText 9 InfixL
"<>" -> Just $ Fixity NoSourceText 6 InfixR
"<+>" -> Just $ Fixity NoSourceText 5 InfixR
"<$" -> Just $ Fixity NoSourceText 4 InfixL
"$>" -> Just $ Fixity NoSourceText 4 InfixL
"<$>" -> Just $ Fixity NoSourceText 4 InfixL
"<&>" -> Just $ Fixity NoSourceText 1 InfixL
"&" -> Just $ Fixity NoSourceText 1 InfixL
"<*>" -> Just $ Fixity NoSourceText 4 InfixL
"<**>" -> Just $ Fixity NoSourceText 4 InfixL
"*>" -> Just $ Fixity NoSourceText 4 InfixL
"<*" -> Just $ Fixity NoSourceText 4 InfixL
"`elem`" -> Just $ Fixity NoSourceText 4 InfixN
"`notElem`" -> Just $ Fixity NoSourceText 4 InfixN
"++" -> Just $ Fixity NoSourceText 5 InfixR
"%" -> Just $ Fixity NoSourceText 7 InfixL
"<|>" -> Just $ Fixity NoSourceText 3 InfixL
".&." -> Just $ Fixity NoSourceText 7 InfixL
".|." -> Just $ Fixity NoSourceText 5 InfixL
"`xor`" -> Just $ Fixity NoSourceText 6 InfixL
"`shift`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotate`" -> Just $ Fixity NoSourceText 8 InfixL
"`shiftL`" -> Just $ Fixity NoSourceText 8 InfixL
"`shiftR`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotateL`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotateR`" -> Just $ Fixity NoSourceText 8 InfixL
"+#" -> Just $ Fixity NoSourceText 6 InfixL
".^." -> Just $ Fixity NoSourceText 6 InfixL
".>>." -> Just $ Fixity NoSourceText 8 InfixL
".<<." -> Just $ Fixity NoSourceText 8 InfixL
"!>>." -> Just $ Fixity NoSourceText 8 InfixL
"!<<." -> Just $ Fixity NoSourceText 8 InfixL
">=>" -> Just $ Fixity NoSourceText 1 InfixR
"<=<" -> Just $ Fixity NoSourceText 1 InfixR
"&&&" -> Just $ Fixity NoSourceText 3 InfixR
"<$!>" -> fixity InfixL 4
"." -> Just $ Fixity NoSourceText 9 InfixR
"!!" -> Just $ Fixity NoSourceText 9 InfixL
"**" -> Just $ Fixity NoSourceText 8 InfixR
"^" -> Just $ Fixity NoSourceText 8 InfixR
"^^" -> Just $ Fixity NoSourceText 8 InfixR
"*" -> Just $ Fixity NoSourceText 7 InfixL
"/" -> Just $ Fixity NoSourceText 7 InfixL
"`quot`" -> Just $ Fixity NoSourceText 7 InfixL
"`rem`" -> Just $ Fixity NoSourceText 7 InfixL
"`div`" -> Just $ Fixity NoSourceText 7 InfixL
"`mod`" -> Just $ Fixity NoSourceText 7 InfixL
"+" -> Just $ Fixity NoSourceText 6 InfixL
"-" -> Just $ Fixity NoSourceText 6 InfixL
":" -> Just $ Fixity NoSourceText 5 InfixR
"==" -> Just $ Fixity NoSourceText 4 InfixN
"/=" -> Just $ Fixity NoSourceText 4 InfixN
"<" -> Just $ Fixity NoSourceText 4 InfixN
"<=" -> Just $ Fixity NoSourceText 4 InfixN
">" -> Just $ Fixity NoSourceText 4 InfixN
">=" -> Just $ Fixity NoSourceText 4 InfixN
"&&" -> Just $ Fixity NoSourceText 3 InfixR
"||" -> Just $ Fixity NoSourceText 2 InfixR
">>=" -> Just $ Fixity NoSourceText 1 InfixL
">>" -> Just $ Fixity NoSourceText 1 InfixL
"=<<" -> Just $ Fixity NoSourceText 1 InfixR
"$" -> Just $ Fixity NoSourceText 0 InfixR
"`seq`" -> Just $ Fixity NoSourceText 0 InfixR
"$!" -> Just $ Fixity NoSourceText 0 InfixR
"!" -> Just $ Fixity NoSourceText 9 InfixL
"//" -> Just $ Fixity NoSourceText 9 InfixL
"<>" -> Just $ Fixity NoSourceText 6 InfixR
"<+>" -> Just $ Fixity NoSourceText 5 InfixR
"<$" -> Just $ Fixity NoSourceText 4 InfixL
"$>" -> Just $ Fixity NoSourceText 4 InfixL
"<$>" -> Just $ Fixity NoSourceText 4 InfixL
"<&>" -> Just $ Fixity NoSourceText 1 InfixL
"&" -> Just $ Fixity NoSourceText 1 InfixL
"<*>" -> Just $ Fixity NoSourceText 4 InfixL
"<**>" -> Just $ Fixity NoSourceText 4 InfixL
"*>" -> Just $ Fixity NoSourceText 4 InfixL
"<*" -> Just $ Fixity NoSourceText 4 InfixL
"`elem`" -> Just $ Fixity NoSourceText 4 InfixN
"`notElem`" -> Just $ Fixity NoSourceText 4 InfixN
"++" -> Just $ Fixity NoSourceText 5 InfixR
"%" -> Just $ Fixity NoSourceText 7 InfixL
"<|>" -> Just $ Fixity NoSourceText 3 InfixL
".&." -> Just $ Fixity NoSourceText 7 InfixL
".|." -> Just $ Fixity NoSourceText 5 InfixL
"`xor`" -> Just $ Fixity NoSourceText 6 InfixL
"`shift`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotate`" -> Just $ Fixity NoSourceText 8 InfixL
"`shiftL`" -> Just $ Fixity NoSourceText 8 InfixL
"`shiftR`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotateL`" -> Just $ Fixity NoSourceText 8 InfixL
"`rotateR`" -> Just $ Fixity NoSourceText 8 InfixL
"+#" -> Just $ Fixity NoSourceText 6 InfixL
".^." -> Just $ Fixity NoSourceText 6 InfixL
".>>." -> Just $ Fixity NoSourceText 8 InfixL
".<<." -> Just $ Fixity NoSourceText 8 InfixL
"!>>." -> Just $ Fixity NoSourceText 8 InfixL
"!<<." -> Just $ Fixity NoSourceText 8 InfixL
">=>" -> Just $ Fixity NoSourceText 1 InfixR
"<=<" -> Just $ Fixity NoSourceText 1 InfixR
"&&&" -> Just $ Fixity NoSourceText 3 InfixR
"<$!>" -> fixity InfixL 4
"~" -> fixity InfixN 4
"~~" -> fixity InfixN 4
":~:" -> Just $ Fixity NoSourceText 4 InfixN
":~~:" -> Just $ Fixity NoSourceText 4 InfixN
":+:" -> fixity InfixR 5
":*:" -> fixity InfixR 6
":.:" -> fixity InfixR 7
":|" -> fixity InfixR 5
"~" -> fixity InfixN 4
"~~" -> fixity InfixN 4
":~:" -> Just $ Fixity NoSourceText 4 InfixN
":~~:" -> Just $ Fixity NoSourceText 4 InfixN
":+:" -> fixity InfixR 5
":*:" -> fixity InfixR 6
":.:" -> fixity InfixR 7
":|" -> fixity InfixR 5
-- non-base from random sources.
"<|" -> Just $ Fixity NoSourceText 5 InfixR
"|>" -> Just $ Fixity NoSourceText 5 InfixL
"><" -> Just $ Fixity NoSourceText 5 InfixR
"$+$" -> Just $ Fixity NoSourceText 5 InfixL
"\\\\" -> Just $ Fixity NoSourceText 5 InfixN
".>" -> Just $ Fixity NoSourceText 9 InfixL
":?" -> Just $ Fixity NoSourceText 7 InfixN
":-" -> Just $ Fixity NoSourceText 9 InfixR
".:" -> Just $ Fixity NoSourceText 9 InfixR
"$!!" -> fixity InfixR 0
"<$!!>" -> fixity InfixL 4
"<|" -> Just $ Fixity NoSourceText 5 InfixR
"|>" -> Just $ Fixity NoSourceText 5 InfixL
"><" -> Just $ Fixity NoSourceText 5 InfixR
"$+$" -> Just $ Fixity NoSourceText 5 InfixL
"\\\\" -> Just $ Fixity NoSourceText 5 InfixN
".>" -> Just $ Fixity NoSourceText 9 InfixL
":?" -> Just $ Fixity NoSourceText 7 InfixN
":-" -> Just $ Fixity NoSourceText 9 InfixR
".:" -> Just $ Fixity NoSourceText 9 InfixR
"$!!" -> fixity InfixR 0
"<$!!>" -> fixity InfixL 4
-- lens, not complete!
"<|" -> fixity InfixR 5
"|>" -> fixity InfixL 5
"%~" -> fixity InfixR 4
".~" -> fixity InfixR 4
"?~" -> fixity InfixR 4
"<.~" -> fixity InfixR 4
"<?~" -> fixity InfixR 4
"+~" -> fixity InfixR 4
"*~" -> fixity InfixR 4
"-~" -> fixity InfixR 4
"//~" -> fixity InfixR 4
"^~" -> fixity InfixR 4
"^^~" -> fixity InfixR 4
"**~" -> fixity InfixR 4
"||~" -> fixity InfixR 4
"&&~" -> fixity InfixR 4
".=" -> fixity InfixN 4
"%=" -> fixity InfixN 4
"?=" -> fixity InfixN 4
"+=" -> fixity InfixN 4
"-=" -> fixity InfixN 4
"*=" -> fixity InfixN 4
"//=" -> fixity InfixN 4
"^=" -> fixity InfixN 4
"^^=" -> fixity InfixN 4
"**=" -> fixity InfixN 4
"&&=" -> fixity InfixN 4
"||=" -> fixity InfixN 4
"<~" -> fixity InfixR 2
"<.=" -> fixity InfixN 4
"<?=" -> fixity InfixN 4
"<>~" -> fixity InfixR 4
"<>=" -> fixity InfixN 4
"^.." -> fixity InfixL 8
"^?" -> fixity InfixL 8
"^?!" -> fixity InfixL 8
"^@.." -> fixity InfixL 8
"^@?" -> fixity InfixL 8
"^@?!" -> fixity InfixL 8
"^." -> fixity InfixL 8
"^@." -> fixity InfixL 8
"<." -> fixity InfixR 9
".>" -> fixity InfixR 9
"<.>" -> fixity InfixR 9
"@@~" -> fixity InfixR 4
"@@=" -> fixity InfixR 4
"&~" -> fixity InfixL 1
"??" -> fixity InfixL 1
"<|" -> fixity InfixR 5
"|>" -> fixity InfixL 5
"%~" -> fixity InfixR 4
".~" -> fixity InfixR 4
"?~" -> fixity InfixR 4
"<.~" -> fixity InfixR 4
"<?~" -> fixity InfixR 4
"+~" -> fixity InfixR 4
"*~" -> fixity InfixR 4
"-~" -> fixity InfixR 4
"//~" -> fixity InfixR 4
"^~" -> fixity InfixR 4
"^^~" -> fixity InfixR 4
"**~" -> fixity InfixR 4
"||~" -> fixity InfixR 4
"&&~" -> fixity InfixR 4
".=" -> fixity InfixN 4
"%=" -> fixity InfixN 4
"?=" -> fixity InfixN 4
"+=" -> fixity InfixN 4
"-=" -> fixity InfixN 4
"*=" -> fixity InfixN 4
"//=" -> fixity InfixN 4
"^=" -> fixity InfixN 4
"^^=" -> fixity InfixN 4
"**=" -> fixity InfixN 4
"&&=" -> fixity InfixN 4
"||=" -> fixity InfixN 4
"<~" -> fixity InfixR 2
"<.=" -> fixity InfixN 4
"<?=" -> fixity InfixN 4
"<>~" -> fixity InfixR 4
"<>=" -> fixity InfixN 4
"^.." -> fixity InfixL 8
"^?" -> fixity InfixL 8
"^?!" -> fixity InfixL 8
"^@.." -> fixity InfixL 8
"^@?" -> fixity InfixL 8
"^@?!" -> fixity InfixL 8
"^." -> fixity InfixL 8
"^@." -> fixity InfixL 8
"<." -> fixity InfixR 9
".>" -> fixity InfixR 9
"<.>" -> fixity InfixR 9
"@@~" -> fixity InfixR 4
"@@=" -> fixity InfixR 4
"&~" -> fixity InfixL 1
"??" -> fixity InfixL 1
-- certain other operators
@ -343,50 +343,62 @@ hardcodedFixity allowUnqualify = \case
-- ".*?" -> fixity _ _
-- ".+." -> fixity _ _
-- ".-." -> fixity _ _
".&." -> fixity InfixR 1
".&&." -> fixity InfixR 1
".||." -> fixity InfixR 1
"==>" -> fixity InfixR 0
"=/=" -> fixity InfixN 4
"===" -> fixity InfixN 4
".:!" -> fixity InfixL 9
".:?" -> fixity InfixL 9
".&." -> fixity InfixR 1
".&&." -> fixity InfixR 1
".||." -> fixity InfixR 1
"==>" -> fixity InfixR 0
"=/=" -> fixity InfixN 4
"===" -> fixity InfixN 4
".:!" -> fixity InfixL 9
".:?" -> fixity InfixL 9
-- ".:>" -> fixity _ _
-- ".:>?" -> fixity _ _
"<.>" -> fixity InfixR 7
"</>" -> fixity InfixR 5
"<?>" -> fixity InfixL 9
"<.>" -> fixity InfixR 7
"</>" -> fixity InfixR 5
"<?>" -> fixity InfixL 9
-- "~" -> fixity _ _
"===" -> fixity InfixN 4
"!?" -> fixity InfixL 9
"%==" -> fixity InfixN 3
".*" -> fixity InfixR 8
".**" -> fixity InfixR 8
".***" -> fixity InfixR 8
":?-" -> fixity InfixN 1
"::-" -> fixity InfixN 0
"&!" -> fixity InfixL 1
"===" -> fixity InfixN 4
"!?" -> fixity InfixL 9
"%==" -> fixity InfixN 3
".*" -> fixity InfixR 8
".**" -> fixity InfixR 8
".***" -> fixity InfixR 8
":?-" -> fixity InfixN 1
"::-" -> fixity InfixN 0
"&!" -> fixity InfixL 1
-- quickcheck (-state-machine)
":&&" -> fixity InfixL 9
":||" -> fixity InfixL 9
":&&:" -> fixity InfixL 9
":=>" -> fixity InfixL 9
":==" -> fixity InfixL 9
":/=" -> fixity InfixL 9
":<" -> fixity InfixL 9
":<=" -> fixity InfixL 9
":>" -> fixity InfixL 9
":>=" -> fixity InfixL 9
":->" -> fixity InfixL 9
":&&" -> fixity InfixL 9
":||" -> fixity InfixL 9
":&&:" -> fixity InfixL 9
":=>" -> fixity InfixL 9
":==" -> fixity InfixL 9
":/=" -> fixity InfixL 9
":<" -> fixity InfixL 9
":<=" -> fixity InfixL 9
":>" -> fixity InfixL 9
":>=" -> fixity InfixL 9
":->" -> fixity InfixL 9
".==" -> fixity InfixN 5
"./" -> fixity InfixN 5
".<" -> fixity InfixN 5
".<=" -> fixity InfixN 5
".>" -> fixity InfixN 5
".>=" -> fixity InfixN 5
"`member`" -> fixity InfixN 8
"`notMember`" -> fixity InfixN 8
".//" -> fixity InfixL 4
".&&" -> fixity InfixR 3
".||" -> fixity InfixR 2
".=>" -> fixity InfixR 1
-- servant
":>" -> fixity InfixR 4
":<|>" -> fixity InfixR 3
":-" -> fixity InfixL 0
":>" -> fixity InfixR 4
":<|>" -> fixity InfixR 3
":-" -> fixity InfixL 0
-- postgresql-simple
":." -> fixity InfixR 3 -- this has wildly different fixities in different libraries
":." -> fixity InfixR 3 -- this has wildly different fixities in different libraries
-- ?
-- ":-:" -> fixity _ _
@ -399,7 +411,7 @@ hardcodedFixity allowUnqualify = \case
-- ":>:" -> fixity _ _
-- ":>=:" -> fixity _ _
str -> case (Safe.headMay str, Safe.lastMay str) of
str -> case (Safe.headMay str, Safe.lastMay str) of
(Just '\'', _) -> hardcodedFixity False (drop 1 str)
(Just '`', Just '`') -> Just $ Fixity NoSourceText 9 InfixL
(Just c, _) | Data.Char.isAlpha c && allowUnqualify -> hardcodedFixity False