summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-03-12 18:28:44 +0000
committerRich Hickey <richhickey@gmail.com>2008-03-12 18:28:44 +0000
commit6c695a0c02ab8f0997d185ad49757b640ccc86ca (patch)
tree864b4cc7f226968cf7b66de237b96f863fda59aa /src/jvm/clojure
parent842e6716e26fb070feeb8654a60128dbe99a538b (diff)
prevent nested #()s, dump input stream on repl exception, put cause message first
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r--src/jvm/clojure/lang/LispReader.java2
-rw-r--r--src/jvm/clojure/lang/Repl.java14
2 files changed, 11 insertions, 5 deletions
diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java
index 2a4b647b..32d1af56 100644
--- a/src/jvm/clojure/lang/LispReader.java
+++ b/src/jvm/clojure/lang/LispReader.java
@@ -387,6 +387,8 @@ static Symbol garg(int n){
static class FnReader extends AFn{
public Object invoke(Object reader, Object lparen) throws Exception{
PushbackReader r = (PushbackReader) reader;
+ if(ARG_ENV.get() != null)
+ throw new IllegalStateException("Nested #()s are not allowed");
try
{
Var.pushThreadBindings(
diff --git a/src/jvm/clojure/lang/Repl.java b/src/jvm/clojure/lang/Repl.java
index a00a9080..16ddc01e 100644
--- a/src/jvm/clojure/lang/Repl.java
+++ b/src/jvm/clojure/lang/Repl.java
@@ -41,11 +41,9 @@ public static void main(String[] args) throws Exception{
{
Var.pushThreadBindings(
RT.map(
-// RT.NS_REFERS, RT.NS_REFERS.get(),
-// RT.NS_IMPORTS, RT.NS_IMPORTS.get(),
-RT.CURRENT_NS, RT.CURRENT_NS.get(),
-RT.WARN_ON_REFLECTION, RT.WARN_ON_REFLECTION.get(),
-Compiler.SOURCE, "REPL"
+ RT.CURRENT_NS, RT.CURRENT_NS.get(),
+ RT.WARN_ON_REFLECTION, RT.WARN_ON_REFLECTION.get(),
+ Compiler.SOURCE, "REPL"
));
w.write("Clojure\n");
RT.inNamespace.invoke(Symbol.create("user"));
@@ -68,6 +66,12 @@ Compiler.SOURCE, "REPL"
}
catch(Throwable e)
{
+ while(rdr.ready())
+ rdr.read();
+ Throwable c = e;
+ while(c.getCause() != null)
+ c = c.getCause();
+ System.err.println(c);
e.printStackTrace();
}
finally