Merge pull request #370 from asarhaddon/hide-gensym-counter
[jackhill/mal.git] / scala / step9_try.scala
index 7bfba63..cc997bb 100644 (file)
@@ -39,7 +39,8 @@ object step9_try {
   def is_macro_call(ast: Any, env: Env): Boolean = {
     ast match {
       case ml: MalList => {
-        if (types._symbol_Q(ml(0)) &&
+        if (ml.value.length > 0 &&
+            types._symbol_Q(ml(0)) &&
             env.find(ml(0).asInstanceOf[Symbol]) != null) {
           env.get(ml(0).asInstanceOf[Symbol]) match {
             case f: MalFunction => return f.ismacro
@@ -92,6 +93,9 @@ object step9_try {
       return eval_ast(ast, env)
 
     ast.asInstanceOf[MalList].value match {
+      case Nil => {
+        return ast
+      }
       case Symbol("def!") :: a1 :: a2 :: Nil => {
         return env.set(a1.asInstanceOf[Symbol], EVAL(a2, env))
       }
@@ -122,6 +126,7 @@ object step9_try {
           return EVAL(a1, env)
         } catch {
           case t: Throwable => {
+            if (rest.length == 0) throw t
             rest(0).asInstanceOf[MalList].value match {
               case List(Symbol("catch*"), a21, a22) => {
                 val exc: Any = t match {