From 2e954668c713c51aa8ac9c0865561f6b6e4331e6 Mon Sep 17 00:00:00 2001 From: Trevor Elliott Date: Wed, 28 Sep 2022 13:23:31 -0700 Subject: [PATCH] Sort overlap errors by position (#4975) --- cranelift/isle/isle/src/overlap.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cranelift/isle/isle/src/overlap.rs b/cranelift/isle/isle/src/overlap.rs index fb826f68fc..96f324f16d 100644 --- a/cranelift/isle/isle/src/overlap.rs +++ b/cranelift/isle/isle/src/overlap.rs @@ -5,12 +5,17 @@ use std::collections::hash_map::Entry; use std::collections::{HashMap, HashSet}; use crate::error::{Error, Result, Source, Span}; +use crate::lexer::Pos; use crate::sema::{self, Rule, RuleId, Sym, TermEnv, TermId, TermKind, TypeEnv, VarId}; /// Check for overlap. pub fn check(tyenv: &TypeEnv, termenv: &TermEnv) -> Result<()> { let mut errors = check_overlaps(termenv).report(tyenv, termenv); if cfg!(feature = "overlap-errors") { + errors.sort_by_key(|err| match err { + Error::OverlapError { rules, .. } => rules.first().unwrap().1.from, + _ => Pos::default(), + }); match errors.len() { 0 => Ok(()), 1 => Err(errors.pop().unwrap()),