Add JVM string helpers for typed Kotlin
ober
3a1e213c984f40f16404f78007bbbccc925ec94a
--- 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 '())) --- 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) --- 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)