diff options
Diffstat (limited to '')
-rw-r--r-- | src/context.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/context.cpp b/src/context.cpp index e9330e5..efe8098 100644 --- a/src/context.cpp +++ b/src/context.cpp | |||
@@ -144,13 +144,20 @@ void Context::pushScope() | |||
144 | 144 | ||
145 | void Context::pushScope( const VarHash &hNewVars ) | 145 | void Context::pushScope( const VarHash &hNewVars ) |
146 | { | 146 | { |
147 | // sio << "Pushing scope, merging contexts." << sio.nl << sio.nl; | ||
147 | VarHash h = hNewVars; | 148 | VarHash h = hNewVars; |
148 | if( !sVars.isEmpty() ) | 149 | if( !sVars.isEmpty() ) |
149 | { | 150 | { |
151 | // sio << "hNewVars = " << h << sio.nl << sio.nl | ||
152 | // << "sVars = " << sVars.peek() << sio.nl; | ||
150 | for( VarHash::iterator i = sVars.peek().begin(); i; i++ ) | 153 | for( VarHash::iterator i = sVars.peek().begin(); i; i++ ) |
151 | { | 154 | { |
155 | // sio << "Checking '" << i.getKey() << "' (" << i.getValue() << ")." << sio.nl; | ||
152 | if( !h.has( i.getKey() ) ) | 156 | if( !h.has( i.getKey() ) ) |
157 | { | ||
158 | // sio << " Context doesn't have '" << i.getKey() << "' adding... '" << i.getValue() << "'." << sio.nl; | ||
153 | h.insert( i.getKey(), i.getValue() ); | 159 | h.insert( i.getKey(), i.getValue() ); |
160 | } | ||
154 | } | 161 | } |
155 | } | 162 | } |
156 | sVars.push( h ); | 163 | sVars.push( h ); |
@@ -158,7 +165,7 @@ void Context::pushScope( const VarHash &hNewVars ) | |||
158 | 165 | ||
159 | VarHash &Context::getScope() | 166 | VarHash &Context::getScope() |
160 | { | 167 | { |
161 | return sVars.first(); | 168 | return sVars.peek(); |
162 | } | 169 | } |
163 | 170 | ||
164 | void Context::popScope() | 171 | void Context::popScope() |
@@ -344,14 +351,14 @@ void Context::buildTargetTree( Runner &r ) | |||
344 | } | 351 | } |
345 | } | 352 | } |
346 | 353 | ||
347 | void Context::buildTargetTree( class Runner &r, class Target * /*pTarget*/, const Bu::FString &sInput, Rule *pMaster, StrList &lNewIns ) | 354 | void Context::buildTargetTree( class Runner &r, class Target *pTarget, const Bu::FString &sInput, Rule *pMaster, StrList &lNewIns ) |
348 | { | 355 | { |
349 | Target *pNewTarget = NULL; | 356 | Target *pNewTarget = NULL; |
350 | for( RuleHash::iterator i = hRule.begin(); i; i++ ) | 357 | for( RuleHash::iterator i = hRule.begin(); i; i++ ) |
351 | { | 358 | { |
352 | if( (*i)->hasOutputs() && (*i)->ruleMatches( r, sInput ) ) | 359 | if( (*i)->hasOutputs() && (*i)->ruleMatches( r, sInput ) ) |
353 | { | 360 | { |
354 | pNewTarget = (*i)->createTarget( r, sInput ); | 361 | pNewTarget = (*i)->createTarget( r, sInput, pTarget ); |
355 | 362 | ||
356 | Bu::Hash<ptrdiff_t, bool> hDone; | 363 | Bu::Hash<ptrdiff_t, bool> hDone; |
357 | for( StrList::const_iterator oi = | 364 | for( StrList::const_iterator oi = |