summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-02-20 15:10:45 +0000
committerRich Hickey <richhickey@gmail.com>2009-02-20 15:10:45 +0000
commitaac37e59bfe1970d4bfe7b4b7c47e2f2faaa414b (patch)
treec27629e5438d498c4e48ab65ead279ab9ddde185
parentbfa0d637f188969d886a4628e36f61b52f96dc39 (diff)
fixed lazy-seq constants
-rw-r--r--src/jvm/clojure/lang/Compiler.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index e8b71086..8848bacd 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -3365,7 +3365,9 @@ static public class FnExpr implements Expr{
if(Modifier.isPublic(c.getModifiers()))
{
//can't emit derived fn types due to visibility
- if(RestFn.class.isAssignableFrom(c))
+ if(LazySeq.class.isAssignableFrom(c))
+ return Type.getType(ISeq.class);
+ else if(RestFn.class.isAssignableFrom(c))
return Type.getType(RestFn.class);
else if(AFn.class.isAssignableFrom(c))
return Type.getType(AFn.class);
@@ -3981,7 +3983,11 @@ private static Expr analyze(C context, Object form, String name) throws Exceptio
try
{
if(form instanceof LazySeq)
+ {
form = RT.seq(form);
+ if(form == null)
+ form = PersistentList.EMPTY;
+ }
if(form == null)
return NIL_EXPR;
else if(form == Boolean.TRUE)