Skip to main content

ocelot_base/
compilation_stage.rs

1/// Compilation stage that can report expected source-level failures.
2#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3pub enum CompilationStage {
4    Lexer,
5    Parser,
6    Resolver,
7}
8
9impl std::fmt::Display for CompilationStage {
10    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11        match self {
12            Self::Lexer => f.write_str("lexer"),
13            Self::Parser => f.write_str("parser"),
14            Self::Resolver => f.write_str("resolver"),
15        }
16    }
17}
18
19#[cfg(test)]
20mod tests {
21    use super::CompilationStage;
22
23    #[test]
24    fn compilation_stage_formats_as_lowercase_name() {
25        assert_eq!(CompilationStage::Lexer.to_string(), "lexer");
26        assert_eq!(CompilationStage::Parser.to_string(), "parser");
27        assert_eq!(CompilationStage::Resolver.to_string(), "resolver");
28    }
29}