aboutsummaryrefslogtreecommitdiff
path: root/frontend/checkFunctionBodies.dcl
blob: e1ff1506012bf8b920677956e1a9c6d95c6d0a1b (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
definition module checkFunctionBodies

import syntax, checksupport

::	Dynamics		:== [ExprInfoPtr]

::	ExpressionState =
	{	es_expr_heap	:: !.ExpressionHeap
	,	es_var_heap		:: !.VarHeap
	,	es_type_heaps	:: !.TypeHeaps
	,	es_calls		:: ![FunCall]
	,	es_dynamics		:: !Dynamics
	,	es_fun_defs		:: !.{# FunDef}
	}
	
::	ExpressionInput =
	{	ei_expr_level	:: !Level
	,	ei_fun_index	:: !FunctionOrMacroIndex
	,	ei_fun_level	:: !Level
	,	ei_mod_index	:: !Index
	,	ei_local_functions_index_offset :: !Int
	}

checkFunctionBodies :: !FunctionBody !Ident !.ExpressionInput !*ExpressionState !*ExpressionInfo !*CheckState
	-> (!FunctionBody, ![FreeVar], !*ExpressionState, !*ExpressionInfo, !*CheckState)