diff options
author | Chouser <chouser@n01se.net> | 2009-07-13 18:10:49 -0400 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2009-07-25 02:39:07 -0400 |
commit | 994f118c56bb3139f87093a6ec44eb8c04acbdaf (patch) | |
tree | b134160ee564590250e28d0f7a46473e49f18f95 /src | |
parent | 6e29153854c799cb46abc23382059d6ee20e755e (diff) |
Resolve classnames in modern-syntax static calls at syntaxQuote time. Fixes #155
Signed-off-by: Chouser <chouser@n01se.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/LispReader.java | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java index 5bf22e66..368bc1fa 100644 --- a/src/jvm/clojure/lang/LispReader.java +++ b/src/jvm/clojure/lang/LispReader.java @@ -704,7 +704,20 @@ public static class SyntaxQuoteReader extends AFn{ // Simply quote method names. } else - sym = Compiler.resolveSymbol(sym); + { + Object maybeClass = null; + if(sym.ns != null) + maybeClass = Compiler.currentNS().getMapping( + Symbol.intern(null, sym.ns)); + if(maybeClass instanceof Class) + { + // Classname/foo -> package.qualified.Classname/foo + sym = Symbol.intern( + ((Class)maybeClass).getName(), sym.name); + } + else + sym = Compiler.resolveSymbol(sym); + } ret = RT.list(Compiler.QUOTE, sym); } else if(isUnquote(form)) |