Do not initialize non-mocked Dispatchers.Main unnecessarily #4301
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Before this change, the following could happen on the JVM:
kotlinx.coroutines.test
accessesDispatchers.Main
beforesetMain
is called.Dispatchers.Main
attempts to initialize some other Main dispatcher in addition to thekotlinx-coroutines-test
Main dispatcher, if there is one.kotlinx-coroutines-android
artifact is present + its R8 rules are used to minify the tests, it's illegal to attempt to fail to create aMain
dispatcher.SUPPORT_MISSING = false
ensures that attempting to create a Main dispatcher fails immediately, in the call frame that attempts the creation, not waiting forDispatchers.Main
to be meaningfully used.In total,
kotlinx-coroutines-test
+kotlinx-coroutines-android
+ R8 minification of tests leads to some patterns ofkotlinx-coroutines-test
usage to crash.Fixes #4297