Fixed
Status Update
Comments
ng...@gmail.com <ng...@gmail.com> #2
The error is happening when try to run the tests in `data_room` module.
fl...@google.com <fl...@google.com>
yb...@google.com <yb...@google.com> #3
seems like an error in the method writer since it should be marking all parameters final.
th...@gmail.com <th...@gmail.com> #4
Facing the same issue
fl...@google.com <fl...@google.com> #5
Fix in progress.
Meanwhile, targeting Java8 will fix this.
Meanwhile, targeting Java8 will fix this.
ng...@gmail.com <ng...@gmail.com> #6
Thanks! The workaround worked for me ;)
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
...
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
...
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}
ap...@google.com <ap...@google.com> #7
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 105f01b7e716b5d9e228805c11b2e71fc1bebb7b
Author: Florina Muntenescu <florinam@google.com>
Date: Thu Oct 25 12:09:26 2018
Generating final params for DAO methods
Bug: 118015483
Test: DaoWriterTest
Change-Id: I7d511652450725e11e9be889e5f4aa907ec0739b
M room/compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
M room/compiler/src/test/data/daoWriter/output/ComplexDao.java
M room/compiler/src/test/data/daoWriter/output/DeletionDao.java
M room/compiler/src/test/data/daoWriter/output/UpdateDao.java
M room/compiler/src/test/data/daoWriter/output/WriterDao.java
M room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
https://android-review.googlesource.com/814629
https://goto.google.com/android-sha1/105f01b7e716b5d9e228805c11b2e71fc1bebb7b
Branch: androidx-master-dev
commit 105f01b7e716b5d9e228805c11b2e71fc1bebb7b
Author: Florina Muntenescu <florinam@google.com>
Date: Thu Oct 25 12:09:26 2018
Generating final params for DAO methods
Bug: 118015483
Test: DaoWriterTest
Change-Id: I7d511652450725e11e9be889e5f4aa907ec0739b
M room/compiler/src/main/kotlin/androidx/room/writer/DaoWriter.kt
M room/compiler/src/test/data/daoWriter/output/ComplexDao.java
M room/compiler/src/test/data/daoWriter/output/DeletionDao.java
M room/compiler/src/test/data/daoWriter/output/UpdateDao.java
M room/compiler/src/test/data/daoWriter/output/WriterDao.java
M room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/dao/BooksDao.kt
M room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/dao/UserDao.java
da...@google.com <da...@google.com> #9
This fix was actually released in Room 2.1.0-alpha03.
Description
Version used: 2.1.0-alpha01
Devices/Android versions reproduced on: Nexus 5 (Android 6.0.1) and Emulator (Android 8)
Android Studio 3.3 Canary 13
I create this DAO
import androidx.room.*
import dominando.android.data_room.entity.Book
import io.reactivex.Completable
import io.reactivex.Flowable
import io.reactivex.Maybe
@Dao
interface BookDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun save(book: Book): Completable
@Delete
fun delete(vararg book: Book): Completable
@Query("SELECT * FROM Book WHERE title LIKE :title ORDER BY title")
fun bookByTitle(title: String = "%"): Flowable<List<Book>>
@Query("SELECT * FROM Book WHERE id = :id")
fun bookById(id: String): Maybe<Book>
}
But compilation fails with this error.
error: local variable book is accessed from within inner class; needs to be declared final
When I look to the generated code, this is it.
@Override
public Completable save(Book book) {
return Completable.fromCallable(new Callable() {
@Override
public Void call() throws Exception {
__db.beginTransaction();
try {
__insertionAdapterOfBook.insert(book);
__db.setTransactionSuccessful();
return null;
} finally {
__db.endTransaction();
}
}
});
}
As you can see, book parameter is not marked as final and cannot be accessed inside of Completable.fromCallable.