create static method
Implementation
static Future<MissingModulesException> create(Set<AssetId> missingSources,
Iterable<Module> transitiveModules, AssetReader reader) async {
var buffer = StringBuffer('''
Unable to find modules for some sources, this is usually the result of either a
bad import, a missing dependency in a package (or possibly a dev_dependency
needs to move to a real dependency), or a build failure (if importing a
generated file).
Please check the following imports:\n
''');
var checkedSourceDependencies = <AssetId, Set<AssetId>>{};
for (var module in transitiveModules) {
var missingIds = module.directDependencies.intersection(missingSources);
for (var missingId in missingIds) {
var checkedAlready =
checkedSourceDependencies.putIfAbsent(missingId, () => <AssetId>{});
for (var sourceId in module.sources) {
if (checkedAlready.contains(sourceId)) {
continue;
}
checkedAlready.add(sourceId);
var message =
await _missingImportMessage(sourceId, missingId, reader);
if (message != null) buffer.writeln(message);
}
}
}
return MissingModulesException._(buffer.toString());
}