Lexicographical sort record types before topological sort (#94)

This commit is contained in:
Mike Voronov
2021-06-17 14:06:01 +03:00
committed by GitHub
parent fb67fc0c91
commit beaa118b1e
7 changed files with 24 additions and 22 deletions

View File

@ -25,6 +25,7 @@ use wasmer_it::IType;
use std::collections::HashSet;
use std::rc::Rc;
use itertools::Itertools;
pub(crate) struct RecordsTransformer {
used: HashSet<u64>,
@ -48,7 +49,8 @@ impl RecordsTransformer {
}
fn topological_sort(&mut self, exported_records: &IRecordTypes) -> InterfaceResult<()> {
for (id, record) in exported_records {
// sort records types inside HashMap to achieve their deterministic order
for (id, record) in exported_records.iter().sorted_by_key(|(_, v)| &v.name) {
self.dfs(*id, record, exported_records)?;
}