[CLJ-1171] Compiler macro for clojure.core/instance? disregards lexical shadows on class names Created: 27/Feb/13 Updated: 14/Aug/13 Resolved: 14/Aug/13
|Fix Version/s:||Release 1.6|
|Reporter:||Herwig Hochleitner||Assignee:||Stuart Halloway|
|Attachments:||0001-CLJ-1171-Tests-for-clojure.core-instance-compiler-ma.patch 0002-CLJ-1171-Obey-lexical-scope-for-class-argument-in-in.patch 0003-CLJ-1171-Check-arity-in-instance-compiler-macro.patch|
|Patch:||Code and Test|
The compiler tries to emit jvm native instanceof expressions for direct clojure.core/instance? calls.
[Stu] All three patches should be applied IMO.
This was discovered because the same compiler macro also omits the arity check implicit in the default definition. This could also conveniently be fixed when touching that method:
|Comment by Herwig Hochleitner [ 27/Feb/13 8:11 PM ]|
Attached patches test and fix issue + tangent
|Comment by Herwig Hochleitner [ 04/Mar/13 3:51 PM ]|
Note: Patch 0003 just adds the arity check, hence is optional, but if it's omitted from the patchset, the corresponding test from patch 0001 will fail.
|Comment by Stuart Halloway [ 29/Mar/13 7:31 AM ]|
Summarizing the decisions in these patches:
It is possible (although unlikely) that existing code relies on the current eccentric behavior of instance?. I think it would be fair to categorize programs relying on this behavior as buggy, but that is easy for me to say.