Fixed
Status Update
Comments
da...@google.com <da...@google.com> #2
Hi. Thanks for reporting this. Fixed in alpha-04
sa...@smartpatient.eu <sa...@smartpatient.eu> #3
Project: platform/frameworks/support
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug: b/264018028
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
https://android-review.googlesource.com/2373449
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug:
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
ap...@google.com <ap...@google.com> #4
deleted
da...@google.com <da...@google.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.tv:tv-material:1.0.0-alpha04
Description
Version used: 2.1.0
Devices/Android versions reproduced on: not related
Recently I have updated all Room calls to suspend functions and I discovered that there is an issue with suspend function annotated with @RawQuery which returns generic type.
How to reproduce it?
I'm using base dao for all my entities:
abstract class BaseDao<ENTITY> {
@RawQuery
abstract fun rawQuery(query: SupportSQLiteQuery): List<ENTITY>
}
Example entity:
@Dao
abstract class SampleDao : BaseDao<SampleEntity>()
For this setup Room generates the following implementation:
@Override
public List<SampleEntity> rawQuery(final SupportSQLiteQuery query) {
final SupportSQLiteQuery _internalQuery = query;
__db.assertNotSuspendingTransaction();
final Cursor _cursor = DBUtil.query(__db, _internalQuery, false);
try {
final List<SampleEntity> _result = new ArrayList<SampleEntity>(_cursor.getCount());
while(_cursor.moveToNext()) {
final SampleEntity _item;
_item = __entityCursorConverter_examplePackageSampleEntity(_cursor);
_result.add(_item);
}
return _result;
} finally {
_cursor.close();
}
}
Problems start when I add suspend modifier to rawQuery function:
abstract class BaseDao<ENTITY> {
@RawQuery
abstract suspend fun rawQuery(query: SupportSQLiteQuery): List<ENTITY>
}
Then Room is not able to generate correct implementation and something like that comes out:
@Override
public Object rawQuery(final SupportSQLiteQuery query,
final Continuation<? super List<? extends SampleEntity>> p1) {
final SupportSQLiteQuery _internalQuery = query;
return CoroutinesRoom.execute(__db, false, new Callable<List<? extends ENTITY>>() {
@Override
public List<? extends ENTITY> call() throws Exception {
final Cursor _cursor = DBUtil.query(__db, _internalQuery, false);
try {
return _result;
} finally {
_cursor.close();
}
}
}, p1);
}
I also saw this in 2.2.0-alpha01 and I think issue lies in the code generation.