diff options
author | Chouser <chouser@n01se.net> | 2009-12-03 22:06:38 -0500 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2009-12-03 22:06:38 -0500 |
commit | b3b1fa5081172d9931d7dffac4e12a535871cfde (patch) | |
tree | e49b824838103d4ea4cd459654f8669cb02ee4aa | |
parent | 20e4e45f18b8cd9833846aa8cf441ceebd98cca8 (diff) |
Print deprecation warning for ^ reader macro; refs #215
Signed-off-by: Chouser <chouser@n01se.net>
-rw-r--r-- | src/jvm/clojure/lang/LispReader.java | 22 |
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; |