summaryrefslogtreecommitdiff
path: root/src/jvm
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2010-04-30 15:44:20 -0400
committerRich Hickey <richhickey@gmail.com>2010-04-30 15:44:20 -0400
commit762d1531b6440722d5d1c0dfee4776d99289385e (patch)
tree48a1a86843fa11ab143f924567bfd13b5823f3fb /src/jvm
parentd2fce54ccfcf46815524c2af94d1939573c1e9a9 (diff)
Fix defrecord keyword lookup on fields matching no-arg methods, fixes #329
Diffstat (limited to 'src/jvm')
-rw-r--r--src/jvm/clojure/lang/Compiler.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 035f78d8..432f452f 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -778,8 +778,10 @@ static public abstract class HostExpr implements Expr, MaybePrimitiveExpr{
Expr instance = null;
if(c == null)
instance = analyze(context == C.EVAL ? context : C.EXPRESSION, RT.second(form));
- boolean maybeField = RT.length(form) == 3 && RT.third(form) instanceof Symbol;
- if(maybeField)
+ boolean maybeField = RT.length(form) == 3 &&
+ (RT.third(form) instanceof Symbol
+ || RT.third(form) instanceof Keyword);
+ if(maybeField && !(RT.third(form) instanceof Keyword))
{
Symbol sym = (Symbol) RT.third(form);
if(c != null)
@@ -789,7 +791,9 @@ static public abstract class HostExpr implements Expr, MaybePrimitiveExpr{
}
if(maybeField) //field
{
- Symbol sym = (Symbol) RT.third(form);
+ Symbol sym = (RT.third(form) instanceof Keyword)?
+ ((Keyword)RT.third(form)).sym
+ :(Symbol) RT.third(form);
Symbol tag = tagOf(form);
if(c != null) {
return new StaticFieldExpr(line, c, munge(sym.name), tag);