diff --git a/src/Language/Java/Classfile/ConstantPool.hs b/src/Language/Java/Classfile/ConstantPool.hs index 9f2fab3..a0cf35d 100644 --- a/src/Language/Java/Classfile/ConstantPool.hs +++ b/src/Language/Java/Classfile/ConstantPool.hs @@ -8,6 +8,8 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE StandaloneDeriving #-} module Language.Java.Classfile.ConstantPool (ConstantPool(..)) where import Data.Word (Word16) import Data.Array.IArray (Array, listArray) @@ -18,15 +20,15 @@ import qualified Data.Text as Text import Language.Java.Classfile.Stage (Stage(..)) import Data.Kind (Type) +type ConstantPool :: Stage -> Type +data ConstantPool stage where + ConstantPool :: (Array Word16 Entry) -> ConstantPool Parse + NoPool :: ConstantPool Resolve + +deriving instance Show (ConstantPool stage) + -- | 'Stage'-indexed constant-pool. The constant-pool is erased after resolving the class file. -type ConstantPool :: Stage -> Type -data family ConstantPool stage - -newtype instance ConstantPool Parse = ConstantPool (Array Word16 Entry) - deriving stock (Show) - -data instance ConstantPool Resolve = NoPool instance Extractable (ConstantPool Parse) where extract :: Extract (ConstantPool Parse)