diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-12-02 17:05:50 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-12-02 17:05:50 +0000 |
commit | 65ae7482a9b09c69d2eb8355a8ecfb43441d584e (patch) | |
tree | e9ded30088714b41ead727d45745cacadc6b27bf | |
parent | b40fbfbf820bce216ea1e0fbb961e2e4b2bd3cb0 (diff) |
moved array tag names out of maybeClass
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index aee53673..b3ee6f3e 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -772,23 +772,7 @@ static public abstract class HostExpr implements Expr, MaybePrimitiveExpr{ Symbol sym = (Symbol) form; if(sym.ns == null) //if ns-qualified can't be classname { - if(sym.name.equals("ints")) - c = int[].class; - else if(sym.name.equals("longs")) - c = long[].class; - else if(sym.name.equals("floats")) - c = float[].class; - else if(sym.name.equals("doubles")) - c = double[].class; - else if(sym.name.equals("chars")) - c = double[].class; - else if(sym.name.equals("shorts")) - c = short[].class; - else if(sym.name.equals("bytes")) - c = byte[].class; - else if(sym.name.equals("booleans")) - c = boolean[].class; - else if(sym.name.indexOf('.') > 0 || sym.name.charAt(0) == '[') + if(sym.name.indexOf('.') > 0 || sym.name.charAt(0) == '[') c = RT.classForName(sym.name); else { @@ -827,6 +811,29 @@ static public abstract class HostExpr implements Expr, MaybePrimitiveExpr{ */ static Class tagToClass(Object tag) throws Exception{ Class c = maybeClass(tag, true); + if(tag instanceof Symbol) + { + Symbol sym = (Symbol) tag; + if(sym.ns == null) //if ns-qualified can't be classname + { + if(sym.name.equals("ints")) + c = int[].class; + else if(sym.name.equals("longs")) + c = long[].class; + else if(sym.name.equals("floats")) + c = float[].class; + else if(sym.name.equals("doubles")) + c = double[].class; + else if(sym.name.equals("chars")) + c = double[].class; + else if(sym.name.equals("shorts")) + c = short[].class; + else if(sym.name.equals("bytes")) + c = byte[].class; + else if(sym.name.equals("booleans")) + c = boolean[].class; + } + } if(c != null) return c; throw new IllegalArgumentException("Unable to resolve classname: " + tag); |