summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-12-02 17:05:50 +0000
committerRich Hickey <richhickey@gmail.com>2008-12-02 17:05:50 +0000
commit65ae7482a9b09c69d2eb8355a8ecfb43441d584e (patch)
treee9ded30088714b41ead727d45745cacadc6b27bf /src
parentb40fbfbf820bce216ea1e0fbb961e2e4b2bd3cb0 (diff)
moved array tag names out of maybeClass
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/Compiler.java41
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);