From 099a7525ab0226319395adc2127a147f8d072719 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Mon, 8 Nov 2021 11:16:36 +0100 Subject: [PATCH] [Gradle][MPP] Improve error message for missing metadata extractor ^KT-46198 --- .../plugin/mpp/pm20/FragmentGranularMetadataResolver.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt index e9d1740f8a0..9ae75b311f7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt @@ -85,9 +85,16 @@ internal class FragmentGranularMetadataResolver( val visibleFragmentNamesExcludingVisibleByParents = visibleFragmentNames.minus(fragmentsNamesVisibleByParents(metadataSourceComponent.toSingleModuleIdentifier())) + /* + We can safely assume that a metadata extractor can be created, because the project structure metadata already + had to be read in order to create the Kotlin module and infer fragment visibility. + */ val metadataExtractor = MppDependencyProjectStructureMetadataExtractor.create( project, resolvedComponentResult, configurationToResolve, true - ) ?: error("Failed to create 'MppDependencyProjectStructureMetadataExtractor' for ${resolvedComponentResult.id}") + ) ?: error( + "Failed to create 'MppDependencyProjectStructureMetadataExtractor' for ${resolvedComponentResult.id} despite " + + "the presence of a proper Kotlin Module" + ) val projectStructureMetadata = (dependencyModule as? ExternalImportedKotlinModule)?.projectStructureMetadata ?: checkNotNull(metadataExtractor.getProjectStructureMetadata())