summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jvm/clojure/lang/LispReader.java22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java
index 368bc1fa..0f0864a1 100644
--- a/src/jvm/clojure/lang/LispReader.java
+++ b/src/jvm/clojure/lang/LispReader.java
@@ -68,7 +68,7 @@ static Var ARG_ENV = Var.create(null);
macros[';'] = new CommentReader();
macros['\''] = new WrappingReader(QUOTE);
macros['@'] = new WrappingReader(DEREF);//new DerefReader();
- macros['^'] = new WrappingReader(META);
+ macros['^'] = new DeprecatedWrappingReader(META, "^");
macros['`'] = new SyntaxQuoteReader();
macros['~'] = new UnquoteReader();
macros['('] = new ListReader();
@@ -491,6 +491,26 @@ public static class WrappingReader extends AFn{
}
+public static class DeprecatedWrappingReader extends AFn{
+ final Symbol sym;
+ final String macro;
+
+ public DeprecatedWrappingReader(Symbol sym, String macro){
+ this.sym = sym;
+ this.macro = macro;
+ }
+
+ public Object invoke(Object reader, Object quote) throws Exception{
+ System.out.println("WARNING: reader macro " + macro +
+ " is deprecated; use " + sym.getName() +
+ " instead");
+ PushbackReader r = (PushbackReader) reader;
+ Object o = read(r, true, null, true);
+ return RT.list(sym, o);
+ }
+
+}
+
public static class VarReader extends AFn{
public Object invoke(Object reader, Object quote) throws Exception{
PushbackReader r = (PushbackReader) reader;