Lower UTF-8 conversions to Kotlin
ober
45689469df19c42f5f282439c3aa356ac96a5021
--- a/lib/jerboa/typed/kotlin/lower.ss +++ b/lib/jerboa/typed/kotlin/lower.ss @@ -598,6 +598,16 @@ (make-kt-member-get (car args) 'size) 'toULong '())] + [(string->utf8) + (make-kt-member-call + (car args) + 'toByteArray + (list (make-kt-member-get (kt-name1 'Charsets) 'UTF_8)))] + [(utf8->string) + (make-kt-member-call + (car args) + 'decodeToString + '())] [(jvm-bytes-lower-hex) (make-kt-member-call (make-kt-member-call --- a/tests/test-typed-kotlin.ss +++ b/tests/test-typed-kotlin.ss @@ -645,6 +645,29 @@ bytes-build-kotlin "java.math.BigInteger(1, items).toString(16).padStart((items.size * 2), '0')") +(define utf8-form + '(typed-library (sample typed utf8) + (export encode decode encodedLength) + (def (encode (text : String)) : Bytes + (string->utf8 text)) + (def (decode (data : Bytes)) : String + (utf8->string data)) + (def (encodedLength (text : String)) : Nat + (bytevector-length (string->utf8 text))))) + +(define utf8-kotlin + (typed-library-form->kotlin-string utf8-form)) + +(test-contains "string->utf8 lowers to Kotlin UTF-8 bytes" + utf8-kotlin + "text.toByteArray(Charsets.UTF_8)") +(test-contains "utf8->string lowers to Kotlin decodeToString" + utf8-kotlin + "data.decodeToString()") +(test-contains "bytevector-length of encoded text lowers through bytes size" + utf8-kotlin + "text.toByteArray(Charsets.UTF_8).size.toULong()") + (define list-form '(typed-library (sample typed lists) (export make-Cell Cell? Cell-x listCount firstX secondName