aboutsummaryrefslogtreecommitdiff
path: root/src/format.rs
blob: 583264372f597df8ce89b9475e6d3a8cac84b930 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use proc_macro2::TokenStream;
use quote::TokenStreamExt;
use std::fmt::{self, Display};
use syn::Error;

use crate::compare::Path;

impl Display for Path {
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        for (i, segment) in self.segments.iter().enumerate() {
            if i > 0 {
                formatter.write_str("::")?;
            }
            segment.fmt(formatter)?;
        }
        Ok(())
    }
}

pub fn error(lesser: &Path, greater: &Path) -> Error {
    let mut spans = TokenStream::new();
    spans.append_all(&lesser.segments);

    let msg = format!("{} should sort before {}", lesser, greater);

    Error::new_spanned(spans, msg)
}