decaf-0.1.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

AST

Documentation

data RelOp Source #

Instances

Instances details
Show RelOp Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> RelOp -> ShowS #

show :: RelOp -> String #

showList :: [RelOp] -> ShowS #

Eq RelOp Source # 
Instance details

Defined in AST

Methods

(==) :: RelOp -> RelOp -> Bool #

(/=) :: RelOp -> RelOp -> Bool #

data ArithOp Source #

Constructors

Plus 
Minus 
Multiply 
Division 
Modulo 

Instances

Instances details
Show ArithOp Source # 
Instance details

Defined in AST

Eq ArithOp Source # 
Instance details

Defined in AST

Methods

(==) :: ArithOp -> ArithOp -> Bool #

(/=) :: ArithOp -> ArithOp -> Bool #

data EqOp Source #

Constructors

Equal 
NotEqual 

Instances

Instances details
Show EqOp Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> EqOp -> ShowS #

show :: EqOp -> String #

showList :: [EqOp] -> ShowS #

Eq EqOp Source # 
Instance details

Defined in AST

Methods

(==) :: EqOp -> EqOp -> Bool #

(/=) :: EqOp -> EqOp -> Bool #

data CondOp Source #

Constructors

Or 
And 

Instances

Instances details
Show CondOp Source # 
Instance details

Defined in AST

Eq CondOp Source # 
Instance details

Defined in AST

Methods

(==) :: CondOp -> CondOp -> Bool #

(/=) :: CondOp -> CondOp -> Bool #

data NegOp Source #

Constructors

Neg 

Instances

Instances details
Show NegOp Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> NegOp -> ShowS #

show :: NegOp -> String #

showList :: [NegOp] -> ShowS #

Eq NegOp Source # 
Instance details

Defined in AST

Methods

(==) :: NegOp -> NegOp -> Bool #

(/=) :: NegOp -> NegOp -> Bool #

data NotOp Source #

Constructors

Not 

Instances

Instances details
Show NotOp Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> NotOp -> ShowS #

show :: NotOp -> String #

showList :: [NotOp] -> ShowS #

Eq NotOp Source # 
Instance details

Defined in AST

Methods

(==) :: NotOp -> NotOp -> Bool #

(/=) :: NotOp -> NotOp -> Bool #

data ChoiceOp Source #

Constructors

Choice 

Instances

Instances details
Show ChoiceOp Source # 
Instance details

Defined in AST

Eq ChoiceOp Source # 
Instance details

Defined in AST

data AssignOp Source #

Instances

Instances details
Show AssignOp Source # 
Instance details

Defined in AST

Eq AssignOp Source # 
Instance details

Defined in AST

data Type Source #

Instances

Instances details
Show Type Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> Type -> ShowS #

show :: Type -> String #

showList :: [Type] -> ShowS #

Eq Type Source # 
Instance details

Defined in AST

Methods

(==) :: Type -> Type -> Bool #

(/=) :: Type -> Type -> Bool #

data Location Source #

Constructors

Location 

Fields

Instances

Instances details
Generic Location Source # 
Instance details

Defined in AST

Associated Types

type Rep Location :: Type -> Type #

Methods

from :: Location -> Rep Location x #

to :: Rep Location x -> Location #

Show Location Source # 
Instance details

Defined in AST

type Rep Location Source # 
Instance details

Defined in AST

data Assignment Source #

Constructors

Assignment 

Fields

Instances

Instances details
Generic Assignment Source # 
Instance details

Defined in AST

Associated Types

type Rep Assignment :: Type -> Type #

Show Assignment Source # 
Instance details

Defined in AST

type Rep Assignment Source # 
Instance details

Defined in AST

data MethodCall Source #

Constructors

MethodCall 

Fields

Instances

Instances details
Generic MethodCall Source # 
Instance details

Defined in AST

Associated Types

type Rep MethodCall :: Type -> Type #

Show MethodCall Source # 
Instance details

Defined in AST

type Rep MethodCall Source # 
Instance details

Defined in AST

type Rep MethodCall = D1 ('MetaData "MethodCall" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "MethodCall" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Just "args") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Expr]) :*: S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range))))

data ASTRoot Source #

Constructors

ASTRoot 

Fields

Instances

Instances details
Generic ASTRoot Source # 
Instance details

Defined in AST

Associated Types

type Rep ASTRoot :: Type -> Type #

Methods

from :: ASTRoot -> Rep ASTRoot x #

to :: Rep ASTRoot x -> ASTRoot #

Show ASTRoot Source # 
Instance details

Defined in AST

type Rep ASTRoot Source # 
Instance details

Defined in AST

type Rep ASTRoot = D1 ('MetaData "ASTRoot" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "ASTRoot" 'PrefixI 'True) (S1 ('MetaSel ('Just "imports") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [ImportDecl]) :*: (S1 ('MetaSel ('Just "vars") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [FieldDecl]) :*: S1 ('MetaSel ('Just "methods") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [MethodDecl]))))

data ImportDecl Source #

Constructors

ImportDecl 

Fields

Instances

Instances details
Generic ImportDecl Source # 
Instance details

Defined in AST

Associated Types

type Rep ImportDecl :: Type -> Type #

Show ImportDecl Source # 
Instance details

Defined in AST

type Rep ImportDecl Source # 
Instance details

Defined in AST

type Rep ImportDecl = D1 ('MetaData "ImportDecl" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "ImportDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range)))

data FieldDecl Source #

Constructors

FieldDecl 

Fields

Instances

Instances details
Generic FieldDecl Source # 
Instance details

Defined in AST

Associated Types

type Rep FieldDecl :: Type -> Type #

Show FieldDecl Source # 
Instance details

Defined in AST

type Rep FieldDecl Source # 
Instance details

Defined in AST

type Rep FieldDecl = D1 ('MetaData "FieldDecl" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "FieldDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Just "tpe") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range))))

data Argument Source #

Constructors

Argument 

Fields

Instances

Instances details
Generic Argument Source # 
Instance details

Defined in AST

Associated Types

type Rep Argument :: Type -> Type #

Methods

from :: Argument -> Rep Argument x #

to :: Rep Argument x -> Argument #

Show Argument Source # 
Instance details

Defined in AST

type Rep Argument Source # 
Instance details

Defined in AST

type Rep Argument = D1 ('MetaData "Argument" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "Argument" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Just "tpe") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range))))

data MethodSig Source #

Constructors

MethodSig 

Fields

Instances

Instances details
Generic MethodSig Source # 
Instance details

Defined in AST

Associated Types

type Rep MethodSig :: Type -> Type #

Show MethodSig Source # 
Instance details

Defined in AST

type Rep MethodSig Source # 
Instance details

Defined in AST

type Rep MethodSig = D1 ('MetaData "MethodSig" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "MethodSig" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: (S1 ('MetaSel ('Just "tpe") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Type)) :*: S1 ('MetaSel ('Just "args") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Argument]))))

data MethodDecl Source #

Constructors

MethodDecl 

Fields

Instances

Instances details
Generic MethodDecl Source # 
Instance details

Defined in AST

Associated Types

type Rep MethodDecl :: Type -> Type #

Show MethodDecl Source # 
Instance details

Defined in AST

type Rep MethodDecl Source # 
Instance details

Defined in AST

type Rep MethodDecl = D1 ('MetaData "MethodDecl" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "MethodDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "sig") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MethodSig) :*: (S1 ('MetaSel ('Just "block") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Block) :*: S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range))))

data Statement Source #

Constructors

Statement 

Fields

Instances

Instances details
Generic Statement Source # 
Instance details

Defined in AST

Associated Types

type Rep Statement :: Type -> Type #

Show Statement Source # 
Instance details

Defined in AST

type Rep Statement Source # 
Instance details

Defined in AST

type Rep Statement = D1 ('MetaData "Statement" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "Statement" 'PrefixI 'True) (S1 ('MetaSel ('Just "statement_") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Statement_) :*: S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range)))

data Statement_ Source #

Instances

Instances details
Generic Statement_ Source # 
Instance details

Defined in AST

Associated Types

type Rep Statement_ :: Type -> Type #

Show Statement_ Source # 
Instance details

Defined in AST

type Rep Statement_ Source # 
Instance details

Defined in AST

type Rep Statement_ = D1 ('MetaData "Statement_" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) ((C1 ('MetaCons "AssignStmt" 'PrefixI 'True) (S1 ('MetaSel ('Just "assign") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Assignment)) :+: (C1 ('MetaCons "IfStmt" 'PrefixI 'True) (S1 ('MetaSel ('Just "pred") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr) :*: (S1 ('MetaSel ('Just "ifBlock") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Block) :*: S1 ('MetaSel ('Just "elseBlock") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Block)))) :+: C1 ('MetaCons "ForStmt" 'PrefixI 'True) ((S1 ('MetaSel ('Just "init") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Assignment)) :*: S1 ('MetaSel ('Just "pred") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr)) :*: (S1 ('MetaSel ('Just "update") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Assignment)) :*: S1 ('MetaSel ('Just "block") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Block))))) :+: ((C1 ('MetaCons "ReturnStmt" 'PrefixI 'True) (S1 ('MetaSel ('Just "expr") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Expr))) :+: C1 ('MetaCons "MethodCallStmt" 'PrefixI 'True) (S1 ('MetaSel ('Just "methodCall") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MethodCall))) :+: (C1 ('MetaCons "BreakStmt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ContinueStmt" 'PrefixI 'False) (U1 :: Type -> Type))))

data Expr Source #

Constructors

Expr 

Fields

Instances

Instances details
Generic Expr Source # 
Instance details

Defined in AST

Associated Types

type Rep Expr :: Type -> Type #

Methods

from :: Expr -> Rep Expr x #

to :: Rep Expr x -> Expr #

Show Expr Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> Expr -> ShowS #

show :: Expr -> String #

showList :: [Expr] -> ShowS #

type Rep Expr Source # 
Instance details

Defined in AST

type Rep Expr = D1 ('MetaData "Expr" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "Expr" 'PrefixI 'True) (S1 ('MetaSel ('Just "expr_") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr_) :*: (S1 ('MetaSel ('Just "tpe") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type) :*: S1 ('MetaSel ('Just "loc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range))))

data Expr_ Source #

Constructors

LocationExpr 

Fields

MethodCallExpr 
ExternCallExpr 

Fields

IntLiteralExpr 

Fields

BoolLiteralExpr 

Fields

CharLiteralExpr 

Fields

StringLiteralExpr 

Fields

ArithOpExpr 

Fields

RelOpExpr 

Fields

CondOpExpr 

Fields

EqOpExpr 

Fields

NegOpExpr 

Fields

NotOpExpr 

Fields

ChoiceOpExpr 

Fields

LengthExpr 

Fields

Instances

Instances details
Generic Expr_ Source # 
Instance details

Defined in AST

Associated Types

type Rep Expr_ :: Type -> Type #

Methods

from :: Expr_ -> Rep Expr_ x #

to :: Rep Expr_ x -> Expr_ #

Show Expr_ Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> Expr_ -> ShowS #

show :: Expr_ -> String #

showList :: [Expr_] -> ShowS #

type Rep Expr_ Source # 
Instance details

Defined in AST

type Rep Expr_ = D1 ('MetaData "Expr_" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (((C1 ('MetaCons "LocationExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "location") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Location)) :+: (C1 ('MetaCons "MethodCallExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "methodCall") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MethodCall)) :+: C1 ('MetaCons "ExternCallExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Just "args") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Expr])))) :+: ((C1 ('MetaCons "IntLiteralExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "intVal") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int64)) :+: C1 ('MetaCons "BoolLiteralExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "boolVal") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool))) :+: (C1 ('MetaCons "CharLiteralExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "charVal") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Char)) :+: C1 ('MetaCons "StringLiteralExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "strVal") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text))))) :+: (((C1 ('MetaCons "ArithOpExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "arithOp") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArithOp) :*: (S1 ('MetaSel ('Just "lhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr) :*: S1 ('MetaSel ('Just "rhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr))) :+: C1 ('MetaCons "RelOpExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "relOp") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RelOp) :*: (S1 ('MetaSel ('Just "lhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr) :*: S1 ('MetaSel ('Just "rhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr)))) :+: (C1 ('MetaCons "CondOpExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "condOp") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CondOp) :*: (S1 ('MetaSel ('Just "lhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr) :*: S1 ('MetaSel ('Just "rhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr))) :+: C1 ('MetaCons "EqOpExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "eqOp") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 EqOp) :*: (S1 ('MetaSel ('Just "lhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr) :*: S1 ('MetaSel ('Just "rhs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr))))) :+: ((C1 ('MetaCons "NegOpExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "negOp") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NegOp) :*: S1 ('MetaSel ('Just "expr") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr)) :+: C1 ('MetaCons "NotOpExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "notOp") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 NotOp) :*: S1 ('MetaSel ('Just "expr") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr))) :+: (C1 ('MetaCons "ChoiceOpExpr" 'PrefixI 'True) ((S1 ('MetaSel ('Just "choiceOp") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ChoiceOp) :*: S1 ('MetaSel ('Just "expr1") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr)) :*: (S1 ('MetaSel ('Just "expr2") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr) :*: S1 ('MetaSel ('Just "expr3") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr))) :+: C1 ('MetaCons "LengthExpr" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name))))))

data Typed a Source #

Constructors

Typed 

Fields

Instances

Instances details
Generic (Typed a) Source # 
Instance details

Defined in AST

Associated Types

type Rep (Typed a) :: Type -> Type #

Methods

from :: Typed a -> Rep (Typed a) x #

to :: Rep (Typed a) x -> Typed a #

Show a => Show (Typed a) Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> Typed a -> ShowS #

show :: Typed a -> String #

showList :: [Typed a] -> ShowS #

type Rep (Typed a) Source # 
Instance details

Defined in AST

type Rep (Typed a) = D1 ('MetaData "Typed" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "Typed" 'PrefixI 'True) (S1 ('MetaSel ('Just "ele") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Just "tpe") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Type)))

data Block Source #

Constructors

Block 

Fields

Instances

Instances details
Generic Block Source # 
Instance details

Defined in AST

Associated Types

type Rep Block :: Type -> Type #

Methods

from :: Block -> Rep Block x #

to :: Rep Block x -> Block #

Show Block Source # 
Instance details

Defined in AST

Methods

showsPrec :: Int -> Block -> ShowS #

show :: Block -> String #

showList :: [Block] -> ShowS #

type Rep Block Source # 
Instance details

Defined in AST

type Rep Block = D1 ('MetaData "Block" "AST" "decaf-0.1.0.0-GF5ZfPyXbr16gB58O7mLnT" 'False) (C1 ('MetaCons "Block" 'PrefixI 'True) (S1 ('MetaSel ('Just "vars") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [FieldDecl]) :*: (S1 ('MetaSel ('Just "stmts") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Statement]) :*: S1 ('MetaSel ('Just "blockID") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ScopeID))))