Resolving DAO function default value issue.
In generated code, when an EntityCursorConverter is generated, the default value for columns of type Double were incorrectly being set to 0, instead of 0.0. This has been fixed in this CL. A fix for potential issues with Float have also been handled.
Bug: 304584179
Test: DaoKotlinCodegenTest.kt
(cherry picked from https://android-review.googlesource.com/q/commit:6aa7e7e786298cad202cda711e05d514cf50fe30)
Merged-In: Id75f51766f8bb98caf899a61358557d8488c3631
Change-Id: Id75f51766f8bb98caf899a61358557d8488c3631
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/ext/xpoet_ext.kt b/room/room-compiler/src/main/kotlin/androidx/room/ext/xpoet_ext.kt
index e79616a..fda482f 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/ext/xpoet_ext.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/ext/xpoet_ext.kt
@@ -317,6 +317,10 @@
"null"
} else if (this == XTypeName.PRIMITIVE_BOOLEAN) {
"false"
+ } else if (this == XTypeName.PRIMITIVE_DOUBLE) {
+ "0.0"
+ } else if (this == XTypeName.PRIMITIVE_FLOAT) {
+ "0f"
} else {
"0"
}
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/writer/DaoKotlinCodeGenTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/writer/DaoKotlinCodeGenTest.kt
index ca22005..c5c7d81 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/writer/DaoKotlinCodeGenTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/writer/DaoKotlinCodeGenTest.kt
@@ -961,6 +961,8 @@
data class MyEntity(
@PrimaryKey
val pk: Long,
+ val doubleColumn: Double,
+ val floatColumn: Float,
)
""".trimIndent()
)
diff --git a/room/room-compiler/src/test/test-data/kotlinCodeGen/rawQuery.kt b/room/room-compiler/src/test/test-data/kotlinCodeGen/rawQuery.kt
index 2361e59..4472909 100644
--- a/room/room-compiler/src/test/test-data/kotlinCodeGen/rawQuery.kt
+++ b/room/room-compiler/src/test/test-data/kotlinCodeGen/rawQuery.kt
@@ -5,6 +5,8 @@
import androidx.sqlite.db.SupportSQLiteQuery
import java.lang.Class
import javax.`annotation`.processing.Generated
+import kotlin.Double
+import kotlin.Float
import kotlin.Int
import kotlin.Long
import kotlin.Suppress
@@ -40,13 +42,27 @@
private fun __entityCursorConverter_MyEntity(cursor: Cursor): MyEntity {
val _entity: MyEntity
val _cursorIndexOfPk: Int = getColumnIndex(cursor, "pk")
+ val _cursorIndexOfDoubleColumn: Int = getColumnIndex(cursor, "doubleColumn")
+ val _cursorIndexOfFloatColumn: Int = getColumnIndex(cursor, "floatColumn")
val _tmpPk: Long
if (_cursorIndexOfPk == -1) {
_tmpPk = 0
} else {
_tmpPk = cursor.getLong(_cursorIndexOfPk)
}
- _entity = MyEntity(_tmpPk)
+ val _tmpDoubleColumn: Double
+ if (_cursorIndexOfDoubleColumn == -1) {
+ _tmpDoubleColumn = 0.0
+ } else {
+ _tmpDoubleColumn = cursor.getDouble(_cursorIndexOfDoubleColumn)
+ }
+ val _tmpFloatColumn: Float
+ if (_cursorIndexOfFloatColumn == -1) {
+ _tmpFloatColumn = 0f
+ } else {
+ _tmpFloatColumn = cursor.getFloat(_cursorIndexOfFloatColumn)
+ }
+ _entity = MyEntity(_tmpPk,_tmpDoubleColumn,_tmpFloatColumn)
return _entity
}