diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 56e541603a..597128dd4a 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -7279,20 +7279,16 @@ mod tests { ); let snapshot = editor.snapshot(cx); + let mut highlighted_ranges = editor.highlighted_ranges_in_range( + anchor_range(Point::new(3, 4)..Point::new(7, 4)), + &snapshot, + ); + // Enforce a consistent ordering based on color without relying on the ordering of the + // highlight's `TypeId` which is non-deterministic. + highlighted_ranges.sort_unstable_by_key(|(_, color)| *color); assert_eq!( - editor.highlighted_ranges_in_range( - anchor_range(Point::new(3, 4)..Point::new(7, 4)), - &snapshot, - ), + highlighted_ranges, &[ - ( - DisplayPoint::new(4, 2)..DisplayPoint::new(4, 4), - Color::red(), - ), - ( - DisplayPoint::new(6, 3)..DisplayPoint::new(6, 5), - Color::red(), - ), ( DisplayPoint::new(3, 2)..DisplayPoint::new(3, 5), Color::green(), @@ -7301,6 +7297,14 @@ mod tests { DisplayPoint::new(5, 3)..DisplayPoint::new(5, 6), Color::green(), ), + ( + DisplayPoint::new(4, 2)..DisplayPoint::new(4, 4), + Color::red(), + ), + ( + DisplayPoint::new(6, 3)..DisplayPoint::new(6, 5), + Color::red(), + ), ] ); assert_eq!( diff --git a/crates/gpui/src/color.rs b/crates/gpui/src/color.rs index 5adf03daef..4c301b4e48 100644 --- a/crates/gpui/src/color.rs +++ b/crates/gpui/src/color.rs @@ -12,7 +12,7 @@ use serde::{ }; use serde_json::json; -#[derive(Clone, Copy, Default, PartialEq, Eq, Hash)] +#[derive(Clone, Copy, Default, PartialEq, Eq, Hash, PartialOrd, Ord)] #[repr(transparent)] pub struct Color(ColorU);