Load kernel files in reverse order to accommodate topological order that pub build_runner produces.
This fixes a bug with generation of coverage report in presence of mixin declaration/application coming from different dill files.
Change-Id: Ie80fd6080cf65c3b895606809194c2bc6a08612a
Reviewed-on: https://dart-review.googlesource.com/c/87605
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Keerti Parthasarathy <keertip@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index dc370e1..a11f25c 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -225,7 +225,7 @@
Library& library = Library::Handle(zone);
// Create "fake programs" for each sub-program.
intptr_t subprogram_count = subprogram_file_starts.length() - 1;
- for (intptr_t i = 0; i < subprogram_count; ++i) {
+ for (intptr_t i = subprogram_count - 1; i >= 0; --i) {
intptr_t subprogram_start = subprogram_file_starts.At(i);
intptr_t subprogram_end = subprogram_file_starts.At(i + 1);
reader.set_raw_buffer(program->kernel_data() + subprogram_start);
@@ -237,7 +237,7 @@
Object& load_result = Object::Handle(loader.LoadProgram(false));
if (load_result.IsError()) return load_result;
- if (library.IsNull() && load_result.IsLibrary()) {
+ if (load_result.IsLibrary()) {
library ^= load_result.raw();
}