Skip to content

Conversation

@darkxanter
Copy link
Contributor

@darkxanter darkxanter commented Jul 23, 2021

Fix UnsupportedOperationException (https://youtrack.jetbrains.com/issue/KT-34051 or may be similar) for generic routes:

inline fun <reified TNodeNew : TreeNodeNew, reified TNode : TreeNodeBase> NormalOpenAPIRoute.treeNodeRoute( service: TreeNodeService<TNodeNew, TNode> ) { route("{id}").get<PathId, List<TNode>> { params -> respond(service.listNodes(params.id)) } route("{id}").delete<PathId, Unit> { params -> service.removeNode(params.id) pipeline.call.respond(HttpStatusCode.NoContent) } get<Unit, List<TNode>> { respond(service.listNodes(null)) } post<Unit, TNode, TNodeNew> { _, body -> respond(service.createNode(body)) } patch<Unit, Unit, TNode> { _, body -> service.updateNode(body) pipeline.call.respond(HttpStatusCode.NoContent) } }
This function has a reified type parameter and thus can only be inlined at compilation time, not called directly. java.lang.UnsupportedOperationException: This function has a reified type parameter and thus can only be inlined at compilation time, not called directly.	at kotlin.jvm.internal.Intrinsics.throwUndefinedForReified(Intrinsics.java:207)	at kotlin.jvm.internal.Intrinsics.throwUndefinedForReified(Intrinsics.java:201)	at kotlin.jvm.internal.Intrinsics.reifiedOperationMarker(Intrinsics.java:211)	at com.papsign.ktor.openapigen.routing.GenericRoutesTest$treeNodeRoutePrivate$$inlined$get$default$1.invoke(Functions.kt:104)	at com.papsign.ktor.openapigen.routing.GenericRoutesTest$treeNodeRoutePrivate$$inlined$get$default$1.invoke(Functions.kt:103)	at com.papsign.ktor.openapigen.route.FunctionsKt.preHandle(Functions.kt:162)	at com.papsign.ktor.openapigen.routing.GenericRoutesTest$genericRoutesTest$1$2.invoke(GenericRoutesTest.kt:372)	at com.papsign.ktor.openapigen.routing.GenericRoutesTest$genericRoutesTest$1$2.invoke(GenericRoutesTest.kt:51)	at com.papsign.ktor.openapigen.route.RouteConfigKt$apiRouting$1.invoke(RouteConfig.kt:21)	at com.papsign.ktor.openapigen.route.RouteConfigKt$apiRouting$1.invoke(RouteConfig.kt:17)	at io.ktor.routing.Routing$Feature.install(Routing.kt:106)	at io.ktor.routing.Routing$Feature.install(Routing.kt:88)	at io.ktor.application.ApplicationFeatureKt.install(ApplicationFeature.kt:68)	at io.ktor.routing.RoutingKt.routing(Routing.kt:129)	at com.papsign.ktor.openapigen.route.RouteConfigKt.apiRouting(RouteConfig.kt:17)	at com.papsign.ktor.openapigen.routing.GenericRoutesTest$genericRoutesTest$1.invoke(GenericRoutesTest.kt:51)	at com.papsign.ktor.openapigen.routing.GenericRoutesTest$genericRoutesTest$1.invoke(GenericRoutesTest.kt:32)	at io.ktor.server.testing.TestEngineKt$withTestApplication$1.invoke(TestEngine.kt:67)	at io.ktor.server.testing.TestEngineKt$withTestApplication$1.invoke(TestEngine.kt:66)	at io.ktor.server.testing.TestEngineKt.withApplication(TestEngine.kt:49)	at io.ktor.server.testing.TestEngineKt.withApplication$default(TestEngine.kt:41)	at io.ktor.server.testing.TestEngineKt.withTestApplication(TestEngine.kt:66)	at com.papsign.ktor.openapigen.routing.GenericRoutesTest.genericRoutesTest(GenericRoutesTest.kt:32) 
@Wicpar Wicpar merged commit a89e3f2 into papsign:master Jul 23, 2021
@Wicpar
Copy link
Collaborator

Wicpar commented Jul 23, 2021

God damn that one's a juicy compiler bug...

@darkxanter darkxanter deleted the bugfix/workaround_UnsupportedOperationException branch July 24, 2021 05:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants