Some string conversions in error reporting
authorDavid Vázquez <davazp@gmail.com>
Fri, 3 May 2013 10:52:01 +0000 (11:52 +0100)
committerDavid Vázquez <davazp@gmail.com>
Fri, 3 May 2013 10:52:01 +0000 (11:52 +0100)
jscl.html
src/compiler.lisp
src/prelude.js

index 0fde9fc..782db20 100644 (file)
--- a/jscl.html
+++ b/jscl.html
@@ -87,7 +87,9 @@
                        jqconsole.Write(xstring(lisp.print(pv, 1, vs[i])) + '\n', 'jqconsole-return');
                     }
                 } catch(error) {
-                    jqconsole.Write('ERROR: ' + (error.message || error) + '\n', 'jqconsole-error');
+                    var msg = error.message || error || 'Unknown error';
+                    if (typeof(msg) != 'string') msg = xstring(msg);
+                    jqconsole.Write('ERROR: ' + msg + '\n', 'jqconsole-error');
                 }
             } else {
                 jqconsole.Write(xstring(lisp.compileString(pv, 1, make_lisp_string(input.slice(1)))) + '\n', 'jqconsole-return');
index 29c491b..94e77ce 100644 (file)
                            " && ")
                      ")" *newline*
                      (indent
-                      "throw 'Unknown keyword argument ' + arguments[i].name;" *newline*))
+                      "throw 'Unknown keyword argument ' + xstring(arguments[i].name);" *newline*))
              "}" *newline*)))))
 
 (defun parse-lambda-list (ll)
   (js!selfcall
     "var symbol = " x ";" *newline*
     "var value = symbol.value;" *newline*
-    "if (value === undefined) throw \"Variable `\" + symbol.name + \"' is unbound.\";" *newline*
+    "if (value === undefined) throw \"Variable `\" + xstring(symbol.name) + \"' is unbound.\";" *newline*
     "return value;" *newline*))
 
 (define-builtin symbol-function (x)
   (js!selfcall
     "var symbol = " x ";" *newline*
     "var func = symbol.fvalue;" *newline*
-    "if (func === undefined) throw \"Function `\" + symbol.name + \"' is undefined.\";" *newline*
+    "if (func === undefined) throw \"Function `\" + xstring(symbol.name) + \"' is undefined.\";" *newline*
     "return func;" *newline*))
 
 (define-builtin symbol-plist (x)
index 1aa5e0f..ca5cfdb 100644 (file)
@@ -60,3 +60,4 @@ function make_lisp_string (string){
 }
 
 function xstring(x){ return x.join(''); }
+