module HIndent.Ast.Declaration.Instance.Class.OverlapMode ( OverlapMode , mkOverlapMode ) where import qualified GHC.Types.Basic as GHC import HIndent.Ast.NodeComments import {-# SOURCE #-} HIndent.Pretty import HIndent.Pretty.Combinators.String import HIndent.Pretty.NodeComments data OverlapMode = Overlappable | Overlapping | Overlaps | Incoherent instance CommentExtraction OverlapMode where nodeComments :: OverlapMode -> NodeComments nodeComments OverlapMode Overlappable = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] nodeComments OverlapMode Overlapping = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] nodeComments OverlapMode Overlaps = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] nodeComments OverlapMode Incoherent = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] instance Pretty OverlapMode where pretty' :: OverlapMode -> Printer () pretty' OverlapMode Overlappable = HasCallStack => String -> Printer () String -> Printer () string String "{-# OVERLAPPABLE #-}" pretty' OverlapMode Overlapping = HasCallStack => String -> Printer () String -> Printer () string String "{-# OVERLAPPING #-}" pretty' OverlapMode Overlaps = HasCallStack => String -> Printer () String -> Printer () string String "{-# OVERLAPS #-}" pretty' OverlapMode Incoherent = HasCallStack => String -> Printer () String -> Printer () string String "{-# INCOHERENT #-}" mkOverlapMode :: GHC.OverlapMode -> OverlapMode mkOverlapMode :: OverlapMode -> OverlapMode mkOverlapMode GHC.NoOverlap {} = String -> OverlapMode forall a. HasCallStack => String -> a error String "This AST node should never appear in the tree" mkOverlapMode GHC.Overlappable {} = OverlapMode Overlappable mkOverlapMode GHC.Overlapping {} = OverlapMode Overlapping mkOverlapMode GHC.Overlaps {} = OverlapMode Overlaps mkOverlapMode GHC.Incoherent {} = OverlapMode Incoherent