resolveAll method
Resolve all ModuleImport entries in a Program, returning a new Program with all imports inlined as concrete modules.
Implementation
Future<Program> resolveAll(Program program) async {
final resolvedModules = <String, Module>{};
for (final m in program.modules) {
resolvedModules[m.name] = m;
}
for (final m in program.modules) {
for (final import_ in m.moduleImports) {
if (resolvedModules.containsKey(import_.name)) continue;
try {
final resolved = await resolve(import_);
resolvedModules[import_.name] = resolved;
} catch (e) {
// If resolution fails, leave the import unresolved.
// Engines/compilers will report the missing module.
}
}
}
return Program()
..name = program.name
..version = program.version
..entryModule = program.entryModule
..entryFunction = program.entryFunction
..metadata = program.metadata
..modules.addAll(resolvedModules.values);
}