Skip to content

Commit f951752

Browse files
committed
force instance member interpretation of (.method ClassName), e.g. (.getMethods String) works
1 parent 6f913b4 commit f951752

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/jvm/clojure/lang/Compiler.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public class Compiler implements Opcodes{
6666
static final Symbol LIST = Symbol.create("clojure.core", "list");
6767
static final Symbol HASHMAP = Symbol.create("clojure.core", "hash-map");
6868
static final Symbol VECTOR = Symbol.create("clojure.core", "vector");
69+
static final Symbol IDENTITY = Symbol.create("clojure.core", "identity");
6970

7071
static final Symbol _AMP_ = Symbol.create("&");
7172
static final Symbol ISEQ = Symbol.create("clojure.lang.ISeq");
@@ -4041,7 +4042,12 @@ public static Object macroexpand1(Object x) throws Exception{
40414042
throw new IllegalArgumentException(
40424043
"Malformed member expression, expecting (.member target ...)");
40434044
Symbol meth = Symbol.intern(sname.substring(1));
4044-
return RT.listStar(DOT, RT.second(form), meth, form.rest().rest());
4045+
Object target = RT.second(form);
4046+
if(HostExpr.maybeClass(target,false) != null)
4047+
{
4048+
target = RT.list(IDENTITY, target);
4049+
}
4050+
return RT.listStar(DOT, target, meth, form.rest().rest());
40454051
}
40464052
else if(namesStaticMember(sym))
40474053
{

0 commit comments

Comments
 (0)