Skip to content

Commit

Permalink
Update KotlinPoet (#5147)
Browse files Browse the repository at this point in the history
* update KotlinPoet

* hide new class
  • Loading branch information
martinbonnin authored Aug 3, 2023
1 parent d58aebd commit 14e9789
Show file tree
Hide file tree
Showing 636 changed files with 5,800 additions and 6,034 deletions.
2 changes: 1 addition & 1 deletion gradle/libraries.toml
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ moshi = { group = "com.squareup.moshi", name = "moshi", version = "1.14.0" }
okio = "com.squareup.okio:okio:3.2.0" # okio was pinned to 3.2.0 to stay compatible with Kotlin 1.5. Now that we have 1.6 as a minimum version, we could certainly update
okio-nodefilesystem = "com.squareup.okio:okio-nodefilesystem:3.2.0"
poet-java = { group = "com.squareup", name = "javapoet", version.ref = "javaPoet" }
poet-kotlin = { group = "com.squareup", name = "kotlinpoet", version = "1.12.0" }
poet-kotlin = { group = "com.squareup", name = "kotlinpoet", version = "1.14.2" }
rx-java2 = { group = "io.reactivex.rxjava2", name = "rxjava", version.ref = "rx-java2" }
rx-java3 = { group = "io.reactivex.rxjava3", name = "rxjava", version.ref = "rx-java3" }
sqldelight-android = { group = "app.cash.sqldelight", name = "android-driver", version.ref = "sqldelight" }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.apollographql.apollo3.compiler.codegen.kotlin

import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.FileSpec
import com.squareup.kotlinpoet.FunSpec
import com.squareup.kotlinpoet.PropertySpec
Expand All @@ -14,10 +15,12 @@ internal class CgFile(
val propertySpecs: List<PropertySpec> = emptyList(),
val funSpecs: List<FunSpec> = emptyList(),
val fileName: String,
val imports: List<CgImport> = emptyList()
)

internal interface CgFileBuilder {
fun prepare()
fun build(): CgFile
}

internal class CgImport(val className: ClassName, val alias: String )
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import com.apollographql.apollo3.compiler.hooks.ApolloCompilerKotlinHooks
import com.apollographql.apollo3.compiler.ir.DefaultIrOperations
import com.apollographql.apollo3.compiler.ir.DefaultIrSchema
import com.apollographql.apollo3.compiler.operationoutput.findOperationId
import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.FileSpec
import com.squareup.kotlinpoet.FunSpec
import com.squareup.kotlinpoet.KModifier
Expand Down Expand Up @@ -221,6 +222,9 @@ internal object KotlinCodeGen {
cgFile.propertySpecs.map { propertySpec -> propertySpec.internal(generateAsInternal) }.forEach { propertySpec ->
builder.addProperty(propertySpec)
}
cgFile.imports.forEach {
builder.addAliasedImport(it.className, it.alias)
}
ApolloCompilerKotlinHooks.FileInfo(fileSpec = builder.build())
}
.let { hooks.postProcessFiles(it) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.apollographql.apollo3.compiler.codegen.kotlin.file

import com.apollographql.apollo3.ast.QueryDocumentMinifier
import com.apollographql.apollo3.compiler.applyIf
import com.apollographql.apollo3.compiler.capitalizeFirstLetter
import com.apollographql.apollo3.compiler.codegen.Identifier.OPERATION_DOCUMENT
import com.apollographql.apollo3.compiler.codegen.Identifier.OPERATION_ID
import com.apollographql.apollo3.compiler.codegen.Identifier.OPERATION_NAME
Expand All @@ -10,6 +11,7 @@ import com.apollographql.apollo3.compiler.codegen.Identifier.id
import com.apollographql.apollo3.compiler.codegen.Identifier.name
import com.apollographql.apollo3.compiler.codegen.kotlin.CgFile
import com.apollographql.apollo3.compiler.codegen.kotlin.CgFileBuilder
import com.apollographql.apollo3.compiler.codegen.kotlin.CgImport
import com.apollographql.apollo3.compiler.codegen.kotlin.KotlinContext
import com.apollographql.apollo3.compiler.codegen.kotlin.KotlinSymbols
import com.apollographql.apollo3.compiler.codegen.kotlin.helpers.makeDataClass
Expand Down Expand Up @@ -72,10 +74,18 @@ internal class OperationBuilder(
}

override fun build(): CgFile {
val className = context.resolver.resolveSchemaType(operation.typeCondition)
return CgFile(
packageName = packageName,
fileName = simpleName,
typeSpecs = listOf(typeSpec())
typeSpecs = listOf(typeSpec()),
imports = listOf(
CgImport(
className,
"Compiled${className.simpleName.capitalizeFirstLetter()}"
)

)
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,15 @@ internal class ModelBuilder(
private fun buildAccessorFunSpecs(model: IrModel): List<FunSpec> {
return model.accessors.map { accessor ->

val returnedClassName = context.resolver.resolveModel(accessor.returnedModelId)
FunSpec.builder(accessor.funName())
.applyIf(!context.jsExport) {
receiver(context.resolver.resolveModel(model.id))
}
.addCode("return·this as? %T\n", context.resolver.resolveModel(accessor.returnedModelId))
.returns(returnedClassName.copy(nullable = true))
.addAnnotation(AnnotationSpec.builder(KotlinSymbols.Suppress).addMember("%S", "USELESS_CAST").build())
// https://github.com/square/kotlinpoet/pull/1559
.addCode("return this as? %T\n", returnedClassName)
.build()
}
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 14e9789

Please sign in to comment.