forked from lix-project/lix
don't use std::map merge
This commit is contained in:
parent
f5757a0804
commit
a61841ac41
|
@ -784,15 +784,14 @@ void mapStaticEnvBindings(const StaticEnv &se, const Env &env, valmap & vm)
|
||||||
// override the higher levels.
|
// override the higher levels.
|
||||||
// The top level bindings (builtins) are skipped since they are added for us by initEnv()
|
// The top level bindings (builtins) are skipped since they are added for us by initEnv()
|
||||||
if (env.up && se.up) {
|
if (env.up && se.up) {
|
||||||
mapStaticEnvBindings(*se.up, *env.up,vm);
|
mapStaticEnvBindings(*se.up, *env.up, vm);
|
||||||
|
|
||||||
auto map = valmap();
|
|
||||||
if (env.type == Env::HasWithAttrs)
|
if (env.type == Env::HasWithAttrs)
|
||||||
{
|
{
|
||||||
// add 'with' bindings.
|
// add 'with' bindings.
|
||||||
Bindings::iterator j = env.values[0]->attrs->begin();
|
Bindings::iterator j = env.values[0]->attrs->begin();
|
||||||
while (j != env.values[0]->attrs->end()) {
|
while (j != env.values[0]->attrs->end()) {
|
||||||
map[j->name] = j->value;
|
vm[j->name] = j->value;
|
||||||
++j;
|
++j;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -801,11 +800,9 @@ void mapStaticEnvBindings(const StaticEnv &se, const Env &env, valmap & vm)
|
||||||
// iterate through staticenv bindings and add them.
|
// iterate through staticenv bindings and add them.
|
||||||
for (auto iter = se.vars.begin(); iter != se.vars.end(); ++iter)
|
for (auto iter = se.vars.begin(); iter != se.vars.end(); ++iter)
|
||||||
{
|
{
|
||||||
map[iter->first] = env.values[iter->second];
|
vm[iter->first] = env.values[iter->second];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vm.merge(map);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue