Fixed
Status Update
Comments
na...@google.com <na...@google.com>
jo...@google.com <jo...@google.com>
tn...@google.com <tn...@google.com> #2
Realized this also affects effectively-sealed classes (no public or protected constructors). We should consider adding ClassItem.isEffectivelySealed()
to match.
We have three options for the logic:
- Search
Codebase
for all descendent classes of each effectively sealed class and only consider the ancestor class effectively final if all its descendents are concrete or effectively sealed. This matches the behavior inherent to the language. - Disallow sealed (possibly also effectively sealed) classes from having abstract descendents altogether. This limits some potentially valid APIs (E.g.: ADT that the client extends) but might be worth doing if we think this is a bad API pattern.
- Disallow adding abstract methods to any abstract class or interface altogether. This checks is the only exception to rule against adding abstract methods, and maybe it's better to never add abstract methods to existing public classes.
an...@google.com <an...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
Author: George Mount <
Link:
Revert^2 "Add requestFocus(FocusDirection) to focusRequester"
Expand for full commit details
Revert^2 "Add requestFocus(FocusDirection) to focusRequester"
This reverts commit 274c9242bfe89dad5aeb7179750d45fa64c6ab80.
Reason for revert: The original CL was correct. The revert was incorrect.
Relnote: "Adds requestFocus(FocusDirection) to both focusRequester and
FocusTargetModifierNode to allow focusing with a specific
direction."
Bug: 220960090
Test: new test
Change-Id: I96b97720a65d2e1bf8d7f845dc05844f7e7f565c
Files:
- M
compose/ui/ui/api/1.8.0-beta01.txt
- M
compose/ui/ui/api/current.ignore
- M
compose/ui/ui/api/current.txt
- M
compose/ui/ui/api/restricted_1.8.0-beta01.txt
- M
compose/ui/ui/api/restricted_current.ignore
- M
compose/ui/ui/api/restricted_current.txt
- M
compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/focus/ExplicitEnterExitWithCustomFocusEnterExitDemo.kt
- M
compose/ui/ui/src/androidInstrumentedTest/kotlin/androidx/compose/ui/focus/RequestFocusTest.kt
- M
compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt
- M
compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusOwnerImpl.kt
- M
compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusRequester.kt
- M
compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode.kt
- M
compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusTargetNode.kt
- M
compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/focus/FocusTransactions.kt
Hash: fb5d4a3eebdbc0cd3034d11eae8e00f507ec1a68
Date: Wed Nov 06 19:23:12 2024
Description
Version used: AGP 8.6.1
With the following error in strings.xml
<string name="invalid_format">This illustrates a broken specifier (%).</string>
getString(R.string.invalid_format, "something")
is correctly raised by StringFormatInvalid Lint rule.
But using Jetpack Compose:
stringResource(R.string.invalid_format, "something")
passes unnoticed leading to Runtime crash.