From cd465d2c88f45cb35d3488dbe0ad24e4ee0e05ab Mon Sep 17 00:00:00 2001 From: dos-reis Date: Mon, 24 May 2010 00:56:01 +0000 Subject: More cleanups --- src/interp/i-spec1.boot | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/interp') diff --git a/src/interp/i-spec1.boot b/src/interp/i-spec1.boot index c3c0179a..16405b14 100644 --- a/src/interp/i-spec1.boot +++ b/src/interp/i-spec1.boot @@ -844,6 +844,16 @@ checkForFreeVariables(v,locals) == ["getSimpleArrayEntry","envArg",positionInVec(0,#($freeVariables))] ["SETF",newvar,checkForFreeVariables(form,locals)] error "Non-simple variable bindings are not currently supported" + op in '(LET LET_* %Bind) => + vars := [first init for init in first args] + inits := [checkInit(init,locals) for init in first args] where + checkInit([var,init],locals) == + init := checkForFreeVariables(init,locals) + $boundVariables := [var,:$boundVariables] + [var,init] + body := checkForFreeVariables(rest args,locals) + $boundVariables := setDifference($boundVariables,vars) + [op,inits,:body] op = "PROG" => error "Non-simple variable bindings are not currently supported" [op,:[checkForFreeVariables(a,locals) for a in args]] -- cgit v1.2.3