Skip to content

Move Kotlin value class unboxing to InvocableHandlerMethod #33943

@msotho

Description

@msotho

Problem:
The below code throws the following error on Spring Boot 3.4.0 but not on Spring Boot 3.3.6:

java.lang.ClassCastException: class kotlin.Unit cannot be cast to class kotlin.Result (kotlin.Unit and kotlin.Result are in unnamed module of loader 'app')
interface Repo { suspend fun fetch(): Result<Unit> } @Repository class RepoImpl : Repo { override suspend fun fetch(): Result<Unit> { return Result.success(Unit) } } @RestController class HomeAPI(private val repo: Repo) { @GetMapping("/") suspend fun index(): ResponseEntity<Unit> { repo.fetch().getOrThrow() return ResponseEntity(HttpStatus.OK) } }

More details:
This seems to occur when I add the spring-boot-starter-data-r2dbc related dependencies

Minimal Repo: https://github.com/msotho/castissue.git

Includes a Unit Test:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @AutoConfigureWebTestClient internal class HomeAPITest @Autowired constructor(private val webTestClient: WebTestClient) { @Test fun `should return http status OK`() { webTestClient .get() .uri("/") .accept(MediaType.APPLICATION_JSON) .exchange() .expectStatus().isOk } }

Metadata

Metadata

Assignees

Labels

theme: kotlinAn issue related to Kotlin supporttype: regressionA bug that is also a regression

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions