aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-03-15 01:50:17 +0000
committerDavid Robillard <d@drobilla.net>2009-03-15 01:50:17 +0000
commit7835b04c2ae2f564abf90458e9d57d038a0387b8 (patch)
tree484099d3e4301c3db089af4453bf147c40465f03
parentbd68b2c74ed41efcad5a965ad81abacb17235aad (diff)
downloadresp-7835b04c2ae2f564abf90458e9d57d038a0387b8.tar.gz
resp-7835b04c2ae2f564abf90458e9d57d038a0387b8.tar.bz2
resp-7835b04c2ae2f564abf90458e9d57d038a0387b8.zip
Tidy.
git-svn-id: http://svn.drobilla.net/resp/tuplr@91 ad02d1e2-f140-0410-9f75-f8b11f17cedd
-rw-r--r--llvm.cpp5
-rw-r--r--tuplr.hpp5
-rw-r--r--typing.cpp8
3 files changed, 5 insertions, 13 deletions
diff --git a/llvm.cpp b/llvm.cpp
index f4576ce..f9e045a 100644
--- a/llvm.cpp
+++ b/llvm.cpp
@@ -237,7 +237,6 @@ AClosure::lift(CEnv& cenv)
CValue retVal = cenv.compile(at(2));
llengine(cenv)->builder.CreateRet(LLVal(retVal)); // Finish function
cenv.optimise(LLFunc(f));
-
} catch (Error& e) {
f->eraseFromParent(); // Error reading body, remove function
cenv.pop();
@@ -501,7 +500,7 @@ AConsCall::lift(CEnv& cenv)
ACall::lift(cenv);
- ATuple* prot = new ATuple(loc, at(1), at(2), 0);
+ ATuple* protT = new ATuple(loc, cenv.type(at(1)), cenv.type(at(2)), 0);
vector<const Type*> types;
size_t sz = 0;
@@ -521,7 +520,7 @@ AConsCall::lift(CEnv& cenv)
vector<string> argNames;
argNames.push_back("car");
argNames.push_back("cdr");
- Function* func = compileFunction(cenv, cenv.gensym("cons"), pT, *prot, argNames);
+ Function* func = compileFunction(cenv, cenv.gensym("cons"), pT, *protT, argNames);
Value* mem = builder.CreateCall(LLVal(cenv.alloc), ConstantInt::get(Type::Int32Ty, sz), "mem");
Value* cell = builder.CreateBitCast(mem, pT, "cell");
diff --git a/tuplr.hpp b/tuplr.hpp
index 1d858f8..d7f7350 100644
--- a/tuplr.hpp
+++ b/tuplr.hpp
@@ -74,11 +74,6 @@ struct LAddr {
unsigned up, over;
};
-inline ostream& operator<<(ostream& out, const LAddr& addr) {
- out << addr.up << ":" << addr.over;
- return out;
-}
-
/// Generic Lexical Environment
template<typename K, typename V>
struct Env : public list< vector< pair<K,V> > > {
diff --git a/typing.cpp b/typing.cpp
index 488c430..d6f7acc 100644
--- a/typing.cpp
+++ b/typing.cpp
@@ -36,11 +36,9 @@ ASymbol::constrain(TEnv& tenv, Constraints& c) const
if (!addr)
throw Error((format("undefined symbol `%1%'") % cppstr).str(), loc);
AType* t = tenv.deref(addr);
- if (!t)
- throw Error((format("unresolved symbol `%1%'") % cppstr).str(), loc);
- AType* var = tenv.deref(addr);
- var->addr = addr;
- c.push_back(Constraint(tenv.var(this), var, loc));
+ assert(t);
+ t->addr = addr;
+ c.push_back(Constraint(tenv.var(this), t, loc));
}
void