diff --git a/module/language/javascript.scm b/module/language/javascript.scm index 0a30db35b..37b7b28da 100644 --- a/module/language/javascript.scm +++ b/module/language/javascript.scm @@ -167,6 +167,9 @@ (define (print-const c port) (cond ((string? c) + ;; FIXME: + ;; Scheme strings and JS Strings are different, and not just in + ;; terms of mutability (write c port)) ((number? c) (write c port)) diff --git a/module/language/js-il/compile-javascript.scm b/module/language/js-il/compile-javascript.scm index 676d4480f..3d50bcc7b 100644 --- a/module/language/js-il/compile-javascript.scm +++ b/module/language/js-il/compile-javascript.scm @@ -112,5 +112,10 @@ (make-call (make-refine *scheme* (make-const "list")) (map compile-const c))) + ((string? c) + (make-new + (make-call + (make-refine *scheme* (make-const "String")) + (list (make-const c))))) (else (throw 'uncompilable-const c)))) diff --git a/module/language/js-il/runtime.js b/module/language/js-il/runtime.js index 502c61b57..ac2d4e380 100644 --- a/module/language/js-il/runtime.js +++ b/module/language/js-il/runtime.js @@ -118,6 +118,10 @@ scheme.Symbol = function(s) { // Chars // Strings +scheme.String = function(s) { + this.s = s; + return this; +}; // Closures scheme.Closure = function(f, size) {