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.ConstantPool (ConstantPool)
|
||||||
import Language.Java.Classfile.Flags (Flags)
|
import Language.Java.Classfile.Flags (Flags)
|
||||||
import Language.Java.Classfile.ClassFlag (ClassFlag)
|
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.Interfaces (Interfaces)
|
||||||
import Language.Java.Classfile.Fields (Fields)
|
import Language.Java.Classfile.Fields (Fields)
|
||||||
import Language.Java.Classfile.Methods (Methods)
|
import Language.Java.Classfile.Methods (Methods)
|
||||||
|
@ -33,8 +33,8 @@ data Classfile stage = Classfile
|
||||||
, version :: Version
|
, version :: Version
|
||||||
, constantPool :: ConstantPool stage
|
, constantPool :: ConstantPool stage
|
||||||
, accessFlags :: ClassFlags stage
|
, accessFlags :: ClassFlags stage
|
||||||
, this :: ClassReference
|
, this :: Class stage
|
||||||
, super :: ClassReference
|
, super :: Class stage
|
||||||
, interfaces :: Interfaces
|
, interfaces :: Interfaces
|
||||||
, fields :: Fields
|
, fields :: Fields
|
||||||
, methods :: Methods
|
, methods :: Methods
|
||||||
|
@ -42,7 +42,7 @@ data Classfile stage = Classfile
|
||||||
}
|
}
|
||||||
deriving stock (Generic)
|
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))
|
deriving via Generically (Classfile Parse) instance (Extractable (Classfile Parse))
|
||||||
|
|
||||||
type ClassFlags :: Stage -> Type
|
type ClassFlags :: Stage -> Type
|
||||||
|
|
|
@ -4,16 +4,23 @@
|
||||||
{-# LANGUAGE TypeFamilies #-}
|
{-# LANGUAGE TypeFamilies #-}
|
||||||
{-# LANGUAGE InstanceSigs #-}
|
{-# LANGUAGE InstanceSigs #-}
|
||||||
{-# LANGUAGE LambdaCase #-}
|
{-# 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 Data.Word (Word16, Word8)
|
||||||
import Language.Java.Classfile.Extractable (Extractable)
|
import Language.Java.Classfile.Extractable (Extractable)
|
||||||
import Language.Java.Classfile.Extractable.AsTag
|
import Language.Java.Classfile.Extractable.AsTag
|
||||||
( TagValue(..), AsTag, AsTag(..) )
|
( TagValue(..), AsTag, AsTag(..) )
|
||||||
|
import Language.Java.Classfile.Stage (Stage(..))
|
||||||
|
import Data.Kind (Type)
|
||||||
|
|
||||||
newtype Utf8Reference = Utf8Reference Word16
|
newtype Utf8Reference = Utf8Reference Word16
|
||||||
deriving stock (Show)
|
deriving stock (Show)
|
||||||
deriving newtype Extractable
|
deriving newtype Extractable
|
||||||
|
|
||||||
|
type Class :: Stage -> Type
|
||||||
|
type family Class stage where
|
||||||
|
Class Parse = ClassReference
|
||||||
|
|
||||||
newtype ClassReference = ClassReference Word16
|
newtype ClassReference = ClassReference Word16
|
||||||
deriving stock (Show)
|
deriving stock (Show)
|
||||||
deriving newtype Extractable
|
deriving newtype Extractable
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue