Browse Source

prevent clashes in the environment from the 'name' attribute

pull/23/head
nisstyre56 11 years ago
parent
commit
b66501f7a7
  1. 10
      environments.js

10
environments.js

@ -27,16 +27,17 @@ function extend(env, values) {
function makeEnv(name, values) { function makeEnv(name, values) {
var env = {}; var env = {};
env.name = name; env.name = name;
env.bindings = {};
for (var i = 0; i < values.length; i++) { for (var i = 0; i < values.length; i++) {
name = values[i][0].val; name = values[i][0];
var val = values[i][1]; var val = values[i][1];
env[name] = val; env.bindings[name] = val;
} }
return env; return env;
} }
function lookup(name, env) { function lookup(name, env) {
var value = env[name]; var value = env.bindings[name];
if (!value) { if (!value) {
throw errors.UnboundError(name, env.name); throw errors.UnboundError(name, env.name);
} }
@ -45,5 +46,6 @@ function lookup(name, env) {
module.exports = { module.exports = {
lookup : lookup, lookup : lookup,
extend : extend extend : extend,
makeEnv : makeEnv
}; };

Loading…
Cancel
Save