packages feed

liquidhaskell-0.9.0.2.1: tests/neg/TypeLitNat.hs

{-@ LIQUID "--expect-any-error" @-}
{-# LANGUAGE KindSignatures      #-}
{-# LANGUAGE DataKinds           #-}
{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE RankNTypes          #-}
{-# LANGUAGE ScopedTypeVariables #-}

module TypeLitNat where

import GHC.TypeLits



-- THIS SHOULD BE UNSAFE
miunsafe1 :: forall s. MI s 
miunsafe1 = Small 0

-- THIS SHOULD BE UNSAFE 
miunsafe2 :: MI 0 
miunsafe2 = Small 10


data MI (s :: Nat)
  = Small { mi_input :: Int  }


{-@ Small :: forall (s :: Nat). {v:Int | s ~~ v } -> MI s @-}

-- OR 

{- data MI (s :: Symbol)
    = Small { mi_input :: {v:String | v == s } } @-}