summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2007-12-28 18:06:28 +0000
committerRich Hickey <richhickey@gmail.com>2007-12-28 18:06:28 +0000
commit7c2ef5d06bde5b0475e4523b7b4d47ed4bcfe52e (patch)
tree6457d06de3b51426f22f03159100c35ec08a55c1 /src
parentc7a38e7786bd31840825c0008fab3c3ec7bca751 (diff)
narrowed use of strings as class names to class and instance?
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/Compiler.java16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 100915cc..de439f4c 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -643,7 +643,7 @@ static abstract class HostExpr implements Expr{
//determine static or instance
//static target must be symbol, either fully.qualified.Classname or Classname that has been imported
int line = (Integer) LINE.get();
- String className = maybeClassName(RT.second(form));
+ String className = maybeClassName(RT.second(form), false);
//at this point className will be non-null if static
Expr instance = null;
if(className == null)
@@ -673,7 +673,7 @@ static abstract class HostExpr implements Expr{
}
}
- private static String maybeClassName(Object form){
+ private static String maybeClassName(Object form, boolean stringOk){
String className = null;
if(form instanceof Symbol)
{
@@ -689,13 +689,13 @@ static abstract class HostExpr implements Expr{
}
}
}
- else if(form instanceof String)
+ else if(stringOk && form instanceof String)
className = (String) form;
return className;
}
static Class tagToClass(Symbol tag) throws ClassNotFoundException{
- String className = maybeClassName(tag);
+ String className = maybeClassName(tag, false);
if(className != null)
return Class.forName(className);
throw new IllegalArgumentException("Unable to resolve classname: " + tag);
@@ -1346,7 +1346,7 @@ static class TryExpr implements Expr{
for(int i = 0; i < catchBlock.count(); i += 3)
{
- String className = HostExpr.maybeClassName(catchBlock.nth(i));
+ String className = HostExpr.maybeClassName(catchBlock.nth(i), false);
if(className == null)
throw new IllegalArgumentException("Unable to resolve classname: " + catchBlock.nth(i));
if(!(catchBlock.nth(i + 1) instanceof Symbol))
@@ -1495,7 +1495,7 @@ static class ClassExpr implements Expr{
//(class Classname)
if(form.count() != 2)
throw new Exception("wrong number of arguments, expecting: (class Classname)");
- String className = HostExpr.maybeClassName(RT.second(form));
+ String className = HostExpr.maybeClassName(RT.second(form), true);
if(className == null)
throw new IllegalArgumentException("Unable to resolve classname: " + RT.second(form));
return new ClassExpr(className);
@@ -1572,7 +1572,7 @@ static class NewExpr implements Expr{
//(new Classname args...)
if(form.count() < 2)
throw new Exception("wrong number of arguments, expecting: (new Classname args...)");
- String className = HostExpr.maybeClassName(RT.second(form));
+ String className = HostExpr.maybeClassName(RT.second(form), false);
if(className == null)
throw new IllegalArgumentException("Unable to resolve classname: " + RT.second(form));
PersistentVector args = PersistentVector.EMPTY;
@@ -1663,7 +1663,7 @@ static class InstanceExpr extends UntypedExpr{
//(instance? x Classname)
if(form.count() != 3)
throw new Exception("wrong number of arguments, expecting: (instance? x Classname)");
- String className = HostExpr.maybeClassName(RT.third(form));
+ String className = HostExpr.maybeClassName(RT.third(form), true);
if(className == null)
throw new IllegalArgumentException("Unable to resolve classname: " + RT.third(form));
return new InstanceExpr(analyze(C.EXPRESSION, RT.second(form)), className);