NSExceptionKt
NSExceptionKt copied to clipboard
Support throwing in composable function
Currently, crash report in Firebase Console doesn't show corresponding line in correct file, when exception is thrown inside composable. Instead, it shows Composer.kt
Is is possible to fix or change something in gradle configuration?
Code sample
TodoList.kt
@Composable
fun TodoList(someText: String? = null) {
TextButton({
throw RuntimeException("Test Crash")
}) {
Text("Add ")
}
}
Stacktrace
Fatal Exception: kotlin.RuntimeException
0 Asystent 0xf94e78 kfun:pl.inno4med.asystent.TodoList$$inlined$cache$1.TodoList$$inlined$cache$1$invoke$5.TodoList$$inlined$cache$1$invoke$5$invoke$1.$<bridge-DN>invoke(){}#internal + 26 (Composer.kt:26)
1 Asystent 0x8947d8 kfun:androidx.compose.foundation.ClickableNode#onPointerEvent(androidx.compose.ui.input.pointer.PointerEvent;androidx.compose.ui.input.pointer.PointerEventPass;androidx.compose.ui.unit.IntSize){} + 1025 (Clickable.kt:1025)
2 Asystent 0x5aa8dc kfun:androidx.compose.ui.input.pointer.Node#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 51 (PointerInputModifierNode.kt:51)
3 Asystent 0x5aa6c4 kfun:androidx.compose.ui.input.pointer.Node#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 429 (MutableVector.kt:429)
4 Asystent 0x5aa6c4 kfun:androidx.compose.ui.input.pointer.Node#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 429 (MutableVector.kt:429)
5 Asystent 0x5aa6c4 kfun:androidx.compose.ui.input.pointer.Node#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 429 (MutableVector.kt:429)
6 Asystent 0x5a8be4 kfun:androidx.compose.ui.input.pointer.NodeParent#dispatchMainEventPass(androidx.collection.LongSparseArray<androidx.compose.ui.input.pointer.PointerInputChange>;androidx.compose.ui.layout.LayoutCoordinates;androidx.compose.ui.input.pointer.InternalPointerEvent;kotlin.Boolean){}kotlin.Boolean + 281 (HitPathTracker.kt:281)
7 Asystent 0x6e73f0 kfun:androidx.compose.ui.scene.PlatformLayersComposeSceneImpl.processPointerInputEvent#internal + 267 (HitPathTracker.kt:267)
8 Asystent 0x6d1824 kfun:androidx.compose.ui.scene.BaseComposeScene.BaseComposeScene$$FUNCTION_REFERENCE_FOR$processPointerInputEvent$5.$<bridge-UNN>invoke(androidx.compose.ui.input.pointer.PointerInputEvent){}androidx.compose.ui.scene.PointerEventResult#internal + 300 (BaseComposeScene.skiko.kt:300)
9 Asystent 0x690888 kfun:androidx.compose.ui.input.pointer.SyntheticEventSender.sendInternal#internal + 1 ([K][Suspend]Functions:1)
10 Asystent 0x6d8810 kfun:androidx.compose.ui.scene.ComposeSceneInputHandler#onPointerEvent(androidx.compose.ui.input.pointer.PointerEventType;kotlin.collections.List<androidx.compose.ui.scene.ComposeScenePointer>;androidx.compose.ui.input.pointer.PointerButtons;androidx.compose.ui.input.pointer.PointerKeyboardModifiers;androidx.compose.ui.geometry.Offset;kotlin.Long;kotlin.Any?;androidx.compose.ui.input.pointer.PointerButton?){}androidx.compose.ui.scene.PointerEventResult + 82 (SyntheticEventSender.skiko.kt:82)
11 Asystent 0x6cf184 kfun:androidx.compose.ui.scene.BaseComposeScene#sendPointerEvent(androidx.compose.ui.input.pointer.PointerEventType;kotlin.collections.List<androidx.compose.ui.scene.ComposeScenePointer>;androidx.compose.ui.input.pointer.PointerButtons;androidx.compose.ui.input.pointer.PointerKeyboardModifiers;androidx.compose.ui.geometry.Offset;kotlin.Long;kotlin.Any?;androidx.compose.ui.input.pointer.PointerButton?){}androidx.compose.ui.scene.PointerEventResult + 246 (BaseComposeScene.skiko.kt:246)
12 Asystent 0x6d5a38 kfun:androidx.compose.ui.scene.ComposeScene#sendPointerEvent$default(androidx.compose.ui.input.pointer.PointerEventType;kotlin.collections.List<androidx.compose.ui.scene.ComposeScenePointer>;androidx.compose.ui.input.pointer.PointerButtons;androidx.compose.ui.input.pointer.PointerKeyboardModifiers;androidx.compose.ui.geometry.Offset;kotlin.Long;kotlin.Any?;androidx.compose.ui.input.pointer.PointerButton?;kotlin.Int){}androidx.compose.ui.scene.PointerEventResult + 244 (ComposeScene.skiko.kt:244)
13 Asystent 0x78f688 kfun:androidx.compose.ui.scene.ComposeSceneMediator.ComposeSceneMediator$$FUNCTION_REFERENCE_FOR$onTouchesEvent$14.$<bridge-UNNNN>invoke(kotlin.collections.Set<*>;platform.UIKit.UIEvent?;androidx.compose.ui.window.TouchesEventKind){}androidx.compose.ui.scene.PointerEventResult#internal + 502 (ComposeSceneMediator.uikit.kt:502)
14 Asystent 0x7e38c4 kfun:androidx.compose.ui.window.TouchesGestureRecognizer.touchesEnded$endTouchesEvent#internal + 1 ([K][Suspend]Functions:1)
15 Asystent 0x7de410 kfun:androidx.compose.ui.window.TouchesGestureRecognizer.touchesEnded#internal + 233 (UserInputView.uikit.kt:233)
16 Asystent 0x1296cb4 _6f72672e6a6574627261696e732e636f6d706f73652e75693a75692f6f70742f6275696c644167656e742f776f726b2f343264346134386532663830316664302f636f6d706f73652f75692f75692f7372632f75696b69744d61696e2f6b6f746c696e2f616e64726f6964782f636f6d706f73652f75692f77696e646f772f55736572496e707574566965772e75696b69742e6b74_kncfun193
17 UIKitCore 0x985568 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
18 UIKitCore 0xee87e8 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
19 UIKitCore 0x97c35c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
20 UIKitCore 0x97c14c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
21 UIKitCore 0xe99154 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
22 UIKitCore 0xe78b1c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
23 UIKitCore 0xf0320c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
24 UIKitCore 0xf05eb0 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
25 UIKitCore 0xefe4c4 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
26 UIKitCore 0x3c241c (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
27 UIKitCore 0xd8d8d8 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
28 UIKitCore 0xd8ccf4 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
29 CoreFoundation 0x93214 (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
30 CoreFoundation 0x9315c (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
31 CoreFoundation 0x928e4 (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
32 CoreFoundation 0x8d2e0 (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
33 CoreFoundation 0x8cb98 (Missing UUID 1631b8d44c0235c3837230dbce4c86a9)
34 GraphicsServices 0x2d00 (Missing UUID a74f51a46cce30b3a5915be19c8af740)
35 UIKitCore 0xe5ebb8 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
36 UIKitCore 0xe62f84 (Missing UUID b884823ea2d635d0b8241f812a7d7bc1)
37 SwiftUI 0x85a66c (Missing UUID 523687d33c5d353ca71a3e83f33df3f0)
38 SwiftUI 0x85a3a0 (Missing UUID 523687d33c5d353ca71a3e83f33df3f0)
39 SwiftUI 0x5e5dc4 (Missing UUID 523687d33c5d353ca71a3e83f33df3f0)
40 Asystent 0x2d7c main (iOSApp.swift)
41 ??? 0x10765d3d4 (Missing)
42 ??? 0x107742b98 (Missing)
It looks like your TodoList function is being inlined. I don't think there is much we can do about that, but when I have some time I'll try and see if NSExceptionKt is stripping something useful.