summaryrefslogtreecommitdiff
path: root/src/consinit.cc
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2013-12-31 11:43:20 -0500
committerAdrian Thurston <thurston@complang.org>2013-12-31 11:43:20 -0500
commit415c21f86d1d0b7ff49932b4b61251870e7400fb (patch)
treeb2bb76e45525bf496084e78be1ae1d3e8d2133a1 /src/consinit.cc
parentfc1d502d70df74114c8edff5c7ce808895f156f9 (diff)
downloadcolm-415c21f86d1d0b7ff49932b4b61251870e7400fb.tar.gz
pass the current scope to VarRef cons
This will lets us eliminate the scope walk needed for successful VarRef lookup.
Diffstat (limited to 'src/consinit.cc')
-rw-r--r--src/consinit.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/consinit.cc b/src/consinit.cc
index e056d797..c2daf627 100644
--- a/src/consinit.cc
+++ b/src/consinit.cc
@@ -745,7 +745,8 @@ void ConsInit::parseInput( StmtList *stmtList )
QualItemVect *popQual = new QualItemVect;
popQual->append( QualItem( QualItem::Dot, internal, String( "argv" ) ) );
- LangVarRef *popRef = LangVarRef::cons( internal, popQual, String("pop") );
+ LangVarRef *popRef = LangVarRef::cons( internal,
+ pd->curLocalFrame->scope, popQual, String("pop") );
LangExpr *pop = LangExpr::cons( LangTerm::cons( InputLoc(), popRef, popArgs ) );
/* Construct a literal string 'r', for second arg to open. */
@@ -756,7 +757,8 @@ void ConsInit::parseInput( StmtList *stmtList )
/* Call open. */
QualItemVect *openQual = new QualItemVect;
- LangVarRef *openRef = LangVarRef::cons( internal, openQual, String("open") );
+ LangVarRef *openRef = LangVarRef::cons( internal,
+ pd->curLocalFrame->scope, openQual, String("open") );
CallArgVect *openArgs = new CallArgVect;
openArgs->append( new CallArg(pop) );
openArgs->append( new CallArg(modeExpr) );
@@ -778,7 +780,7 @@ void ConsInit::parseInput( StmtList *stmtList )
void ConsInit::exportTree( StmtList *stmtList )
{
QualItemVect *qual = new QualItemVect;
- LangVarRef *varRef = LangVarRef::cons( internal, qual, String("P") );
+ LangVarRef *varRef = LangVarRef::cons( internal, pd->curLocalFrame->scope, qual, String("P") );
LangExpr *expr = LangExpr::cons( LangTerm::cons( internal, LangTerm::VarRefType, varRef ) );
NamespaceQual *nspaceQual = NamespaceQual::cons( namespaceStack.top() );