aboutsummaryrefslogtreecommitdiffstats
path: root/src/lift.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lift.cpp')
-rw-r--r--src/lift.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/lift.cpp b/src/lift.cpp
index e0a5b5a..5ac3816 100644
--- a/src/lift.cpp
+++ b/src/lift.cpp
@@ -30,8 +30,7 @@ using namespace std;
static const AST*
lift_symbol(CEnv& cenv, Code& code, const ASymbol* sym) throw()
{
- const std::string& cppstr = sym->cppstr;
- if (!cenv.liftStack.empty() && cppstr == cenv.name(cenv.liftStack.top().fn)) {
+ if (!cenv.liftStack.empty() && cenv.name(cenv.liftStack.top().fn) == sym->sym()) {
return cenv.penv.sym("_me"); // Reference to innermost function
} else if (!cenv.code.innermost(sym)) {
@@ -145,7 +144,7 @@ lift_call(CEnv& cenv, Code& code, const ATuple* call) throw()
const AType* copyT = NULL;
const ASymbol* sym = call->head()->to_symbol();
- if (sym && !cenv.liftStack.empty() && sym->cppstr == cenv.name(cenv.liftStack.top().fn)) {
+ if (sym && !cenv.liftStack.empty() && sym->sym() == cenv.name(cenv.liftStack.top().fn)) {
/* Recursive call to innermost function, call implementation directly,
* reusing the current "_me" closure parameter (no cons or .).
*/
@@ -234,7 +233,7 @@ resp_lift(CEnv& cenv, Code& code, const AST* ast) throw()
const ATuple* const call = ast->to_tuple();
if (call) {
const ASymbol* const sym = call->head()->to_symbol();
- const std::string form = sym ? sym->cppstr : "";
+ const std::string form = sym ? sym->sym() : "";
if (is_primitive(cenv.penv, call))
return lift_builtin_call(cenv, code, call);
else if (form == "fn")