Add JVM string helpers for typed Kotlin

ober

3a1e213c984f40f16404f78007bbbccc925ec94a

diff --git a/lib/jerboa/typed/checker.ss b/lib/jerboa/typed/checker.ss
index 8bff127..472fc43 100644
--- a/lib/jerboa/typed/checker.ss
+++ b/lib/jerboa/typed/checker.ss
@@ -528,6 +528,12 @@
       (cons 'string-trim
             (make-typed-call-sig (list 'String) 'String '()
               'jvm-string-trim '()))
+      (cons 'string-trim-end
+            (make-typed-call-sig (list 'String) 'String '()
+              'jvm-string-trim-end '()))
+      (cons 'string-length-int32
+            (make-typed-call-sig (list 'String) 'Int32 '()
+              'jvm-string-length-int32 '()))
       (cons 'string-remove-prefix
             (make-typed-call-sig (list 'String 'String) 'String '()
               'jvm-string-remove-prefix '()))
diff --git a/lib/jerboa/typed/kotlin/lower.ss b/lib/jerboa/typed/kotlin/lower.ss
index c7103f5..2fd9bb4 100644
--- a/lib/jerboa/typed/kotlin/lower.ss
+++ b/lib/jerboa/typed/kotlin/lower.ss
@@ -318,6 +318,10 @@
          (make-kt-member-call (car args) 'uppercase '())]
         [(jvm-string-trim)
          (make-kt-member-call (car args) 'trim '())]
+        [(jvm-string-trim-end)
+         (make-kt-member-call (car args) 'trimEnd '())]
+        [(jvm-string-length-int32)
+         (make-kt-member-get (car args) 'length)]
         [(jvm-string-remove-prefix)
          (make-kt-member-call (car args) 'removePrefix (cdr args))]
         [(jvm-string-substring-before)
diff --git a/tests/test-typed-kotlin.ss b/tests/test-typed-kotlin.ss
index c63752d..24df3eb 100644
--- a/tests/test-typed-kotlin.ss
+++ b/tests/test-typed-kotlin.ss
@@ -744,14 +744,23 @@
 
 (define string-length-form
   '(typed-library (sample typed string-length)
-     (export textSize)
+     (export textSize textSize32 trimTail)
+     (type Int32)
      (def (textSize (text : String)) : Nat
-       (string-length text))))
+       (string-length text))
+     (def (textSize32 (text : String)) : Int32
+       (string-length-int32 text))
+     (def (trimTail (text : String)) : String
+       (string-trim-end 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()")
+(test-contains "JVM String Int32 length lowers to Kotlin length" string-length-kotlin
+  "return text.length")
+(test-contains "String trim-end lowers to Kotlin trimEnd" string-length-kotlin
+  "return text.trimEnd()")
 
 (define duration-form
   '(typed-library (sample typed duration)