feat: Reference type family
This commit is contained in:
parent
00898b18dc
commit
e30e3b02e1
2 changed files with 12 additions and 5 deletions
|
@ -20,7 +20,7 @@ import Language.Java.Classfile.Extractable (Extractable)
|
|||
import Language.Java.Classfile.ConstantPool (ConstantPool)
|
||||
import Language.Java.Classfile.Flags (Flags)
|
||||
import Language.Java.Classfile.ClassFlag (ClassFlag)
|
||||
import Language.Java.Classfile.ConstantPool.References (ClassReference)
|
||||
import Language.Java.Classfile.ConstantPool.References (Class)
|
||||
import Language.Java.Classfile.Interfaces (Interfaces)
|
||||
import Language.Java.Classfile.Fields (Fields)
|
||||
import Language.Java.Classfile.Methods (Methods)
|
||||
|
@ -33,8 +33,8 @@ data Classfile stage = Classfile
|
|||
, version :: Version
|
||||
, constantPool :: ConstantPool stage
|
||||
, accessFlags :: ClassFlags stage
|
||||
, this :: ClassReference
|
||||
, super :: ClassReference
|
||||
, this :: Class stage
|
||||
, super :: Class stage
|
||||
, interfaces :: Interfaces
|
||||
, fields :: Fields
|
||||
, methods :: Methods
|
||||
|
@ -42,7 +42,7 @@ data Classfile stage = Classfile
|
|||
}
|
||||
deriving stock (Generic)
|
||||
|
||||
deriving instance (Show (Magic stage), Show (ConstantPool stage), Show (ClassFlags stage)) => Show (Classfile stage)
|
||||
deriving instance (Show (Magic stage), Show (ConstantPool stage), Show (ClassFlags stage), Show (Class stage)) => Show (Classfile stage)
|
||||
deriving via Generically (Classfile Parse) instance (Extractable (Classfile Parse))
|
||||
|
||||
type ClassFlags :: Stage -> Type
|
||||
|
|
|
@ -4,16 +4,23 @@
|
|||
{-# LANGUAGE TypeFamilies #-}
|
||||
{-# LANGUAGE InstanceSigs #-}
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
module Language.Java.Classfile.ConstantPool.References (Utf8Reference(..), ClassReference(..), NameAndTypeReference(..), MethodHandleReferenceKind(..), OpaqueReference(..), BootstrapMethodIndex(..)) where
|
||||
{-# LANGUAGE StandaloneKindSignatures #-}
|
||||
module Language.Java.Classfile.ConstantPool.References (Utf8Reference(..), ClassReference(..), NameAndTypeReference(..), MethodHandleReferenceKind(..), OpaqueReference(..), BootstrapMethodIndex(..), Class) where
|
||||
import Data.Word (Word16, Word8)
|
||||
import Language.Java.Classfile.Extractable (Extractable)
|
||||
import Language.Java.Classfile.Extractable.AsTag
|
||||
( TagValue(..), AsTag, AsTag(..) )
|
||||
import Language.Java.Classfile.Stage (Stage(..))
|
||||
import Data.Kind (Type)
|
||||
|
||||
newtype Utf8Reference = Utf8Reference Word16
|
||||
deriving stock (Show)
|
||||
deriving newtype Extractable
|
||||
|
||||
type Class :: Stage -> Type
|
||||
type family Class stage where
|
||||
Class Parse = ClassReference
|
||||
|
||||
newtype ClassReference = ClassReference Word16
|
||||
deriving stock (Show)
|
||||
deriving newtype Extractable
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue