spade_mir/
assertion_codegen.rs
1use spade_codespan_reporting::diagnostic::Diagnostic;
2use spade_codespan_reporting::term::{self, termcolor::Buffer};
3
4use spade_common::location_info::{AsLabel, Loc};
5use spade_diagnostics::emitter::codespan_config;
6use spade_diagnostics::{CodeBundle, CompilationError, DiagHandler};
7
8use crate::ValueName;
9
10pub struct AssertedExpression(pub Loc<ValueName>);
11
12impl CompilationError for AssertedExpression {
13 fn report(&self, buffer: &mut Buffer, code: &CodeBundle, _diag_handler: &mut DiagHandler) {
14 let diag = Diagnostic::error()
15 .with_message("Assertion failed")
16 .with_labels(vec![self
17 .0
18 .primary_label()
19 .with_message("This expression is false")]);
20
21 term::emit(buffer, &codespan_config(), &code.files, &diag).unwrap();
22 }
23}