(Symbol sym, boolean internNew, boolean registerMacro)
| 8044 | |
| 8045 | |
| 8046 | static Var lookupVar(Symbol sym, boolean internNew, boolean registerMacro) { |
| 8047 | Var var = null; |
| 8048 | |
| 8049 | //note - ns-qualified vars in other namespaces must already exist |
| 8050 | if(sym.ns != null) |
| 8051 | { |
| 8052 | Namespace ns = namespaceFor(sym); |
| 8053 | if(ns == null) |
| 8054 | return null; |
| 8055 | //throw Util.runtimeException("No such namespace: " + sym.ns); |
| 8056 | Symbol name = Symbol.intern(sym.name); |
| 8057 | if(internNew && ns == currentNS()) |
| 8058 | var = currentNS().intern(name); |
| 8059 | else |
| 8060 | var = ns.findInternedVar(name); |
| 8061 | } |
| 8062 | else if(sym.equals(NS)) |
| 8063 | var = RT.NS_VAR; |
| 8064 | else if(sym.equals(IN_NS)) |
| 8065 | var = RT.IN_NS_VAR; |
| 8066 | else |
| 8067 | { |
| 8068 | //is it mapped? |
| 8069 | Object o = currentNS().getMapping(sym); |
| 8070 | if(o == null) |
| 8071 | { |
| 8072 | //introduce a new var in the current ns |
| 8073 | if(internNew) |
| 8074 | var = currentNS().intern(Symbol.intern(sym.name)); |
| 8075 | } |
| 8076 | else if(o instanceof Var) |
| 8077 | { |
| 8078 | var = (Var) o; |
| 8079 | } |
| 8080 | else |
| 8081 | { |
| 8082 | throw Util.runtimeException("Expecting var, but " + sym + " is mapped to " + o); |
| 8083 | } |
| 8084 | } |
| 8085 | if(var != null && (!var.isMacro() || registerMacro)) |
| 8086 | registerVar(var); |
| 8087 | return var; |
| 8088 | } |
| 8089 | static Var lookupVar(Symbol sym, boolean internNew) { |
| 8090 | return lookupVar(sym, internNew, true); |
| 8091 | } |
no test coverage detected