aboutsummaryrefslogtreecommitdiff
path: root/Sil/Types.dcl
blob: 16594368ab9407c99c0d5ae5f6ae23dc4b6efc34 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
definition module Sil.Types

from StdOverloaded import class ==, class toString

from Data.Error import :: MaybeError
from Data.Maybe import :: Maybe

from Sil.Syntax import :: Expression, :: Function, :: Name, :: Op1, :: Op2

:: Type
	= TBool
	| TInt
	| TVoid
	| (-->) infixr Type Type

:: TypeError
	= IllegalApplication Type Type

instance == Type

instance toString Type
instance toString TypeError

/**
 * Size of an expression on the stack
 */
typeSize :: Type -> Int

:: TypeResolver :== Name -> Maybe (MaybeError TypeError Type)

class type a :: TypeResolver a -> Maybe (MaybeError TypeError Type)
instance type Function
instance type Expression
instance type Name
instance type Op1
instance type Op2