-
Notifications
You must be signed in to change notification settings - Fork 367
Closed
Labels
module: pluginIssue affects the plugins codeIssue affects the plugins codetype: bugSomething isn't workingSomething isn't working
Description
Library Version
3.6.8
Describe the bug
Now that we understand the (presumable) bug, this is easy to work around, but filing the issue since the problem wasn't immediately obvious in large auto-generated schemas.
Presently when a "%" is included in any schema comment, that will be passed as-is to KotlinPoet. KotlinPoet uses "%" for various formatters within the provided text string, causing parsing to fail. An example stack is:
Exception in thread "main" java.lang.IllegalArgumentException: index 1 for '% ' not in range (received 0 arguments)
at com.squareup.kotlinpoet.CodeBlock$Builder.add(CodeBlock.kt:310)
at com.squareup.kotlinpoet.TypeSpec$Builder.addKdoc(TypeSpec.kt:473)
at com.expediagroup.graphql.plugin.generator.types.GenerateGraphQLEnumTypeSpecKt.generateGraphQLEnumTypeSpec(generateGraphQLEnumTypeSpec.kt:38)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateCustomClassName(generateTypeName.kt:89)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:59)
at com.expediagroup.graphql.plugin.generator.types.GeneratePropertySpecsKt.generatePropertySpecs(generatePropertySpecs.kt:45)
at com.expediagroup.graphql.plugin.generator.types.GeneratePropertySpecsKt.generatePropertySpecs$default(generatePropertySpecs.kt:37)
at com.expediagroup.graphql.plugin.generator.types.GenerateGraphQLObjectTypeSpecKt.generateGraphQLObjectTypeSpec(generateGraphQLObjectTypeSpec.kt:49)
at com.expediagroup.graphql.plugin.generator.types.GenerateGraphQLObjectTypeSpecKt.generateGraphQLObjectTypeSpec$default(generateGraphQLObjectTypeSpec.kt:35)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateCustomClassName(generateTypeName.kt:87)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:59)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:53)
at com.expediagroup.graphql.plugin.generator.types.GeneratePropertySpecsKt.generatePropertySpecs(generatePropertySpecs.kt:45)
at com.expediagroup.graphql.plugin.generator.types.GeneratePropertySpecsKt.generatePropertySpecs$default(generatePropertySpecs.kt:37)
at com.expediagroup.graphql.plugin.generator.types.GenerateGraphQLObjectTypeSpecKt.generateGraphQLObjectTypeSpec(generateGraphQLObjectTypeSpec.kt:49)
at com.expediagroup.graphql.plugin.generator.types.GenerateGraphQLObjectTypeSpecKt.generateGraphQLObjectTypeSpec$default(generateGraphQLObjectTypeSpec.kt:35)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateCustomClassName(generateTypeName.kt:87)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:59)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:53)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:61)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:53)
at com.expediagroup.graphql.plugin.generator.types.GeneratePropertySpecsKt.generatePropertySpecs(generatePropertySpecs.kt:45)
at com.expediagroup.graphql.plugin.generator.types.GeneratePropertySpecsKt.generatePropertySpecs$default(generatePropertySpecs.kt:37)
at com.expediagroup.graphql.plugin.generator.types.GenerateGraphQLObjectTypeSpecKt.generateGraphQLObjectTypeSpec(generateGraphQLObjectTypeSpec.kt:49)
at com.expediagroup.graphql.plugin.generator.types.GenerateGraphQLObjectTypeSpecKt.generateGraphQLObjectTypeSpec$default(generateGraphQLObjectTypeSpec.kt:35)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateCustomClassName(generateTypeName.kt:87)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:59)
at com.expediagroup.graphql.plugin.generator.types.GenerateTypeNameKt.generateTypeName(generateTypeName.kt:53)
at com.expediagroup.graphql.plugin.generator.types.GeneratePropertySpecsKt.generatePropertySpecs(generatePropertySpecs.kt:45)
at com.expediagroup.graphql.plugin.generator.types.GeneratePropertySpecsKt.generatePropertySpecs$default(generatePropertySpecs.kt:37)
at com.expediagroup.graphql.plugin.generator.types.GenerateGraphQLObjectTypeSpecKt.generateGraphQLObjectTypeSpec(generateGraphQLObjectTypeSpec.kt:49)
at com.expediagroup.graphql.plugin.generator.GraphQLClientGenerator.generate$graphql_kotlin_plugin_core(GraphQLClientGenerator.kt:101)
at com.expediagroup.graphql.plugin.generator.GraphQLClientGenerator.generate(GraphQLClientGenerator.kt:61)
at com.expediagroup.graphql.plugin.GenerateClientKt.generateClient(generateClient.kt:35)
at com.squareup.graphql_kt_codegen.Generator$Companion.main(Generator.kt:80)
at com.squareup.graphql_kt_codegen.Generator.main(Generator.kt)
To Reproduce
Add the following comment to an existing (for example) enum in a schema.
"""
Test comment %
"""
e.g.
"""
Test %
"""
enum testEnum {
TEST_VALUE
}
Expected behavior
(Prior to learning about KotlinPoet behavior) I would have expected the %
to be passed through unmodified.
Metadata
Metadata
Assignees
Labels
module: pluginIssue affects the plugins codeIssue affects the plugins codetype: bugSomething isn't workingSomething isn't working