{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Language.Java.Syntax(
CompilationUnitNode (..),
ModuleSpecNode (..),
TypeDeclNode (..),
ClassDeclNode (..),
DeclNode (..),
MemberDeclNode (..),
VarDeclIdNode (..),
VarInitNode (..),
ExplConstrInvNode (..),
BlockStmtNode (..),
StmtNode (..),
TryResourceNode (..),
SwitchLabelNode (..),
ForInitNode (..),
ExpNode (..),
LhsNode (..),
FieldAccessNode (..),
LambdaParamsNode (..),
LambdaExpressionNode (..),
MethodInvocationNode (..),
CompilationUnit (..),
ModuleDeclaration (..),
PackageDecl (..),
ModuleRequires (..),
ModuleExports (..),
ImportDecl (..),
ClassDecl (..),
EnumDecl (..),
Extends (..),
Implements (..),
ClassBody (..),
EnumBody (..),
EnumConstant (..),
InterfaceDecl (..),
InterfaceKind (..),
InterfaceBody (..),
InitDecl (..),
FieldDecl (..),
MethodDecl (..),
ConstructorDecl (..),
VarDecl (..),
VarId (..),
FormalParam (..),
MethodBody (..),
ConstructorBody (..),
ThisInvoke (..),
SuperInvoke (..),
PrimarySuperInvoke (..),
Modifier (..),
Annotation (..),
ElementValue (..),
Block (..),
LocalVars (..),
IfThenElse (..),
While (..),
BasicFor (..),
EnhancedFor (..),
Empty (..),
Assert (..),
Switch (..),
Do (..),
Break (..),
Continue (..),
Return (..),
Synchronized (..),
Throw (..),
Try (..),
Labeled (..),
Catch (..),
TryResourceVar (..),
TryResourceFinalVar (..),
SwitchBlock (..),
ForLocalVars (..),
ForInitExps (..),
ExceptionType (..),
Lit (..),
ClassLit (..),
This (..),
QualifiedThis (..),
InstanceCreation (..),
QualInstanceCreation (..),
ArrayCreate (..),
ArrayCreateInit (..),
ExpName (..),
Cast (..),
BinOp (..),
InstanceOf (..),
Cond (..),
Assign (..),
Lambda (..),
MethodRef (..),
NameLhs (..),
ArrayIndex (..),
PrimaryFieldAccess (..),
SuperFieldAccess (..),
ClassFieldAccess (..),
LambdaSingleParam (..),
LambdaFormalParams (..),
LambdaInferredParams (..),
MethodCall (..),
PrimaryMethodCall (..),
SuperMethodCall (..),
ClassMethodCall (..),
TypeMethodCall (..),
ArrayInit (..),
Argument
) where
import Data.Data
import GHC.Generics (Generic)
import Language.Java.Syntax.Exp
import Language.Java.Syntax.Types
data CompilationUnitNode l
= CompilationUnitNode (CompilationUnit l)
| ModuleDeclarationNode (ModuleDeclaration l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ModuleSpecNode l
= ModuleRequiresNode (ModuleRequires l)
| ModuleExportsNode (ModuleExports l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data TypeDeclNode l
= ClassTypeDeclNode (ClassDeclNode l)
| InterfaceTypeDeclNode (InterfaceDecl l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ClassDeclNode l
= ClassDeclNode (ClassDecl l)
| EnumDeclNode (EnumDecl l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data DeclNode l
= MemberDeclNode (MemberDeclNode l)
| InitDeclNode (InitDecl l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data MemberDeclNode l
= FieldDeclNode (FieldDecl l)
| MethodDeclNode (MethodDecl l)
| ConstructorDeclNode (ConstructorDecl l)
| MemberClassDeclNode (ClassDeclNode l)
| MemberInterfaceDeclNode (InterfaceDecl l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data VarDeclIdNode l
= VarIdNode (VarId l)
| VarDeclArrayNode (VarDeclIdNode l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data VarInitNode l
= InitExpNode (ExpNode l)
| InitArrayNode (ArrayInit l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ExplConstrInvNode l
= ThisInvokeNode (ThisInvoke l)
| SuperInvokeNode (SuperInvoke l)
| PrimarySuperInvokeNode (PrimarySuperInvoke l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data BlockStmtNode l
= BlockStmtNode (StmtNode l)
| LocalClassNode (ClassDeclNode l)
| LocalVarsNode (LocalVars l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data StmtNode l
= StmtBlockNode (Block l)
| IfThenElseNode (IfThenElse l)
| WhileNode (While l)
| BasicForNode (BasicFor l)
| EnhancedForNode (EnhancedFor l)
| EmptyNode (Empty l)
| ExpStmtNode (ExpNode l)
| AssertNode (Assert l)
| SwitchNode (Switch l)
| DoNode (Do l)
| BreakNode (Break l)
| ContinueNode (Continue l)
| ReturnNode (Return l)
| SynchronizedNode (Synchronized l)
| ThrowNode (Throw l)
| TryNode (Try l)
| LabeledNode (Labeled l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data TryResourceNode l
= TryResourceVarNode (TryResourceVar l)
| TryResourceFinalVarNode (TryResourceFinalVar l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data SwitchLabelNode l
= SwitchCaseNode (ExpNode l)
| DefaultNode l
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ForInitNode l
= ForLocalVarsNode (ForLocalVars l)
| ForInitExpsNode (ForInitExps l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ExpNode l
= LitNode (Lit l)
| ClassLitNode (ClassLit l)
| ThisNode (This l)
| QualifiedThisNode (QualifiedThis l)
| InstanceCreationNode (InstanceCreation l)
| QualInstanceCreationNode (QualInstanceCreation l)
| ArrayCreateNode (ArrayCreate l)
| ArrayCreateInitNode (ArrayCreateInit l)
| FieldAccessNode (FieldAccessNode l)
| MethodInvNode (MethodInvocationNode l)
| ArrayAccessNode (ArrayIndex l)
| ExpNameNode (ExpName l)
| PostIncrementNode (ExpNode l)
| PostDecrementNode (ExpNode l)
| PreIncrementNode (ExpNode l)
| PreDecrementNode (ExpNode l)
| PrePlusNode (ExpNode l)
| PreMinusNode (ExpNode l)
| PreBitComplNode (ExpNode l)
| PreNotNode (ExpNode l)
| CastNode (Cast l)
| BinOpNode (BinOp l)
| InstanceOfNode (InstanceOf l)
| CondNode (Cond l)
| AssignNode (Assign l)
| LambdaNode (Lambda l)
| MethodRefNode (MethodRef l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data LhsNode l
= NameLhsNode (NameLhs l)
| FieldLhsNode (FieldAccessNode l)
| ArrayLhsNode (ArrayIndex l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data FieldAccessNode l
= PrimaryFieldAccessNode (PrimaryFieldAccess l)
| SuperFieldAccessNode (SuperFieldAccess l)
| ClassFieldAccessNode (ClassFieldAccess l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data LambdaParamsNode l
= LambdaSingleParamNode (LambdaSingleParam l)
| LambdaFormalParamsNode (LambdaFormalParams l)
| LambdaInferredParamsNode (LambdaInferredParams l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data LambdaExpressionNode l
= LambdaExpressionNode (ExpNode l)
| LambdaBlockNode (Block l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data MethodInvocationNode l
= MethodCallNode (MethodCall l)
| PrimaryMethodCallNode (PrimaryMethodCall l)
| SuperMethodCallNode (SuperMethodCall l)
| ClassMethodCallNode (ClassMethodCall l)
| TypeMethodCallNode (TypeMethodCall l)
deriving (Eq,Show,Read,Typeable,Generic,Data)
data CompilationUnit l = CompilationUnit
{ infoCompUnit :: l
, packageLocation :: Maybe (PackageDecl l)
, imports :: [ImportDecl l]
, typeDecls :: [TypeDeclNode l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ModuleDeclaration l = ModuleDeclaration
{ infoModuleDecl :: l
, modulePackage :: Package
, moduleSpecs :: [ModuleSpecNode l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data PackageDecl l = PackageDecl { infoPackDec :: l, packageDecl :: Package}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ModuleRequires l = ModuleRequires
{ infoModuleRequires :: l
, requireModule :: Package
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ModuleExports l = ModuleExports
{ infoModuleExports :: l
, exportsPackage :: Package
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ImportDecl l = ImportDecl
{ infoImportDecl :: l
, staticImport :: Bool
, importPackage :: Package
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ClassDecl l = ClassDecl
{ infoClassDecl :: l
, classDeclModifiers :: [Modifier l]
, classDeclName :: Ident
, classTypeParams :: [TypeParam]
, extends :: Maybe (Extends l)
, classImplements :: [Implements l]
, classBody :: ClassBody l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data EnumDecl l = EnumDecl
{ infoEnumDecl :: l
, enumDeclModifiers :: [Modifier l]
, enumeDeclName :: Ident
, enumImplements :: [Implements l]
, enumBody :: EnumBody l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Extends l = Extends { infoExtends :: l, extendsClass :: RefType }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Implements l = Implements { infoImplements :: l, implementsInterface :: RefType }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ClassBody l = ClassBody { infoClassBody :: l, classDecls :: [DeclNode l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data EnumBody l = EnumBody { infoEnumBody :: l, enumConstants :: [EnumConstant l], enumDecls :: [DeclNode l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data EnumConstant l = EnumConstant
{ infoEnumConstant :: l
, enumConstantName :: Ident
, enumArguments :: [Argument l]
, enumConstantBody :: Maybe (ClassBody l)
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data InterfaceDecl l = InterfaceDecl
{ infoInterfaceDecl :: l
, interfaceKind :: InterfaceKind
, interfaceDeclModifiers :: [Modifier l]
, interfaceDeclName :: Ident
, interfaceTypeParams :: [TypeParam]
, interfaceExtends :: [Extends l]
, interfaceBody :: InterfaceBody l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data InterfaceKind = InterfaceNormal | InterfaceAnnotation
deriving (Eq,Show,Read,Typeable,Generic,Data)
data InterfaceBody l = InterfaceBody { infoInterfaceBody ::l, members :: [MemberDeclNode l]}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data InitDecl l = InitDecl { infoInitDecl :: l, staticDecl :: Bool, statements :: Block l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data FieldDecl l = FieldDecl
{ infoFieldDecl :: l
, memberDeclModifiers :: [Modifier l]
, fieldType :: Type
, fieldVarDecls :: [VarDecl l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data MethodDecl l = MethodDecl
{ infoMethodDecl :: l
, methodDeclModifiers :: [Modifier l]
, methodTypeParams :: [TypeParam]
, returnType :: Maybe Type
, methodDeclName :: Ident
, params :: [FormalParam l]
, exceptions :: [ExceptionType l]
, defaultInterfaceAnnotation :: Maybe (ExpNode l)
, methodBody :: MethodBody l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ConstructorDecl l = ConstructorDecl
{ infoConstructorDecl :: l
, constructorMod :: [Modifier l]
, constructorTypeParams :: [TypeParam]
, constructorClassName :: Ident
, constructorFormalParams :: [FormalParam l]
, constructorExceptions :: [ExceptionType l]
, constructorBody :: ConstructorBody l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data VarDecl l = VarDecl { infoVarDecl :: l, varDeclName :: VarDeclIdNode l, varInit :: Maybe (VarInitNode l) }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data VarId l = VarId { infoVarId :: l, varIdName :: Ident }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data FormalParam l = FormalParam
{ infoFormalParam :: l
, formalParamModifiers :: [Modifier l]
, paramType :: Type
, variableArity :: Bool
, paramName :: VarDeclIdNode l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data MethodBody l = MethodBody { infoMethodBody :: l, impl :: Maybe (Block l) }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ConstructorBody l = ConstructorBody
{ infoConstructorBody :: l
, constructorInvoc :: Maybe (ExplConstrInvNode l)
, constrBody :: [BlockStmtNode l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ThisInvoke l = ThisInvoke
{ infoThisInvoke :: l
, thisTypeArguments :: [RefType]
, thisConstrArguments :: [Argument l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data SuperInvoke l = SuperInvoke
{ infoSuperInvoke :: l
, superTypeArguments :: [RefType]
, superConstrArguments :: [Argument l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data PrimarySuperInvoke l = PrimarySuperInvoke
{ infoPrimarySuperInvoke :: l
, primary :: ExpNode l
, primaryTypeArguments :: [RefType]
, primaryConstrArguments :: [Argument l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Modifier l
= Public l
| Private l
| Protected l
| Abstract l
| Final l
| Static l
| StrictFP l
| Transient l
| Volatile l
| Native l
| Annotation (Annotation l)
| Synchronized_ l
| DefaultModifier l
deriving (Eq,Read,Typeable,Generic,Data)
instance (Show l) => Show (Modifier l) where
show (Public _) = "public"
show (Private _) = "private"
show (Protected _) = "protected"
show (Abstract _) = "abstract"
show (Final _) = "final"
show (Static _) = "static"
show (StrictFP _) = "strictfp"
show (Transient _) = "transient"
show (Volatile _) = "volatile"
show (Native _) = "native"
show (Annotation a) = show a
show (Synchronized_ _) = "synchronized"
show (DefaultModifier _) = "default"
data Annotation l = NormalAnnotation { annName :: Name
, annKV :: [(Ident, ElementValue l)] }
| SingleElementAnnotation { annName :: Name
, annValue:: ElementValue l }
| MarkerAnnotation { annName :: Name }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ElementValue l = EVVal { infoEVVal :: l, elementVarInit :: VarInitNode l }
| EVAnn { infoEVAnn :: l, annotation :: Annotation l}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Block l = Block { infoBlock :: l, blockStatements :: [BlockStmtNode l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data LocalVars l = LocalVars
{ infoLocalVars :: l
, locaVarModifiers :: [Modifier l]
, blockVarType :: Type
, localVarDecls :: [VarDecl l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data IfThenElse l = IfThenElse { infoIfThenElse :: l, ifExp :: ExpNode l, thenExp :: StmtNode l, elseExp :: Maybe (StmtNode l) }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data While l = While { infoWhile :: l, whileVondition :: ExpNode l, whileBody :: StmtNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data BasicFor l = BasicFor
{ infoBasicFor :: l
, forInit :: Maybe (ForInitNode l)
, forCond :: Maybe (ExpNode l)
, forUpdate :: Maybe [ExpNode l]
, basicForBody :: StmtNode l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data EnhancedFor l = EnhancedFor
{ infoEnhancedFor :: l
, loopVarModifiers :: [Modifier l]
, loopVarType :: Type
, loopVarName :: Ident
, iterable :: ExpNode l
, enhancedForBody :: StmtNode l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
newtype Empty l = Empty { infoEmpty :: l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Assert l = Assert { infoAssert :: l, booleanExp :: ExpNode l, valueExp :: Maybe (ExpNode l) }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Switch l = Switch { infoSwitch :: l, switchValue :: ExpNode l, switchBlocks :: [SwitchBlock l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Do l = Do { infoDo :: l, doBody :: StmtNode l, doCondition :: ExpNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Break l = Break { infoBreak :: l, breakLabel :: Maybe Ident }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Continue l = Continue { infoContinue :: l, continueLabel :: Maybe Ident }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Return l = Return { infoReturn :: l, returnExp :: Maybe (ExpNode l) }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Synchronized l = Synchronized { infoSynchronized :: l, synchronizeOn :: ExpNode l, synchronizeBloc :: Block l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Throw l = Throw { infoThrow :: l, throwExp :: ExpNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Try l = Try
{ infoTry :: l
, tryResource :: [TryResourceNode l]
, tryBlock :: Block l
, catches :: [Catch l]
, finally :: Maybe (Block l)
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Labeled l = Labeled { infoLabeled :: l, label :: Ident, labeledStmt :: StmtNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Catch l = Catch { infoCatch :: l, catchParam :: FormalParam l, catchBlock :: Block l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data TryResourceVar l = TryResourceVar
{ infoTryResourceVar :: l
, resourceModifiers :: [Modifier l]
, resourceVarType :: RefType
, resourceVarDecl :: [VarDecl l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data TryResourceFinalVar l = TryResourceFinalVar
{ infoTryResourceFinalVar :: l
, resourceFinalVarName :: Ident
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data SwitchBlock l = SwitchBlock { infoSwitchBlock :: l, switchLabel :: SwitchLabelNode l, switchStmts :: [BlockStmtNode l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ForLocalVars l = ForLocalVars
{ infoForLocalVars :: l
, forVarModifiers :: [Modifier l]
, forVarType :: Type
, forVarDecls :: [VarDecl l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ForInitExps l = ForInitExps { infoForInitExps :: l, initExpr :: [ExpNode l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ExceptionType l = ExceptionType { infoExceptionType :: l, expectionType :: RefType }
deriving (Eq,Show,Read,Typeable,Generic,Data)
type Argument = ExpNode
data Lit l = Lit { infoLit :: l, literal :: Literal }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ClassLit l = ClassLit { infoClassLit :: l, classLit :: Maybe Type }
deriving (Eq,Show,Read,Typeable,Generic,Data)
newtype This l = This { infoThis :: l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data QualifiedThis l = QualifiedThis { infoQualifiedThis :: l, qualiType :: Type }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data InstanceCreation l = InstanceCreation
{ infoInstanceCreation :: l
, instanceTypeArgs :: [TypeArgument]
, instanceTypeDecl :: TypeDeclSpecifier
, instanceArguments :: [Argument l]
, anonymousClass :: Maybe (ClassBody l)
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data QualInstanceCreation l = QualInstanceCreation
{ infoQualInstanceCreation :: l
, mysteryExp :: ExpNode l
, qualiInstancetypeArgs :: [TypeArgument]
, className :: Ident
, qualiInstanceArguments :: [Argument l]
, qualiInstanceAnonymousClass :: Maybe (ClassBody l)
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ArrayCreate l = ArrayCreate
{ infoArrayCreate :: l
, arrayType :: Type
, arrayDimExprs :: [ExpNode l]
, dimensions :: Int
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ArrayCreateInit l = ArrayCreateInit
{ infoArrayCreateInit :: l
, arrayInitType :: Type
, arrayInitDimensions :: Int
, arrayCreatInit :: ArrayInit l
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ExpName l = ExpName { infoExpName :: l, expName :: Name }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Cast l = Cast { infoCast :: l, castTarget :: Type, castArg :: ExpNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data BinOp l = BinOp { infoBinOp :: l, binArgLeft :: ExpNode l, binOp :: Op, binOpRight :: ExpNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data InstanceOf l = InstanceOf { infoInstanceOf :: l, instanceOfArg :: ExpNode l, instanceOfTarget :: RefType }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Cond l = Cond { infoCond :: l, condition :: ExpNode l, conditionTrueExp :: ExpNode l, conditionFalseExp :: ExpNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Assign l = Assign { infoAssign :: l, assignTarget :: LhsNode l, assignOp :: AssignOp, assignSource :: ExpNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data Lambda l = Lambda { infoLambda :: l, lambdaParams :: LambdaParamsNode l, lambdaExpression :: LambdaExpressionNode l }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data MethodRef l = MethodRef { infoMethodRef :: l, methodClass :: Name, methodName :: Ident }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data NameLhs l = NameLhs { infoNameLhs :: l, varLhsName :: Name }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ArrayIndex l = ArrayIndex
{ infoArrayIndex :: l
, arrayName :: ExpNode l
, arrayIndices :: [ExpNode l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data PrimaryFieldAccess l = PrimaryFieldAccess
{ infoPrimaryFieldAccess :: l
, targetObject :: ExpNode l
, targetField :: Ident
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data SuperFieldAccess l = SuperFieldAccess { infoSuperFieldAccess :: l, superField :: Ident }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ClassFieldAccess l = ClassFieldAccess { infoClassFieldAccess :: l, targetClass :: Name, staticField :: Ident }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data LambdaSingleParam l = LambdaSingleParam { infoLambdaSingleParam :: l, lambdaParamName :: Ident }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data LambdaFormalParams l = LambdaFormalParams { infoLambdaFormalParams :: l, lambdaFormalParams :: [FormalParam l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data LambdaInferredParams l = LambdaInferredParams { infoLambdaInferredParams :: l, lambdaParamNames :: [Ident] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data MethodCall l = MethodCall { infoMethodCall :: l, methodCallName :: Name, methodCallArgs :: [Argument l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)
data PrimaryMethodCall l = PrimaryMethodCall
{ infoPrimaryMethodCall :: l
, methodCallTargetObj :: ExpNode l
, mysteryRefTypes :: [RefType]
, primaryMethodName :: Ident
, primaryMethodCallArgs :: [Argument l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data SuperMethodCall l = SuperMethodCall
{ infoSuperMethodCall :: l
, superMethodTypeArgs :: [RefType]
, superMethodName :: Ident
, superMethodArgs :: [Argument l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ClassMethodCall l = ClassMethodCall
{ infoClassMethodCall :: l
, methodClassTarget :: Name
, classMethodTypeArgs :: [RefType]
, classMethodName :: Ident
, classMethodArgs :: [Argument l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data TypeMethodCall l = TypeMethodCall
{ infoTypeMethodCall :: l
, typeMethodClassTarget :: Name
, typeMethodTypeArgs :: [RefType]
, typeMethodName :: Ident
, typeMethodArgs :: [Argument l]
}
deriving (Eq,Show,Read,Typeable,Generic,Data)
data ArrayInit l = ArrayInit { infoArrayInit :: l, arrayInits :: [VarInitNode l] }
deriving (Eq,Show,Read,Typeable,Generic,Data)