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())