public NamedVariableBinder(DynamicBindingGuru dynamicBindingGuru, ESSymbol name, NamespaceObject environment) { this.dynamicBindingGuru = dynamicBindingGuru; objectSpace = dynamicBindingGuru.ObjectSpace; this.name = name; this.environment = environment; if (name != null) { nameString = name.PrimitiveValue; } addToUndeclared = () => { var bindingRef = objectSpace.newBindingReference(NameString, new DirectBindingHandle((Object)null)); objectSpace.UndeclaredNamespace.add(bindingRef); return(bindingRef); }; }
public NamedValueDeclaration atIfAbsent(ESSymbol name, Functor0 <NamedValueDeclaration> notFoundAction) { StackResidentDeclaration localDeclaration; if (localBindings.TryGetValue(name, out localDeclaration)) { return(localDeclaration); } NonLocalVariableDeclaration nonLocalVariableDeclaration; if (nonLocalBindings != null && nonLocalBindings.TryGetValue(name, out nonLocalVariableDeclaration)) { return(nonLocalVariableDeclaration); } if (outerScope == null) { return(notFoundAction == null ? null : notFoundAction()); } return(outerScope.atIfAbsent(name, notFoundAction)); }