@@ -170,14 +170,10 @@ class MetadataProvider {
170170 return _moduleToModulePath.keys.toList ();
171171 }
172172
173- /// Compute metadata information after reading the metadata contents.
174- ///
175- /// If [hotReload] is true, skips adding the SDK metadata and caches the
176- /// computed [ModuleMetadata] , returning the resulting cache.
177- ///
178- /// Otherwise, adds all metadata and returns null.
179- Future <Map <String , ModuleMetadata >?> _processMetadata (bool hotReload) async {
180- final modules = hotReload ? < String , ModuleMetadata > {} : null ;
173+ /// Compute metadata information after reading the metadata contents and
174+ /// return a map from module names to their [ModuleMetadata] .
175+ Future <Map <String , ModuleMetadata >> _processMetadata () async {
176+ final modules = < String , ModuleMetadata > {};
181177 // The merged metadata resides next to the entrypoint.
182178 // Assume that <name>.bootstrap.js has <name>.ddc_merged_metadata
183179 if (entrypoint.endsWith ('.bootstrap.js' )) {
@@ -188,8 +184,6 @@ class MetadataProvider {
188184 );
189185 final merged = await _assetReader.metadataContents (serverPath);
190186 if (merged != null ) {
191- // We can't hot reload the SDK yet, so no need to invalidate this data.
192- if (! hotReload) _addSdkMetadata ();
193187 for (final contents in merged.split ('\n ' )) {
194188 try {
195189 if (contents.isEmpty ||
@@ -201,11 +195,7 @@ class MetadataProvider {
201195 moduleJson as Map <String , dynamic >,
202196 );
203197 final moduleName = metadata.name;
204- if (hotReload) {
205- modules! [moduleName] = metadata;
206- } else {
207- _addMetadata (metadata);
208- }
198+ modules[moduleName] = metadata;
209199 _logger.fine ('Loaded debug metadata for module: $moduleName ' );
210200 } catch (e) {
211201 _logger.warning ('Failed to read metadata: $e ' );
@@ -217,9 +207,13 @@ class MetadataProvider {
217207 return modules;
218208 }
219209
220- /// Process all metadata and compute caches once.
210+ /// Process all metadata, including SDK metadata, and compute caches once.
221211 Future <void > _initialize () async {
222- await _metadataMemoizer.runOnce (() => _processMetadata (false ));
212+ await _metadataMemoizer.runOnce (() async {
213+ final metadata = await _processMetadata ();
214+ _addSdkMetadata ();
215+ metadata.values.forEach (_addMetadata);
216+ });
223217 }
224218
225219 /// Given a map of hot reloaded modules mapped to their respective libraries,
@@ -231,7 +225,7 @@ class MetadataProvider {
231225 Future <ModifiedModuleReport > reinitializeAfterHotReload (
232226 Map <String , List > reloadedModulesToLibraries,
233227 ) async {
234- final modules = ( await _processMetadata (true )) ! ;
228+ final modules = await _processMetadata () ;
235229 final invalidatedLibraries = < String > {};
236230 void invalidateLibrary (String libraryImportUri) {
237231 invalidatedLibraries.add (libraryImportUri);
0 commit comments