[go: nahoru, domu]

Disallow abstract properties as DAO getters or DAO queries in Kotlin codegen.

Queries that are declared as a property and Room overrides the getter function give a false notion that the property is immutable or has a fixed stored result, that it won't change, however the getter is not pure, it can return different results if called at different times based on the data in the database. Therefore, this change disallows them when generating Kotlin.

Even though a DAO property in the abstract Database is a more appropriate case since Room generated code does cache the created DAO instance, it is encoding implementation logic. Kotlin codegen is greatly simplified when disallowed.

Bug: 127483380
Bug: 257967987
Test: DatabaseProcessorTest and DaoProcessorTest
Relnote: Disallow abstract properties as DAO getters or DAO queries in Kotlin codegen, instead they should be rewritten as functions to avoid the false notion that the property value is immutable and has a fixed stored result.
Change-Id: If6a13382b351fbcf9072a40c496d600cd329fd38
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
index 36471f800..01451ba 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
@@ -468,8 +468,8 @@
     @Query("SELECT * FROM Publisher JOIN Book ON (Publisher.publisherId == Book.bookPublisherId)")
     fun getBooksByPublisherImmutable(): ImmutableListMultimap<Publisher, Book>
 
-    @get:Query("SELECT * FROM Book")
-    val allBooks: List<Book>
+    @Query("SELECT * FROM Book")
+    fun getAllBooks(): List<Book>
 
     @Upsert
     fun upsertBooks(vararg books: Book)
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/AmbiguousColumnResolverTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/AmbiguousColumnResolverTest.kt
index e1c8114..149c4d5 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/AmbiguousColumnResolverTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/AmbiguousColumnResolverTest.kt
@@ -55,7 +55,7 @@
     fun setup() {
         val context = ApplicationProvider.getApplicationContext<Context>()
         val db = Room.inMemoryDatabaseBuilder(context, TestDatabase::class.java).build()
-        dao = db.theDao
+        dao = db.getDao()
         dao.insertUser(user1)
         dao.insertUser(user2)
         dao.insertComment(comment1)
@@ -156,7 +156,7 @@
         exportSchema = false
     )
     internal abstract class TestDatabase : RoomDatabase() {
-        abstract val theDao: TestDao
+        abstract fun getDao(): TestDao
     }
 
     @Dao
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/InternalsTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/InternalsTest.kt
index c6b7b26..8230b30 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/InternalsTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/InternalsTest.kt
@@ -41,7 +41,7 @@
         exportSchema = false
     )
     internal abstract class InternalDb : RoomDatabase() {
-        abstract val dao: InternalDao
+        abstract fun getDao(): InternalDao
     }
 
     @Entity
@@ -113,18 +113,18 @@
             it.internalFieldProp = "ifp"
             it.publicFieldProp = "pfp"
         }
-        db.dao.insert(entity)
+        db.getDao().insert(entity)
         assertThat(
-            db.dao.byInternalField(field = "if")
+            db.getDao().byInternalField(field = "if")
         ).containsExactly(entity)
         assertThat(
-            db.dao.byPublicField(field = "pf")
+            db.getDao().byPublicField(field = "pf")
         ).containsExactly(entity)
         assertThat(
-            db.dao.byInternalFieldProp(field = "ifp")
+            db.getDao().byInternalFieldProp(field = "ifp")
         ).containsExactly(entity)
         assertThat(
-            db.dao.byPublicFieldProp(field = "pfp")
+            db.getDao().byPublicFieldProp(field = "pfp")
         ).containsExactly(entity)
     }
 }
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/InvalidationTrackerFlowTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/InvalidationTrackerFlowTest.kt
index 2f3e4f7..3ee01a5 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/InvalidationTrackerFlowTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/InvalidationTrackerFlowTest.kt
@@ -167,7 +167,7 @@
         booksDao.addBooks(TestUtil.BOOK_1)
 
         val channel = database.invalidationTrackerFlow("book")
-            .map { booksDao.allBooks }
+            .map { booksDao.getAllBooks() }
             .produceIn(this)
 
         assertThat(channel.receive()).containsExactly(TestUtil.BOOK_1)
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ItemWithNullableConstructor.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ItemWithNullableConstructor.kt
index 328559f..30a25fa 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ItemWithNullableConstructor.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ItemWithNullableConstructor.kt
@@ -53,8 +53,8 @@
 
     @Test
     fun insertWithNull() {
-        db.dao.insert(TestItem(null, null))
-        assertThat(db.dao.get(), `is`(TestItem(1, null)))
+        db.getDao().insert(TestItem(null, null))
+        assertThat(db.getDao().get(), `is`(TestItem(1, null)))
     }
 
     @Entity
@@ -80,6 +80,6 @@
     )
     @SuppressWarnings(RoomWarnings.MISSING_SCHEMA_LOCATION)
     abstract class Db : RoomDatabase() {
-        abstract val dao: TestDao
+        abstract fun getDao(): TestDao
     }
 }
\ No newline at end of file
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/JvmNameInDaoTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/JvmNameInDaoTest.kt
index d4f970b..6b12b01 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/JvmNameInDaoTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/JvmNameInDaoTest.kt
@@ -51,13 +51,13 @@
             JvmNameDb::class.java
         ).build()
         try {
-            db.dao.insert(entity)
+            db.getDao().insert(entity)
             assertThat(
-                db.dao.query()
+                db.getDao().query()
             ).containsExactly(entity)
-            db.dao.delete(entity)
+            db.getDao().delete(entity)
             assertThat(
-                db.dao.query()
+                db.getDao().query()
             ).isEmpty()
         } finally {
             db.close()
@@ -121,7 +121,7 @@
     @TypeConverters(MyConverterConverter::class)
     abstract class JvmNameDb : RoomDatabase() {
         @Suppress("INAPPLICABLE_JVM_NAME")
-        @get:JvmName("jvmDao")
-        abstract val dao: JvmNameDao
+        @JvmName("jvmDao")
+        abstract fun getDao(): JvmNameDao
     }
 }
\ No newline at end of file
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ListenableFuturePagingSourceTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ListenableFuturePagingSourceTest.kt
index 3e1c6fc..720cb70 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ListenableFuturePagingSourceTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/ListenableFuturePagingSourceTest.kt
@@ -112,7 +112,7 @@
     @Test
     fun refresh_canceledCoroutine_cancelsFuture() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         // filter right away to block initial load
         queryExecutor.filterFunction = { runnable ->
@@ -146,7 +146,7 @@
     @Test
     fun append_canceledCoroutine_cancelsFuture() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         runTest {
             itemStore.awaitInitialLoad()
@@ -195,7 +195,7 @@
     @Test
     fun prepend_canceledCoroutine_cancelsFuture() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         runTest {
             itemStore.awaitInitialLoad()
@@ -244,7 +244,7 @@
     private fun runTest(
         pager: Pager<Int, PagingEntity> =
             Pager(config = CONFIG) {
-                val baseSource = db.dao.loadItemsListenableFuture()
+                val baseSource = db.getDao().loadItemsListenableFuture()
                 // to get access to the futures returned from loadFuture. Also to
                 // mimic real use case of wrapping the source returned from Room.
                 ListenableFuturePagingSourceImpl(baseSource).also { pagingSources.add(it) }
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/MultiTypedPagingSourceTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/MultiTypedPagingSourceTest.kt
index 3f00196..37122a1 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/MultiTypedPagingSourceTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/MultiTypedPagingSourceTest.kt
@@ -23,9 +23,9 @@
 import androidx.room.Room
 import androidx.room.RoomDatabase
 import androidx.room.androidx.room.integration.kotlintestapp.testutil.ItemStore
-import androidx.room.androidx.room.integration.kotlintestapp.testutil.PagingEntityDao
 import androidx.room.androidx.room.integration.kotlintestapp.testutil.PagingDb
 import androidx.room.androidx.room.integration.kotlintestapp.testutil.PagingEntity
+import androidx.room.androidx.room.integration.kotlintestapp.testutil.PagingEntityDao
 import androidx.room.awaitPendingRefresh
 import androidx.sqlite.db.SimpleSQLiteQuery
 import androidx.test.core.app.ApplicationProvider
@@ -100,7 +100,7 @@
     fun loadEverything() {
         // open db
         val items = createItems(startId = 15, count = 50)
-        db.dao.insert(items)
+        db.getDao().insert(items)
         runTest {
             val initialLoad = itemStore.awaitInitialLoad()
             assertThat(
@@ -131,12 +131,12 @@
     fun loadEverything_inReverse() {
         // open db
         val items = createItems(startId = 0, count = 100)
-        db.dao.insert(items)
+        db.getDao().insert(items)
         val pager = Pager(
             config = CONFIG,
             initialKey = 98
         ) {
-            db.dao.loadItems()
+            db.getDao().loadItems()
         }
         runTest(pager) {
             val initialLoad = itemStore.awaitInitialLoad()
@@ -170,13 +170,13 @@
     @Test
     fun keyTooLarge_returnLastPage() {
         val items = createItems(startId = 0, count = 50)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         val pager = Pager(
             config = CONFIG,
             initialKey = 80
         ) {
-            db.dao.loadItems()
+            db.getDao().loadItems()
         }
         runTest(pager = pager) {
             val initialLoad = itemStore.awaitInitialLoad()
@@ -200,7 +200,7 @@
     @Test
     fun jumping() {
         val items = createItems(startId = 0, count = 200)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         val config = PagingConfig(
             pageSize = 3,
@@ -211,7 +211,7 @@
         val pager = Pager(
             config = config,
         ) {
-            db.dao.loadItems()
+            db.getDao().loadItems()
         }
         runTest(pager = pager) {
             val initialLoad = itemStore.awaitInitialLoad()
@@ -246,12 +246,12 @@
     @Test
     fun prependWithDelayedInvalidation() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         val pager = Pager(
             config = CONFIG,
             initialKey = 20,
-            pagingSourceFactory = { db.dao.loadItems().also { pagingSources.add(it) } }
+            pagingSourceFactory = { db.getDao().loadItems().also { pagingSources.add(it) } }
         )
 
         runTest(pager) {
@@ -271,7 +271,7 @@
             queryExecutor.filterFunction = { runnable ->
                 runnable !== db.invalidationTracker.refreshRunnable
             }
-            db.dao.deleteItems(
+            db.getDao().deleteItems(
                 items.subList(0, 60).map { it.id }
             )
             // make sure invalidation requests a refresh
@@ -342,12 +342,12 @@
     @Test
     fun prependWithBlockingObserver() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         val pager = Pager(
             config = CONFIG,
             initialKey = 20,
-            pagingSourceFactory = { db.dao.loadItems().also { pagingSources.add(it) } }
+            pagingSourceFactory = { db.getDao().loadItems().also { pagingSources.add(it) } }
         )
 
         // to block the PagingSource's observer, this observer needs to be registered first
@@ -376,7 +376,7 @@
             )
             assertThat(db.invalidationTracker.pendingRefresh.get()).isFalse()
 
-            db.dao.deleteItems(
+            db.getDao().deleteItems(
                 items.subList(0, 60).map { it.id }
             )
 
@@ -411,7 +411,7 @@
     @Test
     fun appendWithDelayedInvalidation() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
         runTest {
             val initialLoad = itemStore.awaitInitialLoad()
             assertThat(
@@ -428,7 +428,7 @@
             queryExecutor.filterFunction = { runnable ->
                 runnable !== db.invalidationTracker.refreshRunnable
             }
-            db.dao.deleteItems(
+            db.getDao().deleteItems(
                 items.subList(0, 80).map { it.id }
             )
             // make sure invalidation requests a refresh
@@ -509,7 +509,7 @@
             assertThat(itemStore.peekItems()).isEmpty()
 
             val entity = PagingEntity(id = 1, value = "foo")
-            db.dao.insert(entity)
+            db.getDao().insert(entity)
             itemStore.awaitGeneration(2)
             itemStore.awaitInitialLoad()
             assertThat(itemStore.peekItems()).containsExactly(entity)
@@ -520,7 +520,9 @@
         pager: Pager<Int, PagingEntity> =
             Pager(
                 config = CONFIG,
-                pagingSourceFactory = { pagingSourceFactory(db.dao).also { pagingSources.add(it) } }
+                pagingSourceFactory = {
+                    pagingSourceFactory(db.getDao()).also { pagingSources.add(it) }
+                }
             ),
         block: suspend () -> Unit
     ) {
@@ -578,7 +580,7 @@
     fun loadEverythingRawQuery() {
         // open db
         val items = createItems(startId = 15, count = 50)
-        db.dao.insert(items)
+        db.getDao().insert(items)
         val query = SimpleSQLiteQuery(
             "SELECT * FROM PagingEntity ORDER BY id ASC"
         )
@@ -611,12 +613,12 @@
     fun loadEverythingRawQuery_inReverse() {
         // open db
         val items = createItems(startId = 0, count = 100)
-        db.dao.insert(items)
+        db.getDao().insert(items)
         val query = SimpleSQLiteQuery(
             "SELECT * FROM PagingEntity ORDER BY id ASC"
         )
         val pager = Pager(config = CONFIG, initialKey = 98) {
-            pagingSourceFactoryRaw(db.dao, query)
+            pagingSourceFactoryRaw(db.getDao(), query)
         }
         runTest(query, pager) {
             val initialLoad = itemStore.awaitInitialLoad()
@@ -648,7 +650,7 @@
     @Test
     fun rawQuery_userSuppliedLimitOffset() {
         val items = createItems(startId = 15, count = 70)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         val query = SimpleSQLiteQuery(
             "SELECT * FROM PagingEntity ORDER BY id ASC LIMIT 30 OFFSET 5"
@@ -687,7 +689,7 @@
     @Test
     fun rawQuery_multipleArguments() {
         val items = createItems(startId = 0, count = 80)
-        db.dao.insert(items)
+        db.getDao().insert(items)
         val query = SimpleSQLiteQuery(
             "SELECT * " +
                 "FROM PagingEntity " +
@@ -730,7 +732,7 @@
         pager: Pager<Int, PagingEntity> =
             Pager(
                 config = CONFIG,
-                pagingSourceFactory = { pagingSourceFactoryRaw(db.dao, query) }
+                pagingSourceFactory = { pagingSourceFactoryRaw(db.getDao(), query) }
             ),
         block: suspend () -> Unit
     ) {
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/NullableCollectionQueryParamTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/NullableCollectionQueryParamTest.kt
index 4e2684a..96df347 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/NullableCollectionQueryParamTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/NullableCollectionQueryParamTest.kt
@@ -46,7 +46,7 @@
             ApplicationProvider.getApplicationContext(),
             TestDatabase::class.java
         ).build()
-        dao = db.dao
+        dao = db.getDao()
 
         dao.addSong(songOne)
         dao.addSong(songTwo)
@@ -138,6 +138,6 @@
 
     @Database(entities = [Song::class], version = 1, exportSchema = false)
     abstract class TestDatabase : RoomDatabase() {
-        abstract val dao: SongDao
+        abstract fun getDao(): SongDao
     }
 }
\ No newline at end of file
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx2PagingSourceTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx2PagingSourceTest.kt
index 25637bb..4f35335 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx2PagingSourceTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx2PagingSourceTest.kt
@@ -97,11 +97,11 @@
     @Test
     fun refresh_canceledCoroutine_disposesSingle() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         var isDisposed = false
         val pager = Pager(CONFIG) {
-            val baseSource = db.dao.loadItemsRx2()
+            val baseSource = db.getDao().loadItemsRx2()
             RxPagingSourceImpl(
                 baseSource = baseSource,
                 initialLoadSingle = { params ->
@@ -138,11 +138,11 @@
     @Test
     fun append_canceledCoroutine_disposesSingle() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         var isDisposed = false
         val pager = Pager(CONFIG) {
-            val baseSource = db.dao.loadItemsRx2()
+            val baseSource = db.getDao().loadItemsRx2()
             RxPagingSourceImpl(
                 baseSource = baseSource,
                 initialLoadSingle = { params -> baseSource.loadSingle(params) },
@@ -188,11 +188,11 @@
     @Test
     fun prepend_canceledCoroutine_disposesSingle() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         var isDisposed = false
         val pager = Pager(config = CONFIG, initialKey = 50) {
-            val baseSource = db.dao.loadItemsRx2()
+            val baseSource = db.getDao().loadItemsRx2()
             RxPagingSourceImpl(
                 baseSource = baseSource,
                 initialLoadSingle = { params -> baseSource.loadSingle(params) },
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx3PagingSourceTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx3PagingSourceTest.kt
index 4f64c587..6bbf268 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx3PagingSourceTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/Rx3PagingSourceTest.kt
@@ -94,11 +94,11 @@
     @Test
     fun refresh_canceledCoroutine_disposesSingle() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         var isDisposed = false
         val pager = Pager(CONFIG) {
-            val baseSource = db.dao.loadItemsRx3()
+            val baseSource = db.getDao().loadItemsRx3()
             RxPagingSourceImpl(
                 baseSource = baseSource,
                 initialLoadSingle = { params ->
@@ -135,11 +135,11 @@
     @Test
     fun append_canceledCoroutine_disposesSingle() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         var isDisposed = false
         val pager = Pager(CONFIG) {
-            val baseSource = db.dao.loadItemsRx3()
+            val baseSource = db.getDao().loadItemsRx3()
             RxPagingSourceImpl(
                 baseSource = baseSource,
                 initialLoadSingle = { params -> baseSource.loadSingle(params) },
@@ -185,11 +185,11 @@
     @Test
     fun prepend_canceledCoroutine_disposesSingle() {
         val items = createItems(startId = 0, count = 90)
-        db.dao.insert(items)
+        db.getDao().insert(items)
 
         var isDisposed = false
         val pager = Pager(config = CONFIG, initialKey = 50) {
-            val baseSource = db.dao.loadItemsRx3()
+            val baseSource = db.getDao().loadItemsRx3()
             RxPagingSourceImpl(
                 baseSource = baseSource,
                 initialLoadSingle = { params -> baseSource.loadSingle(params) },
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendingQueryTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendingQueryTest.kt
index 29a48db..dd38c13 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendingQueryTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SuspendingQueryTest.kt
@@ -170,7 +170,7 @@
                 database.endTransaction()
             }
         }
-        assertThat(booksDao.allBooks).isEqualTo(listOf(TestUtil.BOOK_2))
+        assertThat(booksDao.getAllBooks()).isEqualTo(listOf(TestUtil.BOOK_2))
     }
 
     @Test
@@ -192,7 +192,7 @@
                 database.endTransaction()
             }
         }
-        assertThat(booksDao.allBooks).isEqualTo(listOf(TestUtil.BOOK_2))
+        assertThat(booksDao.getAllBooks()).isEqualTo(listOf(TestUtil.BOOK_2))
     }
 
     @Test
@@ -214,7 +214,7 @@
                 database.endTransaction()
             }
         }
-        assertThat(booksDao.allBooks).isEqualTo(listOf(TestUtil.BOOK_2))
+        assertThat(booksDao.getAllBooks()).isEqualTo(listOf(TestUtil.BOOK_2))
     }
 
     @Test
@@ -262,7 +262,7 @@
                 booksDao.deleteUnsoldBooks()
             }
         }
-        assertThat(booksDao.allBooks).isEqualTo(listOf(TestUtil.BOOK_2))
+        assertThat(booksDao.getAllBooks()).isEqualTo(listOf(TestUtil.BOOK_2))
     }
 
     @Test
@@ -280,7 +280,7 @@
                 }
             }
         }
-        assertThat(booksDao.allBooks).isEqualTo(listOf(TestUtil.BOOK_2))
+        assertThat(booksDao.getAllBooks()).isEqualTo(listOf(TestUtil.BOOK_2))
     }
 
     @Test
@@ -296,7 +296,7 @@
                 booksDao.deleteUnsoldBooks()
             }
         }
-        assertThat(booksDao.allBooks).isEqualTo(listOf(TestUtil.BOOK_2))
+        assertThat(booksDao.getAllBooks()).isEqualTo(listOf(TestUtil.BOOK_2))
     }
 
     @Test
@@ -737,7 +737,7 @@
         }
 
         // as Set since insertion order is undefined
-        assertThat(booksDao.allBooks.toSet())
+        assertThat(booksDao.getAllBooks().toSet())
             .isEqualTo(setOf(TestUtil.BOOK_1, TestUtil.BOOK_2))
     }
 
@@ -768,7 +768,7 @@
         }
 
         // as Set since insertion order is undefined
-        assertThat(booksDao.allBooks.toSet())
+        assertThat(booksDao.getAllBooks().toSet())
             .isEqualTo(setOf(TestUtil.BOOK_1, TestUtil.BOOK_2))
     }
 
@@ -1170,7 +1170,7 @@
             }
         }
         assertThat(localDatabase.booksDao().getPublishers().size).isEqualTo(1)
-        assertThat(localDatabase.booksDao().allBooks.size).isEqualTo(1)
+        assertThat(localDatabase.booksDao().getAllBooks().size).isEqualTo(1)
 
         executor.shutdown()
         assertThat(executor.awaitTermination(1, TimeUnit.SECONDS)).isTrue()
@@ -1206,7 +1206,7 @@
             }
         }
         assertThat(localDatabase.booksDao().getPublishers()).isEmpty()
-        assertThat(localDatabase.booksDao().allBooks).isEmpty()
+        assertThat(localDatabase.booksDao().getAllBooks()).isEmpty()
 
         executor.shutdown()
         assertThat(executor.awaitTermination(1, TimeUnit.SECONDS)).isTrue()
@@ -1237,7 +1237,7 @@
             }
         }
         assertThat(localDatabase.booksDao().getPublishers().size).isEqualTo(1)
-        assertThat(localDatabase.booksDao().allBooks.size).isEqualTo(1)
+        assertThat(localDatabase.booksDao().getAllBooks().size).isEqualTo(1)
 
         executor.shutdown()
         assertThat(executor.awaitTermination(1, TimeUnit.SECONDS)).isTrue()
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SyncTriggersConcurrencyTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SyncTriggersConcurrencyTest.kt
index 0586d72..9fd1ed6 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SyncTriggersConcurrencyTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/SyncTriggersConcurrencyTest.kt
@@ -99,7 +99,7 @@
         // 2. Insert an entity
         // 4. Remove the observer
         // 5. Assert that the observer received an invalidation call.
-        val dao = database.sampleDao
+        val dao = database.getDao()
         repeat(CHECK_ITERATIONS) { iteration ->
             val checkObserver = TestObserver(
                 expectedInvalidationCount = 1
@@ -149,7 +149,7 @@
 
     @Database(entities = [SampleEntity::class], version = 1, exportSchema = false)
     abstract class SampleDatabase : RoomDatabase() {
-        abstract val sampleDao: SampleDao
+        abstract fun getDao(): SampleDao
     }
 
     @Dao
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/testutil/PagingDb.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/testutil/PagingDb.kt
index 2ab2da8..ec3efa3 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/testutil/PagingDb.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/testutil/PagingDb.kt
@@ -25,5 +25,5 @@
     entities = [PagingEntity::class]
 )
 abstract class PagingDb : RoomDatabase() {
-    abstract val dao: PagingEntityDao
+    abstract fun getDao(): PagingEntityDao
 }
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt
index fb8cb9e..52e5e67 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/DaoProcessor.kt
@@ -24,6 +24,7 @@
 import androidx.room.Transaction
 import androidx.room.Update
 import androidx.room.Upsert
+import androidx.room.compiler.codegen.CodeLanguage
 import androidx.room.compiler.processing.XConstructorElement
 import androidx.room.compiler.processing.XMethodElement
 import androidx.room.compiler.processing.XType
@@ -93,6 +94,12 @@
                         ProcessorErrors.JVM_NAME_ON_OVERRIDDEN_METHOD
                     )
                 }
+                if (
+                    context.codeLanguage == CodeLanguage.KOTLIN &&
+                    method.isKotlinPropertyMethod()
+                ) {
+                    context.logger.e(method, ProcessorErrors.KOTLIN_PROPERTY_OVERRIDE)
+                }
                 if (method.hasAnnotation(Query::class)) {
                     Query::class
                 } else if (method.hasAnnotation(Insert::class)) {
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
index 8e68602..6e045f2 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/DatabaseProcessor.kt
@@ -18,6 +18,7 @@
 
 import androidx.room.AutoMigration
 import androidx.room.SkipQueryVerification
+import androidx.room.compiler.codegen.CodeLanguage
 import androidx.room.compiler.codegen.XTypeName
 import androidx.room.compiler.processing.XAnnotationBox
 import androidx.room.compiler.processing.XElement
@@ -111,6 +112,12 @@
                         ProcessorErrors.JVM_NAME_ON_OVERRIDDEN_METHOD
                     )
                 }
+                if (
+                    context.codeLanguage == CodeLanguage.KOTLIN &&
+                    executable.isKotlinPropertyMethod()
+                ) {
+                    context.logger.e(executable, ProcessorErrors.KOTLIN_PROPERTY_OVERRIDE)
+                }
                 val dao = DaoProcessor(context, daoElement, declaredType, dbVerifier)
                     .process()
                 DaoMethod(executable, dao)
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt b/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
index ca1602c..2d4b7f1 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/processor/ProcessorErrors.kt
@@ -1124,4 +1124,7 @@
         POJO,
         ENTITY,
     }
+
+    val KOTLIN_PROPERTY_OVERRIDE = "Property getter overrides are not support when generating " +
+        "Kotlin code, please rewrite as an abstract function."
 }
\ No newline at end of file
diff --git a/room/room-compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt b/room/room-compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
index 697edc3..289ed30 100644
--- a/room/room-compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
+++ b/room/room-compiler/src/main/kotlin/androidx/room/writer/DatabaseWriter.kt
@@ -36,8 +36,6 @@
 import androidx.room.solver.CodeGenScope
 import androidx.room.vo.DaoMethod
 import androidx.room.vo.Database
-import com.squareup.kotlinpoet.FunSpec
-import com.squareup.kotlinpoet.KModifier
 import java.util.Locale
 import javax.lang.model.element.Modifier
 
@@ -336,13 +334,7 @@
                 kotlinPropertyBuilder = { }
             ).build()
             builder.addProperty(privateDaoProperty)
-            val overrideProperty =
-                codeLanguage == CodeLanguage.KOTLIN && method.element.isKotlinPropertyMethod()
-            if (overrideProperty) {
-                builder.addProperty(createDaoProperty(method, privateDaoProperty))
-            } else {
-                builder.addFunction(createDaoGetter(method, privateDaoProperty))
-            }
+            builder.addFunction(createDaoGetter(method, privateDaoProperty))
         }
     }
 
@@ -390,30 +382,6 @@
         }.build()
     }
 
-    private fun createDaoProperty(method: DaoMethod, daoProperty: XPropertySpec): XPropertySpec {
-        // TODO(b/257967987): This has a few flaws that need to be fixed.
-        return XPropertySpec.builder(
-            language = codeLanguage,
-            name = method.element.name.drop(3).replaceFirstChar { it.lowercase(Locale.US) },
-            typeName = method.dao.typeName,
-            visibility = when {
-                method.element.isPublic() -> VisibilityModifier.PUBLIC
-                method.element.isProtected() -> VisibilityModifier.PROTECTED
-                else -> VisibilityModifier.PUBLIC // Might be internal... ?
-            }
-        ).apply(
-            javaFieldBuilder = { error("Overriding a property in Java is impossible!") },
-            kotlinPropertyBuilder = {
-                addModifiers(KModifier.OVERRIDE)
-                getter(
-                    FunSpec.getterBuilder()
-                        .addStatement("return %L.value", daoProperty.name)
-                        .build()
-                )
-            }
-        ).build()
-    }
-
     private fun createCreateOpenHelper(): XFunSpec {
         val scope = CodeGenScope(this)
         val configParamName = "config"
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt
index 78f4cec..e9d5134 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/DaoProcessorTest.kt
@@ -22,6 +22,7 @@
 import androidx.room.compiler.processing.util.Source
 import androidx.room.compiler.processing.util.XTestInvocation
 import androidx.room.compiler.processing.util.compileFiles
+import androidx.room.compiler.processing.util.runKspTest
 import androidx.room.compiler.processing.util.runProcessorTest
 import androidx.room.ext.RoomTypeNames.ROOM_DB
 import androidx.room.testing.context
@@ -472,6 +473,44 @@
         }
     }
 
+    @Test
+    fun disallowPropertyDao() {
+        val src = Source.kotlin(
+            "MyDatabase.kt",
+            """
+            import androidx.room.*
+
+            @Dao
+            interface MyDao {
+              @Query("SELECT * FROM MyEntity")
+              val allEntities: List<MyEntity>
+            }
+
+            @Entity
+            data class MyEntity(
+                @PrimaryKey
+                var pk: Int
+            )
+            """.trimIndent()
+        )
+        runKspTest(
+            sources = listOf(src),
+            options = mapOf(Context.BooleanProcessorOptions.GENERATE_KOTLIN.argName to "true"),
+        ) { invocation ->
+            val dao = invocation.processingEnv.requireTypeElement("MyDao")
+            val dbType = invocation.context.processingEnv.requireType(ROOM_DB)
+            DaoProcessor(
+                baseContext = invocation.context,
+                element = dao,
+                dbType = dbType,
+                dbVerifier = null
+            ).process()
+            invocation.assertCompilationResult {
+                hasErrorContaining(ProcessorErrors.KOTLIN_PROPERTY_OVERRIDE)
+            }
+        }
+    }
+
     private fun singleDao(
         vararg inputs: String,
         classpathFiles: List<File> = emptyList(),
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/processor/DatabaseProcessorTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/processor/DatabaseProcessorTest.kt
index b1f13ff..68b7ff2 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/processor/DatabaseProcessorTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/processor/DatabaseProcessorTest.kt
@@ -26,6 +26,7 @@
 import androidx.room.compiler.processing.util.XTestInvocation
 import androidx.room.compiler.processing.util.compileFiles
 import androidx.room.compiler.processing.util.compileFilesIntoJar
+import androidx.room.compiler.processing.util.runKspTest
 import androidx.room.compiler.processing.util.runProcessorTest
 import androidx.room.parser.ParsedQuery
 import androidx.room.parser.QueryType
@@ -1506,6 +1507,46 @@
         }
     }
 
+    @Test
+    fun disallowPropertyDao() {
+        val src = Source.kotlin(
+            "MyDatabase.kt",
+            """
+            import androidx.room.*
+
+            @Database(entities = [MyEntity::class], version = 1, exportSchema = false)
+            abstract class MyDatabase : RoomDatabase() {
+              abstract val dao: MyDao
+            }
+
+            @Dao
+            interface MyDao {
+              @Query("SELECT * FROM MyEntity")
+              fun getEntity(): MyEntity
+            }
+
+            @Entity
+            data class MyEntity(
+                @PrimaryKey
+                var pk: Int
+            )
+            """.trimIndent()
+        )
+        runKspTest(
+            sources = listOf(src),
+            options = mapOf(Context.BooleanProcessorOptions.GENERATE_KOTLIN.argName to "true"),
+        ) { invocation ->
+            val element = invocation.processingEnv.requireTypeElement("MyDatabase")
+            DatabaseProcessor(
+                baseContext = invocation.context,
+                element = element
+            ).process()
+            invocation.assertCompilationResult {
+                hasErrorContaining(ProcessorErrors.KOTLIN_PROPERTY_OVERRIDE)
+            }
+        }
+    }
+
     private fun resolveDatabaseViews(
         views: Map<String, Set<String>>,
         body: (List<DatabaseView>, XTestInvocation) -> Unit
@@ -1568,7 +1609,7 @@
         }
     }
 
-    fun singleDb(
+    private fun singleDb(
         input: String,
         vararg otherFiles: Source,
         classpath: List<File> = emptyList(),
diff --git a/room/room-compiler/src/test/kotlin/androidx/room/writer/DatabaseKotlinCodeGenTest.kt b/room/room-compiler/src/test/kotlin/androidx/room/writer/DatabaseKotlinCodeGenTest.kt
index e4a08b6..d47aeb6 100644
--- a/room/room-compiler/src/test/kotlin/androidx/room/writer/DatabaseKotlinCodeGenTest.kt
+++ b/room/room-compiler/src/test/kotlin/androidx/room/writer/DatabaseKotlinCodeGenTest.kt
@@ -59,38 +59,6 @@
     }
 
     @Test
-    fun database_propertyDao() {
-        val testName = object {}.javaClass.enclosingMethod!!.name
-        val src = Source.kotlin(
-            "MyDatabase.kt",
-            """
-            import androidx.room.*
-
-            @Database(entities = [MyEntity::class], version = 1, exportSchema = false)
-            abstract class MyDatabase : RoomDatabase() {
-              abstract val dao: MyDao
-            }
-
-            @Dao
-            interface MyDao {
-              @Query("SELECT * FROM MyEntity")
-              fun getEntity(): MyEntity
-            }
-
-            @Entity
-            data class MyEntity(
-                @PrimaryKey
-                var pk: Int
-            )
-            """.trimIndent()
-        )
-        runTest(
-            sources = listOf(src),
-            expectedFilePath = getTestGoldenPath(testName)
-        )
-    }
-
-    @Test
     fun database_withFtsAndView() {
         val testName = object {}.javaClass.enclosingMethod!!.name
         val src = Source.kotlin(
@@ -109,7 +77,7 @@
                 exportSchema = false
             )
             abstract class MyDatabase : RoomDatabase() {
-              abstract val dao: MyDao
+              abstract fun getDao(): MyDao
             }
 
             @Dao
diff --git a/room/room-compiler/src/test/test-data/kotlinCodeGen/database_propertyDao.kt b/room/room-compiler/src/test/test-data/kotlinCodeGen/database_propertyDao.kt
deleted file mode 100644
index 771d674..0000000
--- a/room/room-compiler/src/test/test-data/kotlinCodeGen/database_propertyDao.kt
+++ /dev/null
@@ -1,153 +0,0 @@
-import androidx.room.DatabaseConfiguration
-import androidx.room.InvalidationTracker
-import androidx.room.RoomDatabase
-import androidx.room.RoomOpenHelper
-import androidx.room.migration.AutoMigrationSpec
-import androidx.room.migration.Migration
-import androidx.room.util.TableInfo
-import androidx.room.util.TableInfo.Companion.read
-import androidx.room.util.dropFtsSyncTriggers
-import androidx.sqlite.db.SupportSQLiteDatabase
-import androidx.sqlite.db.SupportSQLiteOpenHelper
-import java.lang.Class
-import java.util.ArrayList
-import java.util.HashMap
-import java.util.HashSet
-import javax.`annotation`.processing.Generated
-import kotlin.Any
-import kotlin.Lazy
-import kotlin.String
-import kotlin.Suppress
-import kotlin.Unit
-import kotlin.collections.List
-import kotlin.collections.Map
-import kotlin.collections.MutableList
-import kotlin.collections.Set
-
-@Generated(value = ["androidx.room.RoomProcessor"])
-@Suppress(names = ["UNCHECKED_CAST", "DEPRECATION"])
-public class MyDatabase_Impl : MyDatabase() {
-    private val _myDao: Lazy<MyDao> = lazy {
-        MyDao_Impl(this)
-    }
-
-    public override val dao: MyDao
-        get() = _myDao.value
-
-    protected override fun createOpenHelper(config: DatabaseConfiguration): SupportSQLiteOpenHelper {
-        val _openCallback: SupportSQLiteOpenHelper.Callback = RoomOpenHelper(config, object :
-            RoomOpenHelper.Delegate(1) {
-            public override fun createAllTables(db: SupportSQLiteDatabase): Unit {
-                db.execSQL("CREATE TABLE IF NOT EXISTS `MyEntity` (`pk` INTEGER NOT NULL, PRIMARY KEY(`pk`))")
-                db.execSQL("CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)")
-                db.execSQL("INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '195d7974660177325bd1a32d2c7b8b8c')")
-            }
-
-            public override fun dropAllTables(db: SupportSQLiteDatabase): Unit {
-                db.execSQL("DROP TABLE IF EXISTS `MyEntity`")
-                val _callbacks: List<RoomDatabase.Callback>? = mCallbacks
-                if (_callbacks != null) {
-                    for (_callback: RoomDatabase.Callback in _callbacks) {
-                        _callback.onDestructiveMigration(db)
-                    }
-                }
-            }
-
-            public override fun onCreate(db: SupportSQLiteDatabase): Unit {
-                val _callbacks: List<RoomDatabase.Callback>? = mCallbacks
-                if (_callbacks != null) {
-                    for (_callback: RoomDatabase.Callback in _callbacks) {
-                        _callback.onCreate(db)
-                    }
-                }
-            }
-
-            public override fun onOpen(db: SupportSQLiteDatabase): Unit {
-                mDatabase = db
-                internalInitInvalidationTracker(db)
-                val _callbacks: List<RoomDatabase.Callback>? = mCallbacks
-                if (_callbacks != null) {
-                    for (_callback: RoomDatabase.Callback in _callbacks) {
-                        _callback.onOpen(db)
-                    }
-                }
-            }
-
-            public override fun onPreMigrate(db: SupportSQLiteDatabase): Unit {
-                dropFtsSyncTriggers(db)
-            }
-
-            public override fun onPostMigrate(db: SupportSQLiteDatabase): Unit {
-            }
-
-            public override fun onValidateSchema(db: SupportSQLiteDatabase):
-                RoomOpenHelper.ValidationResult {
-                val _columnsMyEntity: HashMap<String, TableInfo.Column> =
-                    HashMap<String, TableInfo.Column>(1)
-                _columnsMyEntity.put("pk", TableInfo.Column("pk", "INTEGER", true, 1, null,
-                    TableInfo.CREATED_FROM_ENTITY))
-                val _foreignKeysMyEntity: HashSet<TableInfo.ForeignKey> = HashSet<TableInfo.ForeignKey>(0)
-                val _indicesMyEntity: HashSet<TableInfo.Index> = HashSet<TableInfo.Index>(0)
-                val _infoMyEntity: TableInfo = TableInfo("MyEntity", _columnsMyEntity, _foreignKeysMyEntity,
-                    _indicesMyEntity)
-                val _existingMyEntity: TableInfo = read(db, "MyEntity")
-                if (!_infoMyEntity.equals(_existingMyEntity)) {
-                    return RoomOpenHelper.ValidationResult(false, """
-                  |MyEntity(MyEntity).
-                  | Expected:
-                  |""".trimMargin() + _infoMyEntity + """
-                  |
-                  | Found:
-                  |""".trimMargin() + _existingMyEntity)
-                }
-                return RoomOpenHelper.ValidationResult(true, null)
-            }
-        }, "195d7974660177325bd1a32d2c7b8b8c", "7458a901120796c5bbc554e2fefd262f")
-        val _sqliteConfig: SupportSQLiteOpenHelper.Configuration =
-            SupportSQLiteOpenHelper.Configuration.builder(config.context).name(config.name).callback(_openCallback).build()
-        val _helper: SupportSQLiteOpenHelper = config.sqliteOpenHelperFactory.create(_sqliteConfig)
-        return _helper
-    }
-
-    protected override fun createInvalidationTracker(): InvalidationTracker {
-        val _shadowTablesMap: HashMap<String, String> = HashMap<String, String>(0)
-        val _viewTables: HashMap<String, Set<String>> = HashMap<String, Set<String>>(0)
-        return InvalidationTracker(this, _shadowTablesMap, _viewTables, "MyEntity")
-    }
-
-    public override fun clearAllTables(): Unit {
-        super.assertNotMainThread()
-        val _db: SupportSQLiteDatabase = super.openHelper.writableDatabase
-        try {
-            super.beginTransaction()
-            _db.execSQL("DELETE FROM `MyEntity`")
-            super.setTransactionSuccessful()
-        } finally {
-            super.endTransaction()
-            _db.query("PRAGMA wal_checkpoint(FULL)").close()
-            if (!_db.inTransaction()) {
-                _db.execSQL("VACUUM")
-            }
-        }
-    }
-
-    protected override fun getRequiredTypeConverters(): Map<Class<out Any>, List<Class<out Any>>> {
-        val _typeConvertersMap: HashMap<Class<out Any>, List<Class<out Any>>> =
-            HashMap<Class<out Any>, List<Class<out Any>>>()
-        _typeConvertersMap.put(MyDao::class.java, MyDao_Impl.getRequiredConverters())
-        return _typeConvertersMap
-    }
-
-    public override fun getRequiredAutoMigrationSpecs(): Set<Class<out AutoMigrationSpec>> {
-        val _autoMigrationSpecsSet: HashSet<Class<out AutoMigrationSpec>> =
-            HashSet<Class<out AutoMigrationSpec>>()
-        return _autoMigrationSpecsSet
-    }
-
-    public override
-    fun getAutoMigrations(autoMigrationSpecs: Map<Class<out AutoMigrationSpec>, AutoMigrationSpec>):
-        List<Migration> {
-        val _autoMigrations: MutableList<Migration> = ArrayList<Migration>()
-        return _autoMigrations
-    }
-}
\ No newline at end of file
diff --git a/room/room-compiler/src/test/test-data/kotlinCodeGen/database_withFtsAndView.kt b/room/room-compiler/src/test/test-data/kotlinCodeGen/database_withFtsAndView.kt
index 724355a..a321cbe 100644
--- a/room/room-compiler/src/test/test-data/kotlinCodeGen/database_withFtsAndView.kt
+++ b/room/room-compiler/src/test/test-data/kotlinCodeGen/database_withFtsAndView.kt
@@ -34,10 +34,6 @@
         MyDao_Impl(this)
     }
 
-
-    public override val dao: MyDao
-        get() = _myDao.value
-
     protected override fun createOpenHelper(config: DatabaseConfiguration): SupportSQLiteOpenHelper {
         val _openCallback: SupportSQLiteOpenHelper.Callback = RoomOpenHelper(config, object :
             RoomOpenHelper.Delegate(1) {
@@ -231,4 +227,6 @@
         val _autoMigrations: MutableList<Migration> = ArrayList<Migration>()
         return _autoMigrations
     }
+
+    public override fun getDao(): MyDao = _myDao.value
 }
\ No newline at end of file