summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2010-01-14 14:44:08 -0500
committerRich Hickey <richhickey@gmail.com>2010-01-14 14:44:08 -0500
commite6a315bd3d514c6af10d2e7a853b693aa5f4520d (patch)
treed93a7c1ee91ae4e97cad096d724977fdee3ce19b
parentb63af1ad6ce38b50552be3c424ea166cb063ee7c (diff)
Unnamed fns should have no binding of name - fixes #245
-rw-r--r--src/jvm/clojure/lang/Compiler.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 46d167d8..13bcf9de 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -4140,8 +4140,10 @@ public static class FnMethod extends ObjMethod{
//register 'this' as local 0
//registerLocal(THISFN, null, null);
- registerLocal(Symbol.intern(objx.thisName != null ? objx.thisName : "fn__" + RT.nextID()), null, null,false);
-
+ if(objx.thisName != null)
+ registerLocal(Symbol.intern(objx.thisName), null, null,false);
+ else
+ getAndIncLocalNum();
PSTATE state = PSTATE.REQ;
PersistentVector argLocals = PersistentVector.EMPTY;
for(int i = 0; i < parms.count(); i++)
@@ -6345,8 +6347,10 @@ public static class NewInstanceMethod extends ObjMethod{
));
//register 'this' as local 0
- registerLocal((thisName == null) ? dummyThis:thisName,
- thistag, null,false);
+ if(thisName != null)
+ registerLocal((thisName == null) ? dummyThis:thisName,thistag, null,false);
+ else
+ getAndIncLocalNum();
PersistentVector argLocals = PersistentVector.EMPTY;
method.retClass = tagClass(tagOf(name));