Hardcode more precedences
parent
884c7da97c
commit
414baca643
|
@ -99,10 +99,11 @@ balanceOpTree allowUnqualify = \case
|
||||||
(warns, OpKnown paren locO locC fixity c cs)
|
(warns, OpKnown paren locO locC fixity c cs)
|
||||||
Right t -> (warns, t)
|
Right t -> (warns, t)
|
||||||
Left moreWarns ->
|
Left moreWarns ->
|
||||||
( warns
|
( ( warns
|
||||||
++ [ LayoutWarning ("Fixity of operator not known: " ++ w)
|
++ [ LayoutWarning ("Fixity of operator not known: " ++ w)
|
||||||
| w <- moreWarns
|
| w <- moreWarns
|
||||||
]
|
]
|
||||||
|
)
|
||||||
, x
|
, x
|
||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
@ -255,9 +256,15 @@ hardcodedFixity allowUnqualify = \case
|
||||||
"!<<." -> Just $ Fixity NoSourceText 8 InfixL
|
"!<<." -> Just $ Fixity NoSourceText 8 InfixL
|
||||||
">=>" -> Just $ Fixity NoSourceText 1 InfixR
|
">=>" -> Just $ Fixity NoSourceText 1 InfixR
|
||||||
"<=<" -> Just $ Fixity NoSourceText 1 InfixR
|
"<=<" -> Just $ Fixity NoSourceText 1 InfixR
|
||||||
|
"&&&" -> Just $ Fixity NoSourceText 3 InfixR
|
||||||
|
"<$!>" -> fixity InfixL 4
|
||||||
|
|
||||||
":~:" -> Just $ Fixity NoSourceText 4 InfixN
|
":~:" -> Just $ Fixity NoSourceText 4 InfixN
|
||||||
":~~:" -> 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.
|
-- non-base from random sources.
|
||||||
"<|" -> Just $ Fixity NoSourceText 5 InfixR
|
"<|" -> Just $ Fixity NoSourceText 5 InfixR
|
||||||
|
@ -269,7 +276,122 @@ hardcodedFixity allowUnqualify = \case
|
||||||
":?" -> Just $ Fixity NoSourceText 7 InfixN
|
":?" -> Just $ Fixity NoSourceText 7 InfixN
|
||||||
":-" -> Just $ Fixity NoSourceText 9 InfixR
|
":-" -> Just $ Fixity NoSourceText 9 InfixR
|
||||||
".:" -> Just $ Fixity NoSourceText 9 InfixR
|
".:" -> Just $ Fixity NoSourceText 9 InfixR
|
||||||
".=" -> Just $ Fixity NoSourceText 8 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
|
||||||
|
|
||||||
|
|
||||||
|
-- certain other operators
|
||||||
|
-- "%." -> Just $ Fixity NoSourceText _ _
|
||||||
|
-- "%==" -> Just $ Fixity NoSourceText _ _
|
||||||
|
-- "%=>%" -> Just $ Fixity NoSourceText _ _
|
||||||
|
-- "&!" -> Just $ Fixity NoSourceText _ _
|
||||||
|
-- "&*" -> Just $ Fixity NoSourceText _ _
|
||||||
|
-- "&/" -> Just $ Fixity NoSourceText _ _
|
||||||
|
-- "&=" -> Just $ Fixity NoSourceText _ _
|
||||||
|
-- "-->" -> Just $ Fixity NoSourceText _ _
|
||||||
|
-- ".*?" -> fixity _ _
|
||||||
|
-- ".+." -> fixity _ _
|
||||||
|
-- ".-." -> fixity _ _
|
||||||
|
".&." -> fixity InfixR 1
|
||||||
|
".&&." -> fixity InfixR 1
|
||||||
|
".||." -> fixity InfixR 1
|
||||||
|
"==>" -> fixity InfixR 0
|
||||||
|
"=/=" -> fixity InfixN 4
|
||||||
|
"===" -> fixity InfixN 4
|
||||||
|
-- ".*" -> fixity InfixR 8
|
||||||
|
-- ".**" -> fixity InfixR 8
|
||||||
|
-- ".***" -> fixity InfixR 8
|
||||||
|
".:!" -> fixity InfixL 9
|
||||||
|
".:?" -> fixity InfixL 9
|
||||||
|
-- ".:>" -> fixity _ _
|
||||||
|
-- ".:>?" -> fixity _ _
|
||||||
|
"<.>" -> fixity InfixR 7
|
||||||
|
"</>" -> fixity InfixR 5
|
||||||
|
"<?>" -> fixity InfixL 9
|
||||||
|
-- "~" -> fixity _ _
|
||||||
|
"===" -> fixity InfixN 4
|
||||||
|
"!?" -> fixity InfixL 9
|
||||||
|
|
||||||
|
-- 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
|
||||||
|
|
||||||
|
-- servant
|
||||||
|
":>" -> fixity InfixR 4
|
||||||
|
":<|>" -> fixity InfixR 3
|
||||||
|
":-" -> fixity InfixL 0
|
||||||
|
|
||||||
|
-- ?
|
||||||
|
-- ":-:" -> fixity _ _
|
||||||
|
-- ":." -> fixity _ _
|
||||||
|
-- ":/:" -> fixity _ _
|
||||||
|
-- "::-" -> fixity _ _
|
||||||
|
-- "::->" -> fixity _ _
|
||||||
|
-- ":<:" -> fixity _ _
|
||||||
|
-- ":<=:" -> fixity _ _
|
||||||
|
-- ":=:" -> fixity _ _
|
||||||
|
-- ":>:" -> fixity _ _
|
||||||
|
-- ":>=:" -> 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 '\'', _) -> hardcodedFixity False (drop 1 str)
|
||||||
|
@ -277,3 +399,4 @@ hardcodedFixity allowUnqualify = \case
|
||||||
(Just c, _) | Data.Char.isAlpha c && allowUnqualify -> hardcodedFixity False
|
(Just c, _) | Data.Char.isAlpha c && allowUnqualify -> hardcodedFixity False
|
||||||
$ dropWhile (\x -> (Data.Char.isAlpha x || x == '.')) str
|
$ dropWhile (\x -> (Data.Char.isAlpha x || x == '.')) str
|
||||||
_ -> Nothing
|
_ -> Nothing
|
||||||
|
where fixity a b = Just (Fixity NoSourceText b a)
|
||||||
|
|
Loading…
Reference in New Issue