packages feed

haskell-tools-builtin-refactorings-1.0.1.1: test/ExtensionOrganizerTest/FlexibleInstancesTest/SynonymNestedTypes.hs

{-# LANGUAGE TypeOperators,
             FlexibleInstances
             #-}

module SynonymNestedTypes where

import Definitions

{-# ANN module "HLint: ignore Redundant bracket" #-}


instance C1 (TS1 a) where  {-* TypeSynonymInstances *-}
  f1 _ = True

instance C1 (TS1 (TS1 a)) where    {-* FlexibleInstances, TypeSynonymInstances *-}
  f1 _ = True

instance C1 (TS2 a (TS1 b)) where  {-* FlexibleInstances, TypeSynonymInstances *-}
  f1 _ = True

instance C1 (TS2 (TS1 a) b) where  {-* FlexibleInstances, TypeSynonymInstances *-}
  f1 _ = True

instance C1 (PlusSyn (TS1 a) b) where  {-* FlexibleInstances, TypeSynonymInstances *-}
  f1 _ = True

instance C1 (DoubleList a) where  {-* FlexibleInstances, TypeSynonymInstances *-}
  f1 _ = True

instance C1 (Phantom (T1 a) a) where  {-* FlexibleInstances, TypeSynonymInstances *-}
  f1 _ = True

-- False positive
instance C1 (Phantom a (T1 a)) where  {-* FlexibleInstances, TypeSynonymInstances *-}
  f1 _ = True