Move string-length to non-primitive
[jscl.git] / src / compiler.lisp
index ad61676..5dd0084 100644 (file)
      "var x = " x ";" *newline*
      "return (typeof(" x ") == \"string\") && x.length == 1;")))
 
-(define-builtin char-to-string (x)
-  (js!selfcall
-    "var r = [" x "];" *newline*
-    "r.type = 'character';"
-    "return r"))
-
 (define-builtin char-upcase (x)
   (code x ".toUpperCase()"))
 
   (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 string-length (x)
-  (code x ".length"))
-
 (define-raw-builtin slice (vector a &optional b)
   (js!selfcall
     "var vector = " (ls-compile vector) ";" *newline*
 (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)