diff --git a/language/move-lang/src/errors/mod.rs b/language/move-lang/src/errors/mod.rs index feb20790e715..db9da86ba473 100644 --- a/language/move-lang/src/errors/mod.rs +++ b/language/move-lang/src/errors/mod.rs @@ -60,8 +60,13 @@ fn render_errors( writer: &mut W, files: &Files, file_mapping: &FileMapping, - errors: Errors, + mut errors: Errors, ) { + errors.sort_by(|e1, e2| { + let loc1: &Loc = &e1[0].0; + let loc2: &Loc = &e2[0].0; + loc1.cmp(loc2) + }); let mut seen: HashSet = HashSet::new(); for error in errors.into_iter() { let hashable_error = hashable_error(&error); diff --git a/language/move-lang/src/shared/mod.rs b/language/move-lang/src/shared/mod.rs index 0f08c07e65c8..3f65a0be9345 100644 --- a/language/move-lang/src/shared/mod.rs +++ b/language/move-lang/src/shared/mod.rs @@ -110,7 +110,7 @@ impl TryFrom<&[u8]> for Address { // Loc //************************************************************************************************** -#[derive(Debug, Copy, Clone, Default, Eq, PartialEq)] +#[derive(Debug, Copy, Clone, Default, Eq, PartialEq, Ord, PartialOrd)] pub struct Loc { file: &'static str, span: Span,