Skip to content

SimpleResponseParser fails when directives reference absent booleans with default values #2703

Closed
@DSteve595

Description

@DSteve595

Version
2.4.1

Description
Given a query that has a boolean arg with a default value, e.g.

query MyQuery($myBool: Boolean = true) {
    getCityByName(name: "London") {
        id @include(if: $myBool)
    }
}

Parsing this query via ApolloClient works as expected. However, using Operation::parse fails with this exception:

kotlin.TypeCastException: null cannot be cast to non-null type kotlin.Boolean
	at com.apollographql.apollo.api.internal.SimpleResponseReader.shouldSkip(SimpleResponseReader.kt:133)
	at com.apollographql.apollo.api.internal.SimpleResponseReader.readCustomType(SimpleResponseReader.kt:99)
	at MyQuery$GetCityByName$Companion.invoke(MyQuery.kt:123)
	at MyQuery$Data$Companion$invoke$1$getCityByName$1.invoke(MyQuery.kt:153)
	at MyQuery$Data$Companion$invoke$1$getCityByName$1.invoke(MyQuery.kt:145)
	at com.apollographql.apollo.api.internal.ResponseReader$readObject$1.read(ResponseReader.kt:26)
	at com.apollographql.apollo.api.internal.SimpleResponseReader.readObject(SimpleResponseReader.kt:80)
	at com.apollographql.apollo.api.internal.ResponseReader$DefaultImpls.readObject(ResponseReader.kt:24)
	at com.apollographql.apollo.api.internal.SimpleResponseReader.readObject(SimpleResponseReader.kt:11)
	at MyQuery$Data$Companion.invoke(MyQuery.kt:152)
	at MyQuery$responseFieldMapper$$inlined$invoke$1.map(ResponseFieldMapper.kt:22)
	at com.apollographql.apollo.api.internal.SimpleOperationResponseParser.parse(SimpleOperationResponseParser.kt:39)
	at com.apollographql.apollo.api.internal.SimpleOperationResponseParser.parse(SimpleOperationResponseParser.kt:26)
	at MyQuery.parse(MyQuery.kt:66)
	at MyQuery.parse(MyQuery.kt:73)

Sample project

Run ./gradlew run to trigger the issue.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions