Change internal format of strings
authorDavid Vázquez <davazp@gmail.com>
Fri, 24 May 2013 01:43:02 +0000 (02:43 +0100)
committerDavid Vázquez <davazp@gmail.com>
Fri, 24 May 2013 01:43:02 +0000 (02:43 +0100)
src/compiler.lisp
src/prelude.js

index ad61676..c4b8f66 100644 (file)
   (js!bool
    (js!selfcall
      "var x = " x ";" *newline*
-     "return typeof(x) == 'object' && 'length' in x && x.type == 'character';")))
+     "return typeof(x) == 'object' && 'length' in x && x.stringp == 1;")))
 
 (define-builtin string-upcase (x)
   (code "make_lisp_string(xstring(" x ").toUpperCase())"))
 (define-builtin concat-two (string1 string2)
   (js!selfcall
     "var r = " string1 ".concat(" string2 ");" *newline*
-    "r.type = 'character';"
+    "r.stringp = 1;"
     "return r;" *newline*))
 
 (define-raw-builtin funcall (func &rest args)
index 6f5feea..433462b 100644 (file)
@@ -55,7 +55,7 @@ function QIList(){
 // Create and return a lisp string for the Javascript string STRING.
 function make_lisp_string (string){
     var array = string.split("");
-    array.type = 'character'
+    array.stringp = 1;
     return array;
 }
 
@@ -69,7 +69,7 @@ function Symbol(name, package_name){
 }
 
 function lisp_to_js (x) {
-    if (typeof x == 'object' && 'length' in x && x.type == 'character')
+    if (typeof x == 'object' && 'length' in x && x.stringp == 1)
         return xstring(x);
     else if (typeof x == 'function'){
         // Trampoline calling the Lisp function