Compare commits
2 Commits
84e703d7f3
...
3f9e9d9bcb
Author | SHA1 | Date |
---|---|---|
|
3f9e9d9bcb | |
|
414baca643 |
|
@ -99,10 +99,11 @@ balanceOpTree allowUnqualify = \case
|
|||
(warns, OpKnown paren locO locC fixity c cs)
|
||||
Right t -> (warns, t)
|
||||
Left moreWarns ->
|
||||
( warns
|
||||
++ [ LayoutWarning ("Fixity of operator not known: " ++ w)
|
||||
| w <- moreWarns
|
||||
]
|
||||
( ( warns
|
||||
++ [ LayoutWarning ("Fixity of operator not known: " ++ w)
|
||||
| w <- moreWarns
|
||||
]
|
||||
)
|
||||
, x
|
||||
)
|
||||
where
|
||||
|
@ -255,9 +256,15 @@ hardcodedFixity allowUnqualify = \case
|
|||
"!<<." -> 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 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
|
||||
|
@ -269,7 +276,122 @@ hardcodedFixity allowUnqualify = \case
|
|||
":?" -> Just $ Fixity NoSourceText 7 InfixN
|
||||
":-" -> 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
|
||||
(Just '\'', _) -> hardcodedFixity False (drop 1 str)
|
||||
|
@ -277,3 +399,4 @@ hardcodedFixity allowUnqualify = \case
|
|||
(Just c, _) | Data.Char.isAlpha c && allowUnqualify -> hardcodedFixity False
|
||||
$ dropWhile (\x -> (Data.Char.isAlpha x || x == '.')) str
|
||||
_ -> Nothing
|
||||
where fixity a b = Just (Fixity NoSourceText b a)
|
||||
|
|
|
@ -22,7 +22,6 @@ import GHC.Parser.Annotation ( EpaCommentTok
|
|||
)
|
||||
)
|
||||
import qualified UI.Butcher.Monadic as Butcher
|
||||
-- import qualified Language.Haskell.GHC.ExactPrint.Utils as ExactPrint.Utils
|
||||
import Control.Monad.Trans.Except
|
||||
|
||||
import Language.Haskell.Brittany.Internal.Config.Config
|
||||
|
@ -31,6 +30,8 @@ import Language.Haskell.Brittany.Internal.Util.AST
|
|||
import Language.Haskell.Brittany.Internal.Config.Types.Instances1 ()
|
||||
import Language.Haskell.Brittany.Internal.Config.Types.Instances2 ()
|
||||
-- import Language.Haskell.Brittany.Internal.Utils
|
||||
-- import qualified Language.Haskell.GHC.ExactPrint.Utils as ExactPrint.Utils
|
||||
-- import Data.Data(toConstr)
|
||||
|
||||
|
||||
|
||||
|
@ -39,6 +40,7 @@ data InlineConfigTarget
|
|||
| InlineConfigTargetNextDecl -- really only next in module
|
||||
| InlineConfigTargetNextBinding -- by name
|
||||
| InlineConfigTargetBinding String
|
||||
deriving Show
|
||||
|
||||
extractCommentConfigs
|
||||
:: (String -> IO ())
|
||||
|
@ -116,13 +118,13 @@ extractCommentConfigs _putErrorLn modul = do
|
|||
]
|
||||
let perSpan = Map.fromListWith
|
||||
(<>)
|
||||
[ (srcSpan, conf)
|
||||
[ (declSpan, conf)
|
||||
| (srcSpan, target, conf) <- lineConfigs
|
||||
, let perBindRes = Map.lookupGT srcSpan declMap
|
||||
, Just (declSpan, names) <- [Map.lookupGT srcSpan declMap]
|
||||
, case target of
|
||||
InlineConfigTargetNextDecl -> True
|
||||
InlineConfigTargetNextBinding | Nothing <- perBindRes -> True
|
||||
_ -> False
|
||||
InlineConfigTargetNextDecl -> True
|
||||
InlineConfigTargetNextBinding -> null names
|
||||
_ -> False
|
||||
]
|
||||
|
||||
pure
|
||||
|
|
|
@ -218,7 +218,8 @@ ppToplevelDecl decl immediateAfterComms = do
|
|||
declConfig & _conf_roundtrip_exactprint_only & confUnpack
|
||||
bd <- fmap fst $ if exactprintOnly
|
||||
then briDocMToPPM layouters
|
||||
$ docSeq (briDocByExact decl : map commentToDoc immediateAfterComms)
|
||||
$ docSeq
|
||||
(briDocByExactNoComment decl : map commentToDoc immediateAfterComms)
|
||||
else do
|
||||
let innerDoc = case decl of
|
||||
L (SrcSpanAnn _ (GHC.RealSrcSpan s _)) _ ->
|
||||
|
|
Loading…
Reference in New Issue