}
Object ret = null;
if (o == null) throw je("tried to get property \"" + v + "\" from the null value");
+ if (v == null) throw je("tried to get the null key from " + v);
if (o instanceof String) {
ret = getFromString((String)o, v);
} else if (o instanceof Boolean) {
private Scope parentScope;
private static Object NULL = new Object();
public Scope(Scope parentScope) { this(parentScope, false); }
- public Scope(Scope parentScope, boolean sealed) { super(sealed); this.parentScope = parentScope; }
+ public Scope(Scope parentScope, boolean sealed) {
+ super(sealed);
+ if (parentScope == this) throw new Error("can't make a scope its own parent!");
+ this.parentScope = parentScope;
+ }
public Scope getParentScope() { return parentScope; }
// transparent scopes are not returned by THIS