use custom type for TopologicalSort result

This commit is contained in:
Folkert 2022-04-22 19:28:46 +02:00
parent 48ce1c14bf
commit 28cb9bf36e
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
2 changed files with 32 additions and 8 deletions

View file

@ -8,6 +8,7 @@ use crate::expr::{canonicalize_expr, Output, Recursive};
use crate::pattern::{bindings_from_patterns, canonicalize_def_header_pattern, Pattern};
use crate::procedure::References;
use crate::reference_matrix::ReferenceMatrix;
use crate::reference_matrix::TopologicalSort;
use crate::scope::create_alias;
use crate::scope::Scope;
use roc_collections::{default_hasher, ImEntry, ImMap, ImSet, MutMap, MutSet, SendMap};
@ -812,7 +813,7 @@ pub fn sort_can_defs(
// TODO also do the same `addDirects` check elm/compiler does, so we can
// report an error if a recursive definition can't possibly terminate!
match def_ids.references.topological_sort_into_groups() {
Ok(groups) => {
TopologicalSort::Groups { groups } => {
let mut declarations = Vec::new();
// groups are in reversed order
@ -828,7 +829,10 @@ pub fn sort_can_defs(
(Ok(declarations), output)
}
Err((mut groups, nodes_in_cycle)) => {
TopologicalSort::HasCycles {
mut groups,
nodes_in_cycle,
} => {
let mut declarations = Vec::new();
let mut problems = Vec::new();