aboutsummaryrefslogtreecommitdiffstats
path: root/src/compile.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-16 15:25:00 +0000
committerDavid Robillard <d@drobilla.net>2009-10-16 15:25:00 +0000
commitb0a5e24bb43e06fe99e9c4d6cddebce08c379af7 (patch)
treec1a171b32186b4c2415d7e461cdacb554b6a5deb /src/compile.cpp
parentb7f85538771817b5ff7f2573bd1c5d64c9849e1e (diff)
downloadresp-b0a5e24bb43e06fe99e9c4d6cddebce08c379af7.tar.gz
resp-b0a5e24bb43e06fe99e9c4d6cddebce08c379af7.tar.bz2
resp-b0a5e24bb43e06fe99e9c4d6cddebce08c379af7.zip
Fix globals.
Don't add always empty top level environment frames (screws up Env::topLevel). git-svn-id: http://svn.drobilla.net/resp/tuplr@242 ad02d1e2-f140-0410-9f75-f8b11f17cedd
Diffstat (limited to 'src/compile.cpp')
-rw-r--r--src/compile.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/compile.cpp b/src/compile.cpp
index 605ec40..977ab27 100644
--- a/src/compile.cpp
+++ b/src/compile.cpp
@@ -77,6 +77,11 @@ ADef::compile(CEnv& cenv)
{
cenv.def(sym(), body(), cenv.type(body()), NULL); // define stub first for recursion
CVal val = body()->compile(cenv);
+ if (cenv.vals.size() == 1 && cenv.type(body())->head()->str() != "Fn") {
+ val = cenv.engine()->compileGlobal(
+ cenv, cenv.type(body()), sym()->str(), val);
+ cenv.lock(this);
+ }
cenv.vals.def(sym(), val);
return val;
}