Print typed Kotlin try catch as blocks
ober
9fc12d13fd151e299d3694922aa9fac9a272ecaa
--- a/lib/jerboa/typed/kotlin/print.ss +++ b/lib/jerboa/typed/kotlin/print.ss @@ -251,6 +251,19 @@ (parenthesize text) text))) + (def (write-expression-block port indent expr) + (display "{" port) + (newline port) + (if (kt-block? expr) + (begin + (for-each (lambda (stmt) (write-statement port (+ indent 1) stmt)) + (kt-block-statements expr)) + (write-line port (+ indent 1) + (kotlin-expr->string (kt-block-result expr)))) + (write-line port (+ indent 1) (kotlin-expr->string expr))) + (write-indent port indent) + (display "}" port)) + (def (kotlin-expr->string expr) (cond [(kt-lit? expr) (kotlin-lit->string expr)] @@ -340,13 +353,13 @@ (lambda (port) (let ([catch (kt-try-catch expr)]) (display "try " port) - (display (kotlin-expr->string (kt-try-body expr)) port) + (write-expression-block port 0 (kt-try-body expr)) (display " catch (" port) (display (kotlin-symbol-name (kt-catch-name catch)) port) (display ": " port) (display (kotlin-type->string (kt-catch-type catch)) port) (display ") " port) - (display (kotlin-expr->string (kt-catch-body catch)) port))))] + (write-expression-block port 0 (kt-catch-body catch)))))] [(kt-block? expr) (emit-to-string (lambda (port) --- a/tests/test-typed-kotlin.ss +++ b/tests/test-typed-kotlin.ss @@ -151,7 +151,7 @@ 'error (make-kt-type 'Exception #f '()) (make-kt-block '() (make-kt-lit 'String "fallback"))))) - "try run {\n \"ok\"\n} catch (error: Exception) run {\n \"fallback\"\n}") + "try {\n \"ok\"\n} catch (error: Exception) {\n \"fallback\"\n}") (define ast-file-text (string-append @@ -539,7 +539,7 @@ (test-contains "typed try catch lowers to Kotlin try" try-kotlin - "return try Risky.name() catch (error: Exception) (\"fallback: \" + error.message())") + "return try {\n Risky.name()\n} catch (error: Exception) {\n (\"fallback: \" + error.message())\n}") (define geometry-form '(typed-library (sample typed geometry)