{-# OPTIONS_GHC -fno-warn-orphans #-}

module Language.Futhark.CoreTests () where

import Language.Futhark.Core
import Language.Futhark.PrimitiveTests ()
import Test.QuickCheck

instance Arbitrary Name where
  arbitrary :: Gen Name
arbitrary = String -> Name
nameFromString (String -> Name) -> Gen String -> Gen Name
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Char -> Gen String
forall a. Gen a -> Gen [a]
listOf1 (String -> Gen Char
forall a. HasCallStack => [a] -> Gen a
elements [Char
'a' .. Char
'z'])

instance Arbitrary VName where
  arbitrary :: Gen VName
arbitrary = Name -> Int -> VName
VName (Name -> Int -> VName) -> Gen Name -> Gen (Int -> VName)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Name
forall a. Arbitrary a => Gen a
arbitrary Gen (Int -> VName) -> Gen Int -> Gen VName
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Int
forall a. Arbitrary a => Gen a
arbitrary