NullPointerException when scanning Compose trees that contains `AnimatedContent()`
- Dominant language
- Kotlin
- Stars
- 899
- Forks
- 55
- PR merge metrics
- No merged PRs in 30d
Description
We are having `java.lang.NullPointerException` when scanning Compose trees that contains `AnimatedContent()`. Found it was caused by a recent change in the [PR](https://github.com/block/radiography/pull/184). The NullPointerException is gone once reverted the change in the file [CompositionContexts.kt](https://github.com/block/radiography/pull/184/changes#diff-4de8f6ed70c34d6afe23415ef6e30d8de12b28be31f06a59dbd22588c2f85a24).
Versions:
- radiography:2.8
- Compose 1.10.0
> java.lang.NullPointerException
> at androidx.compose.ui.node.DelegatableNodeKt.requireCoordinator-64DMado(DelegatableNode.kt:342)
> at androidx.compose.ui.graphics.BlockGraphicsLayerModifier.applySemantics(GraphicsLayerModifier.kt:737)
> at radiography.ScannableView$ComposeView.getSemanticsConfigurations(ScannableView.kt:90)
...
> at radiography.Radiography$renderScannableViewTree$1.invoke(Radiography.kt:128)
> at radiography.Radiography$renderScannableViewTree$1.invoke(Radiography.kt:114)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:29)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderRecursively(RenderTreeString.kt:46)
> at radiography.internal.RenderTreeStringKt.renderTreeString(RenderTreeString.kt:17)
> at radiography.Radiography.renderScannableViewTree$radiography_release(Radiography.kt:114)
> at radiography.Radiography.scanFromLooperThread(Radiography.kt:97)
> at radiography.Radiography.scan(Radiography.kt:61)
> at radiography.Radiography.scan$default(Radiography.kt:42)
Contributor guide
Research direction
Start by reproducing the NullPointerException while scanning a Compose tree containing AnimatedContent() on radiography 2.8 with Compose 1.10.0. Read CompositionContexts.kt and follow the stack through ScannableView$ComposeView.getSemanticsConfigurations(), Radiography.kt, and RenderTreeString.kt. Done means scanning the tree completes without the reported exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100