diff --git a/build_modules/CHANGELOG.md b/build_modules/CHANGELOG.md index 9051e507c..cde4e243e 100644 --- a/build_modules/CHANGELOG.md +++ b/build_modules/CHANGELOG.md @@ -1,5 +1,6 @@ ## 5.1.4 +- Fix module_builder reading DDC modules for non-primary dart libraries. - Allow Dart SDK 3.11.x and 3.12 prerelease. ## 5.1.3 diff --git a/build_modules/lib/src/module_builder.dart b/build_modules/lib/src/module_builder.dart index f421ff313..380c9ab5f 100644 --- a/build_modules/lib/src/module_builder.dart +++ b/build_modules/lib/src/module_builder.dart @@ -55,18 +55,19 @@ class ModuleBuilder implements Builder { var outputModule = metaModule.modules.firstWhereOrNull( (m) => m.primarySource == buildStep.inputId, ); - final serializedLibrary = await buildStep.readAsString( - buildStep.inputId.changeExtension(moduleLibraryExtension), - ); - final libraryModule = ModuleLibrary.deserialize( - buildStep.inputId, - serializedLibrary, - ); - final scratchSpace = await buildStep.fetchResource(scratchSpaceResource); - if (outputModule == null && libraryModule.hasMain) { - outputModule = metaModule.modules.firstWhere( - (m) => m.sources.contains(buildStep.inputId), + if (outputModule == null) { + final serializedLibrary = await buildStep.readAsString( + buildStep.inputId.changeExtension(moduleLibraryExtension), + ); + final libraryModule = ModuleLibrary.deserialize( + buildStep.inputId, + serializedLibrary, ); + if (libraryModule.hasMain) { + outputModule = metaModule.modules.firstWhere( + (m) => m.sources.contains(buildStep.inputId), + ); + } } if (outputModule == null) return; final modules = await buildStep.fetchResource(moduleCache); @@ -76,6 +77,7 @@ class ModuleBuilder implements Builder { outputModule, ); if (usesWebHotReload) { + final scratchSpace = await buildStep.fetchResource(scratchSpaceResource); // All sources must be declared before the Frontend Server is invoked, as // it only accepts the main entrypoint as its compilation target. await buildStep.trackStage(