diff options
author | Rich Hickey <richhickey@gmail.com> | 2010-01-14 14:44:08 -0500 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2010-01-14 14:44:08 -0500 |
commit | e6a315bd3d514c6af10d2e7a853b693aa5f4520d (patch) | |
tree | d93a7c1ee91ae4e97cad096d724977fdee3ce19b | |
parent | b63af1ad6ce38b50552be3c424ea166cb063ee7c (diff) |
Unnamed fns should have no binding of name - fixes #245
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 12 |
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)); |