Description
Use case
Currently, when
statements need to match .UNKNOWN__
every time they're used in a codebase.
when(color) {
BLUEBERRY -> TODO()
CANDY -> TODO()
__UNKNOWN -> TODO()
}
This means I need to think through the UNKNOWN
fallback several times.
If the Apollo codegen provided an enum that didn't contain this case, I could instead write
when(color.unwrap()) {
BLUEBERRY -> TODO()
CANDY -> TODO()
}
Yes, nothing's currently stopping me from writing an unwrap()
extension, but I still need to sprinkle __UNKNOWN
throughout my codebase to get the when
statements to compile.
This is how Apollo iOS works, btw. GraphQLEnum.unknown is instead a wrapper enum around the core enum. On first glance, you would think Kotlin's approach is nicer because you don't need to match .case(...)
, but every single when statement needs a default case to handle the .UNKNOWN__
, whereas iOS I can just create an unwrapper at the top level of my project to handle .unknown
once.
Describe the solution you'd like

Apollo Kotlin already generates knownEntries List
. If it just provided this exact thing in enum
format I could write my own project level unwrap()
and my individual when
statements would never need to worry about .UNKNOWN__
.