Fixed
Status Update
Comments
sp...@gmail.com <sp...@gmail.com> #2
Could this also help with the problem where a non-nullable type can be null because nullability is not inferred in the generated Java code? E.g., having a query returning a LiveData<Pojo> but the table of Pojo's is empty so the LiveData will trigger an update with a null value that shouldn't be null (or maybe that is a plain bug).
se...@google.com <se...@google.com>
la...@gmail.com <la...@gmail.com> #3
Actually for that, maybe we can start reading the nullability annotation and respect that?
It might get a bit more complicated with regular returns.
e.g. if you write
@Query(...)
suspend fun getUser(id:String) : User
do we throw NPE if user does not exist? i guess we have to.
So then this would be only for `Flow` and `LiveData` return types and i hope we already handle nullability for `FLow` ?
It might get a bit more complicated with regular returns.
e.g. if you write
@Query(...)
suspend fun getUser(id:String) : User
do we throw NPE if user does not exist? i guess we have to.
So then this would be only for `Flow` and `LiveData` return types and i hope we already handle nullability for `FLow` ?
ma...@gmail.com <ma...@gmail.com> #4
From what I can see, there is no nullability annotation in the generated DAO code (as of Room 2.2.0-rc01) when returning LiveData. The result object is declared and returned uninitialized if the cursor is empty. Or I might be reading it wrong.
sp...@gmail.com <sp...@gmail.com> #5
VOTE +100500
[Deleted User] <[Deleted User]> #6
Maybe for first step (if kotlin obly project) don generate kotlin class files from java sources and delete Java gen sources. Becouse another annotation processors reread it. I think it's normal what IMPL classes will be only in bin/disassembled modules
ap...@google.com <ap...@google.com> #7
Any updates?
whats about
when we get kotlin first? I have compile to java only in room and ksp data bindings. Want deny generate any java code!
jb...@google.com <jb...@google.com> #8
databinding won't get kotlin codegen or KSP support (not worth the effort)
As for room, we are working on moving room runtime to kotlin first, then will work on kotlin codegen. It is a large and difficult project so it will take a while :(
sp...@gmail.com <sp...@gmail.com> #9
Project: platform/frameworks/support
Branch: androidx-main
commit b604ea36c846512e141f0af5c0e31096335813b7
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Aug 10 10:06:19 2022
Generate AutoMigration in Kotlin
The first baby steps for generating Kotlin code in Room.
* Add a processor option, 'room.generateKotlin' that when enabled will cause Room to generate Kotlin code instead of Java. For now only auto migrations are generated in Kotlin but slowly the rest of the code will be converted.
* Add XProcessing APIs that mirror JavaPoet / KotlinPoet so that code generation logic is shared.
* XPoet will have common functionality, such as declaring a local variable, adding a method, etc. It does provide a 'backdoor' API that exposes the JavaPoet and KotlinPoet code blocks for situations when the generated code diverges too much.
* XPoet right now relies on JavaPoet TypeNames but this will change in a follow-up CL.
* XPoet uses KotlinPoet placeholder syntax (%) instead of JavaPoet ($)
Bug: 127483380
Test: AutoMigrationWriterTest
Change-Id: Ifbdf5a3a3456a3bffdceb04d9d4b173713615e45
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinAnnotationSpec.kt
M room/room-compiler/src/test/kotlin/androidx/room/testing/test_util.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinFunSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XFiler.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/PoetExt.kt
A room/room-compiler/src/test/test-data/autoMigrationWriter/output/kotlin/AutoMigrationWithProvidedSpec.kt
M room/room-compiler/src/test/kotlin/androidx/room/util/SchemaDifferTest.kt
M room/room-compiler-processing/build.gradle
M room/room-compiler/src/test/kotlin/androidx/room/writer/AutoMigrationWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/DatabaseProcessingStep.kt
A room/room-compiler/src/main/kotlin/androidx/room/writer/TypeWriter.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinTypeSpec.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/ValidAutoMigrationWithDefault.java
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeSpec.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/Context.kt
M room/room-compiler/build.gradle
A room/room-compiler/src/test/test-data/autoMigrationWriter/output/kotlin/ValidAutoMigrationWithoutDefault.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinLang.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/VisibilityModifier.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaLang.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XAnnotationSpec.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/AutoMigrationWithProvidedSpec.java
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaAnnotationSpec.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/CodeLanguage.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/ClassNames.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/ValidAutoMigrationWithoutDefault.java
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
D room/room-compiler/src/test/test-data/autoMigrationWriter/output/ValidMultiColumnRename.java
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaFunSpec.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
A room/room-compiler/src/test/test-data/autoMigrationWriter/output/kotlin/ValidAutoMigrationWithDefault.kt
https://android-review.googlesource.com/2181816
Branch: androidx-main
commit b604ea36c846512e141f0af5c0e31096335813b7
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Aug 10 10:06:19 2022
Generate AutoMigration in Kotlin
The first baby steps for generating Kotlin code in Room.
* Add a processor option, 'room.generateKotlin' that when enabled will cause Room to generate Kotlin code instead of Java. For now only auto migrations are generated in Kotlin but slowly the rest of the code will be converted.
* Add XProcessing APIs that mirror JavaPoet / KotlinPoet so that code generation logic is shared.
* XPoet will have common functionality, such as declaring a local variable, adding a method, etc. It does provide a 'backdoor' API that exposes the JavaPoet and KotlinPoet code blocks for situations when the generated code diverges too much.
* XPoet right now relies on JavaPoet TypeNames but this will change in a follow-up CL.
* XPoet uses KotlinPoet placeholder syntax (%) instead of JavaPoet ($)
Bug: 127483380
Test: AutoMigrationWriterTest
Change-Id: Ifbdf5a3a3456a3bffdceb04d9d4b173713615e45
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinAnnotationSpec.kt
M room/room-compiler/src/test/kotlin/androidx/room/testing/test_util.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinFunSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XFiler.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/PoetExt.kt
A room/room-compiler/src/test/test-data/autoMigrationWriter/output/kotlin/AutoMigrationWithProvidedSpec.kt
M room/room-compiler/src/test/kotlin/androidx/room/util/SchemaDifferTest.kt
M room/room-compiler-processing/build.gradle
M room/room-compiler/src/test/kotlin/androidx/room/writer/AutoMigrationWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/DatabaseProcessingStep.kt
A room/room-compiler/src/main/kotlin/androidx/room/writer/TypeWriter.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinTypeSpec.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/ValidAutoMigrationWithDefault.java
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeSpec.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/Context.kt
M room/room-compiler/build.gradle
A room/room-compiler/src/test/test-data/autoMigrationWriter/output/kotlin/ValidAutoMigrationWithoutDefault.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinLang.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/VisibilityModifier.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaLang.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XAnnotationSpec.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/AutoMigrationWithProvidedSpec.java
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaAnnotationSpec.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/CodeLanguage.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/ClassNames.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/ValidAutoMigrationWithoutDefault.java
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
D room/room-compiler/src/test/test-data/autoMigrationWriter/output/ValidMultiColumnRename.java
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaFunSpec.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
A room/room-compiler/src/test/test-data/autoMigrationWriter/output/kotlin/ValidAutoMigrationWithDefault.kt
jb...@google.com <jb...@google.com>
go...@gmail.com <go...@gmail.com> #10
Project: platform/frameworks/support
Branch: androidx-main
commit 587c02190b130f440c2ebde859eb5ba46aa62241
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Sat Sep 17 12:55:48 2022
Create an XTypeName for XProcessing and XPoet
Create a xprocessing type name that wraps JavaPoet and KotlinPoet type names. The KotlinPoet name will only be available in KSP, for Javac and KAPT the name will be UNAVAILABLE, the reasoning is that only in KSP will Kotlin code will be generated as it contains the best type information.
* XPoet APIs are migrated to take XTypeName instead of JavaPoet type name.
* For now KSP KotlinPoet name building logic is copied from JavaPoet's version.
Migration and deprecation of JavaPoet as API in xprocessing will be done in follow-up CLs along with any test that verifies JavaPoet name will also verify KotlinPoet name.
Bug: 127483380
Test: XArrayType and a bit in XTypeElement
Change-Id: I76f0afbdb2a2fc6fa50c930ccc0fd7d50b998197
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinAnnotationSpec.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinFunSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/PoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XFiler.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspTypeElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/JavaPoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XTypeElement.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/TypeWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinTypeSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspArrayType.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspPrimitiveType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaTypeSpec.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeKotlinPoetExt.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeJavaPoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspMethodType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XAnnotationSpec.kt
A room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/util/PoetTestExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XType.kt
D room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/util/JavaPoetTestExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacTypeElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaAnnotationSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XArrayTypeTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/AutoMigration.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/DefaultKspType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspVoidType.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KSTypeExtTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspTypeArgumentType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeExt.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KTypeVariableNameFactory.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/ClassNames.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaFunSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspTypeTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacArrayType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacType.kt
https://android-review.googlesource.com/2184144
Branch: androidx-main
commit 587c02190b130f440c2ebde859eb5ba46aa62241
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Sat Sep 17 12:55:48 2022
Create an XTypeName for XProcessing and XPoet
Create a xprocessing type name that wraps JavaPoet and KotlinPoet type names. The KotlinPoet name will only be available in KSP, for Javac and KAPT the name will be UNAVAILABLE, the reasoning is that only in KSP will Kotlin code will be generated as it contains the best type information.
* XPoet APIs are migrated to take XTypeName instead of JavaPoet type name.
* For now KSP KotlinPoet name building logic is copied from JavaPoet's version.
Migration and deprecation of JavaPoet as API in xprocessing will be done in follow-up CLs along with any test that verifies JavaPoet name will also verify KotlinPoet name.
Bug: 127483380
Test: XArrayType and a bit in XTypeElement
Change-Id: I76f0afbdb2a2fc6fa50c930ccc0fd7d50b998197
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinAnnotationSpec.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinFunSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/PoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XFiler.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspTypeElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/JavaPoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XTypeElement.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/TypeWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinTypeSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspArrayType.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspPrimitiveType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaTypeSpec.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeKotlinPoetExt.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeJavaPoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspMethodType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XAnnotationSpec.kt
A room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/util/PoetTestExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XType.kt
D room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/util/JavaPoetTestExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacTypeElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaAnnotationSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XArrayTypeTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/AutoMigration.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/DefaultKspType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspVoidType.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KSTypeExtTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspTypeArgumentType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KSTypeExt.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KTypeVariableNameFactory.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/ClassNames.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaFunSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspTypeTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacArrayType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacType.kt
n....@tinkoff.ru <n....@tinkoff.ru> #11
Project: platform/frameworks/support
Branch: androidx-main
commit fe98c7071a794803f016fb2681dbef15db26f6e2
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Thu Sep 22 22:58:50 2022
Migrate remaining implementations of ClassWriter to TypeWriter.
* This change moves all Room writers that defined a TypeSpec to TypeWriter which uses XPoet.
* TypeWriter is not fully migrated though, shared fields and methods need to be converted to XPoet.
* This change also migrates CodeGenScope to use XPoet but keeps the compatibility `builder(): JCodeBlockBuilder` function that will slowly be migrated and eventually the function removed.
Bug: 127483380
Test: ./gradlew :room:room-compiler:test
Change-Id: I49f0f92e63e41d263f3fc255455ed5e1e046ac9b
M room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
M room/room-compiler/src/test/kotlin/androidx/room/testing/test_util.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityCursorConverterWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/EntityCursorConverterWriterTest.kt
D room/room-compiler/src/main/kotlin/androidx/room/writer/ClassWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/EnumColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/PreparedStatementWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/DatabaseProcessingStep.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/TypeWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/BasicColumnTypeAdaptersTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/RxCallableQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableInsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableUpsertMethodBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpdateAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/CodeGenScope.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/CallablePreparedQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityInsertionAdapterWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/NullabilityAwareTypeConverterStoreTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/query/QueryWriterTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DefaultsInDaoTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableDeleteOrUpdateMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/transaction/binder/InstantTransactionMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Database.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpsertionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/RelationCollectorMethodWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/transaction/binder/CoroutineTransactionMethodBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/BaseDaoTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CustomTypeConverterWrapper.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityDeletionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Dao.kt
https://android-review.googlesource.com/2228697
Branch: androidx-main
commit fe98c7071a794803f016fb2681dbef15db26f6e2
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Thu Sep 22 22:58:50 2022
Migrate remaining implementations of ClassWriter to TypeWriter.
* This change moves all Room writers that defined a TypeSpec to TypeWriter which uses XPoet.
* TypeWriter is not fully migrated though, shared fields and methods need to be converted to XPoet.
* This change also migrates CodeGenScope to use XPoet but keeps the compatibility `builder(): JCodeBlockBuilder` function that will slowly be migrated and eventually the function removed.
Bug: 127483380
Test: ./gradlew :room:room-compiler:test
Change-Id: I49f0f92e63e41d263f3fc255455ed5e1e046ac9b
M room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
M room/room-compiler/src/test/kotlin/androidx/room/testing/test_util.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityCursorConverterWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/EntityCursorConverterWriterTest.kt
D room/room-compiler/src/main/kotlin/androidx/room/writer/ClassWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/EnumColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/PreparedStatementWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/DatabaseProcessingStep.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/TypeWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/BasicColumnTypeAdaptersTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/RxCallableQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableInsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableUpsertMethodBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpdateAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/CodeGenScope.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/CallablePreparedQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityInsertionAdapterWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/NullabilityAwareTypeConverterStoreTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/query/QueryWriterTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DefaultsInDaoTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableDeleteOrUpdateMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/transaction/binder/InstantTransactionMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Database.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpsertionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/RelationCollectorMethodWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/transaction/binder/CoroutineTransactionMethodBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/BaseDaoTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CustomTypeConverterWrapper.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityDeletionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Dao.kt
an...@gmail.com <an...@gmail.com> #12
Project: platform/frameworks/support
Branch: androidx-main
commit 2326b4305e143a128a5da9db65e18805809f9809
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Thu Sep 22 12:15:21 2022
Migrate XProcessing to XTypeName
This changes migrates most of the usages of room-compiler-processing to XTypeName along with a vast majority of tests which further asserts on the correctness of KotlinPoet name creation in KSP.
Bug: 127483380
Test: ./gradlew :room:room-compiler-processing:test
Change-Id: Ifc18c449d1bc88696c578732a630c7ce92d773d4
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspFileMemberContainer.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationBoxTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XMethodElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/JavaPoetExt.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationValueTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XTypeElement.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XRoundEnvTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XExecutableElementTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/synthetic/KspSyntheticFileMemberContainer.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XRawType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XConstructorElement.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XElementTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/util/PoetTestExt.kt
A room/room-compiler-processing/src/test/java/androidx/room/compiler/codegen/XTypeNameTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XType.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XNullabilityTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XAnnotation.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacRawType.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XProcessingEnvTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/synthetic/KspSyntheticFileMemberContainerTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/TypeAliasTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspJvmTypeResolver.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/KotlinMetadataTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XExecutableTypeTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeParameterElementTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/compat/XConvertersTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XMemberContainer.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XProcessingStepTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/TypeInheritanceTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/InternalModifierTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspTypeTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspRawType.kt
https://android-review.googlesource.com/2223957
Branch: androidx-main
commit 2326b4305e143a128a5da9db65e18805809f9809
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Thu Sep 22 12:15:21 2022
Migrate XProcessing to XTypeName
This changes migrates most of the usages of room-compiler-processing to XTypeName along with a vast majority of tests which further asserts on the correctness of KotlinPoet name creation in KSP.
Bug: 127483380
Test: ./gradlew :room:room-compiler-processing:test
Change-Id: Ifc18c449d1bc88696c578732a630c7ce92d773d4
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspFileMemberContainer.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationBoxTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XMethodElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/JavaPoetExt.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationValueTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XTypeElement.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XRoundEnvTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XExecutableElementTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/synthetic/KspSyntheticFileMemberContainer.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XRawType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XConstructorElement.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XElementTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/util/PoetTestExt.kt
A room/room-compiler-processing/src/test/java/androidx/room/compiler/codegen/XTypeNameTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XType.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XNullabilityTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XAnnotation.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacRawType.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XProcessingEnvTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/synthetic/KspSyntheticFileMemberContainerTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/TypeAliasTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspJvmTypeResolver.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/KotlinMetadataTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XExecutableTypeTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeParameterElementTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/compat/XConvertersTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XMemberContainer.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XProcessingStepTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/TypeInheritanceTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/InternalModifierTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/ksp/KspTypeTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacType.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspRawType.kt
cu...@gmail.com <cu...@gmail.com> #13
This bug was linked in a change in the following release(s):
androidx.room:room-compiler:2.5.0-beta01
androidx.room:room-compiler-processing:2.5.0-beta01
cu...@gmail.com <cu...@gmail.com> #14
Project: platform/frameworks/support
Branch: androidx-main
commit 8b793f80b76e1009846caa8726bcb3f8150a6d4a
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Sep 28 13:23:51 2022
Convert TypeWriter shared fields and methods to XPoet
By completing migration of TypeWriter to XPoet this CL enables the migration of more complex adapter that create shared DAO properties or functions including CustomTypeConverterWrapper.
Additionally convert the last remaining built-in column adapters:
* ByteBuffer
* Enum
* UUID
New XPoet APIs are:
* XPropertySpec - to represent a field in Java and a property in Kotlin
* XCodeBlock.ofJavaClassLiteral - to emit code for a java class literal (e.g. String.class or String::class.java)
* XClassName.parametrizedBy() - To create parametrized class names. Note that there is no XTypeVariableName yet.
Bug: 127483380
Bug: 247241418
Test: Existing, mainly the Java test app gives us the best coverage of Java code still being generated correctly, Kotlin generated code is partially verified.
Change-Id: I575e6f53da23a88591b2ff774fc0afa828837d97
M room/room-compiler/src/main/kotlin/androidx/room/writer/RelationCollectorFunctionWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinFunSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityCursorConverterWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/EntityCursorConverterWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantDeleteOrUpdateMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/PreparedStatementWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/TypeWriter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/ComplexDao.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantUpsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableInsertMethodBinder.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XPropertySpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/RelationCollector.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/EntityRowAdapter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/CustomConverterProcessor.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PojoIndexAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/CustomTypeConverter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityInsertionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableDeleteOrUpdateMethodBinder.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertOrUpsertMethodAdapter.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/CustomConverterProcessorTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpsertionAdapterWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/DeleteOrUpdateMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CustomTypeConverterWrapper.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityDeletionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InsertOrUpsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/EnumColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/DeleteOrUpdateMethodAdapter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/UuidColumnTypeAdapter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantInsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/SingleNamedColumnRowAdapter.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaPropertySpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinPropertySpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableUpsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpdateAdapterWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacProcessingEnv.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/ComplexDao.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaFunSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/ByteBufferColumnTypeAdapter.kt
https://android-review.googlesource.com/2234531
Branch: androidx-main
commit 8b793f80b76e1009846caa8726bcb3f8150a6d4a
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Sep 28 13:23:51 2022
Convert TypeWriter shared fields and methods to XPoet
By completing migration of TypeWriter to XPoet this CL enables the migration of more complex adapter that create shared DAO properties or functions including CustomTypeConverterWrapper.
Additionally convert the last remaining built-in column adapters:
* ByteBuffer
* Enum
* UUID
New XPoet APIs are:
* XPropertySpec - to represent a field in Java and a property in Kotlin
* XCodeBlock.ofJavaClassLiteral - to emit code for a java class literal (e.g. String.class or String::class.java)
* XClassName.parametrizedBy() - To create parametrized class names. Note that there is no XTypeVariableName yet.
Bug: 127483380
Bug: 247241418
Test: Existing, mainly the Java test app gives us the best coverage of Java code still being generated correctly, Kotlin generated code is partially verified.
Change-Id: I575e6f53da23a88591b2ff774fc0afa828837d97
M room/room-compiler/src/main/kotlin/androidx/room/writer/RelationCollectorFunctionWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinFunSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityCursorConverterWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/EntityCursorConverterWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantDeleteOrUpdateMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/PreparedStatementWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/TypeWriter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/ComplexDao.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantUpsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableInsertMethodBinder.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XPropertySpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/RelationCollector.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/EntityRowAdapter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/CustomConverterProcessor.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PojoIndexAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/CustomTypeConverter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityInsertionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableDeleteOrUpdateMethodBinder.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertOrUpsertMethodAdapter.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/CustomConverterProcessorTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpsertionAdapterWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/DeleteOrUpdateMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CustomTypeConverterWrapper.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityDeletionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InsertOrUpsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/EnumColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/DeleteOrUpdateMethodAdapter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/UuidColumnTypeAdapter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantInsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/SingleNamedColumnRowAdapter.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaPropertySpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinPropertySpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/CallableUpsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityUpdateAdapterWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacProcessingEnv.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/ComplexDao.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaFunSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/ByteBufferColumnTypeAdapter.kt
jo...@gmail.com <jo...@gmail.com> #15
Project: platform/frameworks/support
Branch: androidx-main
commit 155f7ec288a5b63a136cd2e0ebd177689cc7a9e7
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Sep 26 22:36:29 2022
Convert more ColumnTypeAdapters to XPoet
* Boxed primitives
* String
* Boolean (which is really primitive boolean to int and its boxed version)
* ByteArray (blob)
Updated the signature of CustomTypeConverter but its not actually fully converted to XPoet.
Since KSP has nullability information and nullability is part of Kotlin's type system, core adapters such as String and ByteArray will not generated null-check code is type is known to be not-null. This diverges the generated code between javac and ksp and tests were updated to reflect that.
Bug: 127483380
Test: Existing tests + KotlinCodeGenTest
Change-Id: Ic3d06ac7a12fb6d2e55de60e1b75270a4541217d
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpsertDao.java
M room/room-compiler/src/test/kotlin/androidx/room/writer/EntityCursorConverterWriterTest.kt
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/DeletionDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/PrimitiveBooleanToIntConverter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/StringColumnTypeAdapter.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_string.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpdateDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/javac/ComplexDao.java
M room/room-compiler/src/test/kotlin/androidx/room/solver/BasicColumnTypeAdaptersTest.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_primitives_nullable.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/ByteArrayColumnTypeAdapter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpsertDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/javac/WriterDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/BoxedPrimitiveColumnTypeAdapter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/DeletionDao.java
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/CodeGenScope.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/query/QueryWriterTest.kt
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/WriterDao.java
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/ComplexDao.java
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_byteArray.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/SingleStatementTypeConverter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/ColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CompositeAdapter.kt
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpdateDao.java
M room/room-compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CustomTypeConverterWrapper.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_boolean.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/BoxedBooleanToBoxedIntConverter.kt
https://android-review.googlesource.com/2233486
Branch: androidx-main
commit 155f7ec288a5b63a136cd2e0ebd177689cc7a9e7
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Mon Sep 26 22:36:29 2022
Convert more ColumnTypeAdapters to XPoet
* Boxed primitives
* String
* Boolean (which is really primitive boolean to int and its boxed version)
* ByteArray (blob)
Updated the signature of CustomTypeConverter but its not actually fully converted to XPoet.
Since KSP has nullability information and nullability is part of Kotlin's type system, core adapters such as String and ByteArray will not generated null-check code is type is known to be not-null. This diverges the generated code between javac and ksp and tests were updated to reflect that.
Bug: 127483380
Test: Existing tests + KotlinCodeGenTest
Change-Id: Ic3d06ac7a12fb6d2e55de60e1b75270a4541217d
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpsertDao.java
M room/room-compiler/src/test/kotlin/androidx/room/writer/EntityCursorConverterWriterTest.kt
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/DeletionDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/PrimitiveBooleanToIntConverter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/StringColumnTypeAdapter.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_string.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpdateDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/javac/ComplexDao.java
M room/room-compiler/src/test/kotlin/androidx/room/solver/BasicColumnTypeAdaptersTest.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_primitives_nullable.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/ByteArrayColumnTypeAdapter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpsertDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/javac/WriterDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/BoxedPrimitiveColumnTypeAdapter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/DeletionDao.java
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/CodeGenScope.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/query/QueryWriterTest.kt
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/WriterDao.java
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/ComplexDao.java
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_byteArray.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/SingleStatementTypeConverter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/ColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CompositeAdapter.kt
A room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpdateDao.java
M room/room-compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CustomTypeConverterWrapper.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_boolean.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/BoxedBooleanToBoxedIntConverter.kt
ya...@gmail.com <ya...@gmail.com> #16
Project: platform/frameworks/support
Branch: androidx-main
commit 885c9eb48af78167698d95ecfde57e6b4c741ab3
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Thu Sep 29 21:49:35 2022
Generate DAOs in Kotlin
Partially migrate DAO code generation (DaoWriter, QueryWriter) to XPoet such that the simple path of InstantQueryResultBinder -> SingleItemQueryResultAdapter -> PojoRowAdapter can be completely generated in Kotlin. With this big change we are able to start parallel migration of the different supported binders and adapters.
The following codegen classes are now completely migrated to XPoet:
* QueryWriter
* InstantQueryResultBinder
* CursorQueryResultBinder
* SingleEntityQueryResultAdapter
* PojoIndexAdapter
Note that PojoRowAdapter now in-lines the FieldReadWriteWriter generated code, but it is still partially migrated to XPoet since RelationCollectorFunctionWriter is not migrated.
New XPoet APIs:
* XMemberName - To emit companion object and top-level functions / properties references.
* XFunSpec.overridingBuilder() - To create an override function builder.
* XTypeSpec.anonymousClassBuilder() - To create anonymous classes.
* XTypeSpec.companionObjectBuilder() - To create companion object classes. For Java this is just a class named 'Companion'.
Bug: 127483380
Test: Existing, mainly the Java test app. KotlinCodeGenTest now verifies generates DAO implementations (instead of isolated PojoRowAdapter). With shared functions and properties migrated we can also now tests Enums and Custom type converters, added codegen tests for those.
Change-Id: I60033b06f1c57497fc4ddbe2678f14ba589dd566
M room/room-compiler/src/main/kotlin/androidx/room/writer/RelationCollectorFunctionWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/BaseObservableQueryResultBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/CustomTypeConverterResolutionTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/InsertOrUpsertShortcutMethodProcessorTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/PoetExt.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/EntityCursorConverterWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PositionalDataSourceQueryResultBinder.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_uuid.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/DeletionDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantDeleteOrUpdateMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Pojo.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineResultBinder.kt
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_string.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/ComplexDao.java
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/ValidAutoMigrationWithDefault.java
A room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/SingleItemQueryResultAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantUpsertMethodBinder.kt
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_primitives.kt
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_primitives_nullable.kt
D room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/SingleEntityQueryResultAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/WriterDao.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XPropertySpec.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/DeletionDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/MultiTypedPagingSourceQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutEntity.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/AutoMigrationWithProvidedSpec.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PojoIndexAdapter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/OptionalQueryResultAdapter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/WriterDao.java
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_byteArray.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XMemberName.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/ValidAutoMigrationWithoutDefault.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/RxQueryResultBinder.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpdateDao.java
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_embedded.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineFlowResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CustomTypeConverterWrapper.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Dao.kt
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_boolean.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/GuavaOptionalQueryResultAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/FieldReadWriteWriter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpsertDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/EnumColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
M room/room-compiler/src/main/kotlin/androidx/room/DatabaseProcessingStep.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CursorQueryResultBinder.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpdateDao.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/UuidColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/LiveDataQueryResultBinder.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/RxCallableQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantInsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/TransactionWrapper.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/GuavaListenableFutureQueryResultBinder.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpsertDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_enum.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/query/QueryWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/InstantPreparedQueryResultBinder.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_customTypeConverter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DefaultsInDaoTest.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/ComplexDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/QueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/QueryWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/SQLiteOpenHelperWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/InstantQueryResultBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/DeleteOrUpdateShortcutMethodProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/DataSourceFactoryQueryResultBinder.kt
https://android-review.googlesource.com/2239274
Branch: androidx-main
commit 885c9eb48af78167698d95ecfde57e6b4c741ab3
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Thu Sep 29 21:49:35 2022
Generate DAOs in Kotlin
Partially migrate DAO code generation (DaoWriter, QueryWriter) to XPoet such that the simple path of InstantQueryResultBinder -> SingleItemQueryResultAdapter -> PojoRowAdapter can be completely generated in Kotlin. With this big change we are able to start parallel migration of the different supported binders and adapters.
The following codegen classes are now completely migrated to XPoet:
* QueryWriter
* InstantQueryResultBinder
* CursorQueryResultBinder
* SingleEntityQueryResultAdapter
* PojoIndexAdapter
Note that PojoRowAdapter now in-lines the FieldReadWriteWriter generated code, but it is still partially migrated to XPoet since RelationCollectorFunctionWriter is not migrated.
New XPoet APIs:
* XMemberName - To emit companion object and top-level functions / properties references.
* XFunSpec.overridingBuilder() - To create an override function builder.
* XTypeSpec.anonymousClassBuilder() - To create anonymous classes.
* XTypeSpec.companionObjectBuilder() - To create companion object classes. For Java this is just a class named 'Companion'.
Bug: 127483380
Test: Existing, mainly the Java test app. KotlinCodeGenTest now verifies generates DAO implementations (instead of isolated PojoRowAdapter). With shared functions and properties migrated we can also now tests Enums and Custom type converters, added codegen tests for those.
Change-Id: I60033b06f1c57497fc4ddbe2678f14ba589dd566
M room/room-compiler/src/main/kotlin/androidx/room/writer/RelationCollectorFunctionWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/BaseObservableQueryResultBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/CustomTypeConverterResolutionTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/InsertOrUpsertShortcutMethodProcessorTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/PoetExt.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/EntityCursorConverterWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PositionalDataSourceQueryResultBinder.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_uuid.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/DeletionDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantDeleteOrUpdateMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Pojo.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineResultBinder.kt
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_string.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/ComplexDao.java
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/ValidAutoMigrationWithDefault.java
A room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/SingleItemQueryResultAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantUpsertMethodBinder.kt
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_primitives.kt
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_primitives_nullable.kt
D room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/SingleEntityQueryResultAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/WriterDao.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XPropertySpec.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/DeletionDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/MultiTypedPagingSourceQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/ShortcutEntity.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/AutoMigrationWithProvidedSpec.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PojoIndexAdapter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/OptionalQueryResultAdapter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/WriterDao.java
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_byteArray.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
A room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XMemberName.kt
M room/room-compiler/src/test/test-data/autoMigrationWriter/output/java/ValidAutoMigrationWithoutDefault.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/RxQueryResultBinder.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpdateDao.java
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_embedded.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineFlowResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/CustomTypeConverterWrapper.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Dao.kt
M room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_boolean.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/GuavaOptionalQueryResultAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/FieldReadWriteWriter.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpsertDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/EnumColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
M room/room-compiler/src/main/kotlin/androidx/room/DatabaseProcessingStep.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CursorQueryResultBinder.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpdateDao.java
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/types/UuidColumnTypeAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/LiveDataQueryResultBinder.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeSpec.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaTypeSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/RxCallableQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/binder/InstantInsertMethodBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/TransactionWrapper.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/GuavaListenableFutureQueryResultBinder.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpsertDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_enum.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DaoWriterTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/query/QueryWriterTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/InstantPreparedQueryResultBinder.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_customTypeConverter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/DefaultsInDaoTest.kt
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/ComplexDao.java
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/QueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/QueryWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/SQLiteOpenHelperWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/InstantQueryResultBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/DeleteOrUpdateShortcutMethodProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/TypeAdapterStoreTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/DataSourceFactoryQueryResultBinder.kt
iv...@gmail.com <iv...@gmail.com> #17
Project: platform/frameworks/support
Branch: androidx-main
commit 9d4954bde8fc18c7b728af02c02e3bf0e4482079
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Tue Oct 04 12:23:23 2022
Support property reading and writing in Kotlin code generation.
When generating Kotlin code don't use JVM getter and setters for a Kotlin property, instead use the property syntax to get and set the 'field'. This CL only identifies when a setter / getter is a synthetic method for a property and doesn't do any extra work to recognize the backing field is for a property, it also relies on XProcessing and certain Kotlin language aspects.
* XProcessing API for inspecting fields from Kotlin properties only considers properties with backing-fields.
* XProcessing in KSP exposes synthetic getter and setter for properties as part of method inspection.
* Kotlin enforces getter to have same visibility as property, but setter can be different
* Kotlin disallows getter-like and setter-like functions that would conflict with the property's JVM generated ones.
Thus this CL changes the getter and setter codegen logic to be based on the language being emitted and the new CallType that is identified by exposing a `isKotlinPropertyMethod()` in `XMethodElement`.
Bug: 127483380
Test: KotlinCodeGenTest
Change-Id: I64786d7a2026ab1788ad403db62da2e2fcf5cc6a
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XMethodElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacMethodElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/KotlinClassMetadataUtils.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspMethodElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/synthetic/KspSyntheticPropertyMethodElement.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/PojoProcessor.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/CallType.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Field.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/FieldGetter.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/FieldSetter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/FieldReadWriteWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/EntityNameMatchingVariationsTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/Fts3TableEntityProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/Fts4TableEntityProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/PojoProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/TableEntityProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/verifier/DatabaseVerifierTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_internalVisibility.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_variableProperty.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_variableProperty_java.kt
https://android-review.googlesource.com/2241138
Branch: androidx-main
commit 9d4954bde8fc18c7b728af02c02e3bf0e4482079
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Tue Oct 04 12:23:23 2022
Support property reading and writing in Kotlin code generation.
When generating Kotlin code don't use JVM getter and setters for a Kotlin property, instead use the property syntax to get and set the 'field'. This CL only identifies when a setter / getter is a synthetic method for a property and doesn't do any extra work to recognize the backing field is for a property, it also relies on XProcessing and certain Kotlin language aspects.
* XProcessing API for inspecting fields from Kotlin properties only considers properties with backing-fields.
* XProcessing in KSP exposes synthetic getter and setter for properties as part of method inspection.
* Kotlin enforces getter to have same visibility as property, but setter can be different
* Kotlin disallows getter-like and setter-like functions that would conflict with the property's JVM generated ones.
Thus this CL changes the getter and setter codegen logic to be based on the language being emitted and the new CallType that is identified by exposing a `isKotlinPropertyMethod()` in `XMethodElement`.
Bug: 127483380
Test: KotlinCodeGenTest
Change-Id: I64786d7a2026ab1788ad403db62da2e2fcf5cc6a
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/java/JavaCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/kotlin/KotlinCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/XMethodElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/JavacMethodElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/KotlinClassMetadataUtils.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspMethodElement.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/synthetic/KspSyntheticPropertyMethodElement.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XTypeElementTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/PojoProcessor.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/CallType.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/Field.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/FieldGetter.kt
M room/room-compiler/src/main/kotlin/androidx/room/vo/FieldSetter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/FieldReadWriteWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/EntityNameMatchingVariationsTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/Fts3TableEntityProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/Fts4TableEntityProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/PojoProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/processor/TableEntityProcessorTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/verifier/DatabaseVerifierTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_internalVisibility.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_variableProperty.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/pojoRowAdapter_variableProperty_java.kt
js...@gmail.com <js...@gmail.com> #18
Project: platform/frameworks/support
Branch: androidx-main
commit 0cb41981b356abc62acab56634bda240d5809064
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Oct 12 13:26:54 2022
Migrate QueryParameterAdapter implementations to XPoet
The migrated adapters are:
* BasicQueryParameterAdapter
* ArrayQueryParameterAdapter
* CollectionQueryParameterAdapter
A notable change is that nullability of the array and collection parameters have to be considered. Instead of prohibit this CL simply accepts them by binding a null arg when the param is null, essentially tackling b/72246856 . This change affects all backends (javac, kapt and ksp) and Java code generation too, passing a null collection as a query param will no longer cause a crash.
Also fixed a bug in KspArrayType.asTypeName() where the KTypeName didn't had right nullability, fixed it by using the KsTypeKotlinPoetExt (it was a missed migration).
New XPoet API:
* XCodeBlock.ofTernaryIf() - For generating inline if expressions with Java's ternary operator and Kotlin if/else.
Bug: 72246856
Bug: 127483380
Test: NullableCollectionQueryParamTest + KotlinCodeGenTest
Change-Id: I5e5b6a73733f2bbc8d111cdfa724720757ab38c5
A room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/NullableCollectionQueryParamTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspArrayType.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationValueTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/parameter/ArrayQueryParameterAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/parameter/BasicQueryParameterAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/parameter/CollectionQueryParameterAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/QueryWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/query/QueryWriterTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/ComplexDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/javac/DeletionDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/ComplexDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/DeletionDao.java
A room/room-compiler/src/test/test-data/kotlinCodeGen/arrayParameterAdapter.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/basicParameterAdapter_string.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/collectionParameterAdapter_string.kt
https://android-review.googlesource.com/2253139
Branch: androidx-main
commit 0cb41981b356abc62acab56634bda240d5809064
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed Oct 12 13:26:54 2022
Migrate QueryParameterAdapter implementations to XPoet
The migrated adapters are:
* BasicQueryParameterAdapter
* ArrayQueryParameterAdapter
* CollectionQueryParameterAdapter
A notable change is that nullability of the array and collection parameters have to be considered. Instead of prohibit this CL simply accepts them by binding a null arg when the param is null, essentially tackling
Also fixed a bug in KspArrayType.asTypeName() where the KTypeName didn't had right nullability, fixed it by using the KsTypeKotlinPoetExt (it was a missed migration).
New XPoet API:
* XCodeBlock.ofTernaryIf() - For generating inline if expressions with Java's ternary operator and Kotlin if/else.
Bug: 72246856
Bug: 127483380
Test: NullableCollectionQueryParamTest + KotlinCodeGenTest
Change-Id: I5e5b6a73733f2bbc8d111cdfa724720757ab38c5
A room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/NullableCollectionQueryParamTest.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XCodeBlock.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XTypeName.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/ksp/KspArrayType.kt
M room/room-compiler-processing/src/test/java/androidx/room/compiler/processing/XAnnotationValueTest.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/parameter/ArrayQueryParameterAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/parameter/BasicQueryParameterAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/parameter/CollectionQueryParameterAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/QueryWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/solver/query/QueryWriterTest.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/ComplexDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/javac/DeletionDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/ComplexDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/DeletionDao.java
A room/room-compiler/src/test/test-data/kotlinCodeGen/arrayParameterAdapter.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/basicParameterAdapter_string.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/collectionParameterAdapter_string.kt
sp...@gmail.com <sp...@gmail.com> #19
Project: platform/frameworks/support
Branch: androidx-main
commit dd774999930afba89226586051679f1e622b6649
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Tue Oct 11 22:07:14 2022
Migrate CoroutineResultBinder to XPoet
This change deals with generating suspend overrides in Kotlin codegen which differs from Java in that the override function has the suspend modifier, does not return Any and does not have an extra Continuation param.
There is an API change too: The CancellationSignal parameter in CoroutinesRoom.execute() was incorrectly nonnull instead of nullable, nullable should have been the acceptable type since the generated code uses DBUtil.createCancellationSignal() which will return null in older APIs and is simply piped into other APIs that accept null cancellation signals such as RoomDatabase.query(), this is now fixed. This is a compatible nullability change in a restricted API is only used by Room's generated code.
Bug: 127483380
Test: KotlinCodeGenTest
Change-Id: I4eb7a8a038aac6b3675cb9431287942eb24a866d
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/binderprovider/CoroutineFlowResultBinderProvider.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineFlowResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/GuavaListenableFutureQueryResultBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/testing/test_util.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/test/test-data/common/input/CoroutinesRoom.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/coroutineResultBinder.kt
M room/room-ktx/api/restricted_current.txt
M room/room-ktx/src/main/java/androidx/room/CoroutinesRoom.kt
https://android-review.googlesource.com/2250419
Branch: androidx-main
commit dd774999930afba89226586051679f1e622b6649
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Tue Oct 11 22:07:14 2022
Migrate CoroutineResultBinder to XPoet
This change deals with generating suspend overrides in Kotlin codegen which differs from Java in that the override function has the suspend modifier, does not return Any and does not have an extra Continuation param.
There is an API change too: The CancellationSignal parameter in CoroutinesRoom.execute() was incorrectly nonnull instead of nullable, nullable should have been the acceptable type since the generated code uses DBUtil.createCancellationSignal() which will return null in older APIs and is simply piped into other APIs that accept null cancellation signals such as RoomDatabase.query(), this is now fixed. This is a compatible nullability change in a restricted API is only used by Room's generated code.
Bug: 127483380
Test: KotlinCodeGenTest
Change-Id: I4eb7a8a038aac6b3675cb9431287942eb24a866d
M room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/KotlinPoetExt.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/processor/MethodProcessorDelegate.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/binderprovider/CoroutineFlowResultBinderProvider.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineFlowResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/CoroutineResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/query/result/GuavaListenableFutureQueryResultBinder.kt
M room/room-compiler/src/test/kotlin/androidx/room/testing/test_util.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/test/test-data/common/input/CoroutinesRoom.kt
A room/room-compiler/src/test/test-data/kotlinCodeGen/coroutineResultBinder.kt
M room/room-ktx/api/restricted_current.txt
M room/room-ktx/src/main/java/androidx/room/CoroutinesRoom.kt
ad...@ade.se <ad...@ade.se> #20
Project: platform/frameworks/support
Branch: androidx-main
commit 76bf256f733dbd67b4848467d2c11489e382a594
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Sun Oct 16 12:31:34 2022
Migrate PreparedStatementWriter and PreparedQueryAdapter to XPoet
Migrates the simple path of prepared queries (thanks to that parameter adapters being migrated), specifically: InstantPreparedQueryResultBinder -> PreparedQueryAdapter, along with PreparedStatementWriter.
With this migration other prepared query binders can be migrated in parallel (Rx, Guava, etc...).
XPoet API Change:
* In XFunSpec.builder() renamed isOverridden to isOverride. (The typo was getting on my nerve...)
Bug: 127483380
Test: KotlinCodeGenTest + existing.
Change-Id: Ifa97d552282ca02488b1b7603b7b62fbae994d94
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/CallablePreparedQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/InstantPreparedQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/PreparedQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/result/PreparedQueryResultAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertOrUpsertMethodAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityInsertionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/PreparedStatementWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/DeletionDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpdateDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/DeletionDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpdateDao.java
A room/room-compiler/src/test/test-data/kotlinCodeGen/preparedQueryAdapter.kt
https://android-review.googlesource.com/2256722
Branch: androidx-main
commit 76bf256f733dbd67b4848467d2c11489e382a594
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Sun Oct 16 12:31:34 2022
Migrate PreparedStatementWriter and PreparedQueryAdapter to XPoet
Migrates the simple path of prepared queries (thanks to that parameter adapters being migrated), specifically: InstantPreparedQueryResultBinder -> PreparedQueryAdapter, along with PreparedStatementWriter.
With this migration other prepared query binders can be migrated in parallel (Rx, Guava, etc...).
XPoet API Change:
* In XFunSpec.builder() renamed isOverridden to isOverride. (The typo was getting on my nerve...)
Bug: 127483380
Test: KotlinCodeGenTest + existing.
Change-Id: Ifa97d552282ca02488b1b7603b7b62fbae994d94
M room/room-compiler-processing/src/main/java/androidx/room/compiler/codegen/XFunSpec.kt
M room/room-compiler/src/main/kotlin/androidx/room/ext/javapoet_ext.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/CallablePreparedQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/InstantPreparedQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/binder/PreparedQueryResultBinder.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/prepared/result/PreparedQueryResultAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/solver/shortcut/result/InsertOrUpsertMethodAdapter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/AutoMigrationWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/EntityInsertionAdapterWriter.kt
M room/room-compiler/src/main/kotlin/androidx/room/writer/PreparedStatementWriter.kt
M room/room-compiler/src/test/kotlin/androidx/room/writer/KotlinCodeGenTest.kt
M room/room-compiler/src/test/test-data/daoWriter/output/javac/DeletionDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/javac/UpdateDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/DeletionDao.java
M room/room-compiler/src/test/test-data/daoWriter/output/ksp/UpdateDao.java
A room/room-compiler/src/test/test-data/kotlinCodeGen/preparedQueryAdapter.kt
Description
Component used:
Version used: 2.2.0 and 2.3.0-alpha07
Devices/Android versions reproduced on: N/A
ViewModels with more than one MutableLiveData get their nullability wrong.
Example:
This gives the error
Error: Cannot set non-nullable LiveData value to null [NullSafeMutableLiveData]