Lower typed string length to Kotlin

ober

e2940d74b38b38f43c7e824b7747ee57a7b932e5

diff --git a/lib/jerboa/typed/kotlin/lower.ss b/lib/jerboa/typed/kotlin/lower.ss
index 69440be..23d8740 100644
--- a/lib/jerboa/typed/kotlin/lower.ss
+++ b/lib/jerboa/typed/kotlin/lower.ss
@@ -222,6 +222,11 @@
            (make-kt-member-call (car args) 'toInt '()))]
         [(jvm-to-string)
          (make-kt-member-call (car args) 'toString '())]
+        [(string-length)
+         (make-kt-member-call
+           (make-kt-member-get (car args) 'length)
+           'toULong
+           '())]
         [(jvm-string-take)
          (make-kt-member-call (car args) 'take (cdr args))]
         [(jvm-string-pad-start)
diff --git a/tests/test-typed-kotlin.ss b/tests/test-typed-kotlin.ss
index 3fe5b5e..e49a78f 100644
--- a/tests/test-typed-kotlin.ss
+++ b/tests/test-typed-kotlin.ss
@@ -267,6 +267,17 @@
 (test-contains "String contains lowers to Kotlin contains" race-kotlin
   "lower.contains(\"andromedan\")")
 
+(define string-length-form
+  '(typed-library (sample typed string-length)
+     (export textSize)
+     (def (textSize (text : String)) : Nat
+       (string-length text))))
+
+(define string-length-kotlin (typed-library-form->kotlin-string string-length-form))
+
+(test-contains "String length lowers to Kotlin length" string-length-kotlin
+  "text.length.toULong()")
+
 (define note-form
   '(typed-library (sample typed notes)
      (export appendNote)