diff options
Diffstat (limited to 'src/diagnostics/unterminated_comment.rs')
| -rw-r--r-- | src/diagnostics/unterminated_comment.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/diagnostics/unterminated_comment.rs b/src/diagnostics/unterminated_comment.rs new file mode 100644 index 0000000..2c583a4 --- /dev/null +++ b/src/diagnostics/unterminated_comment.rs @@ -0,0 +1,31 @@ +use miette::Diagnostic; +use thiserror::Error; + +use crate::{ + diagnostics::TokenDiagnostic, + tokenize::{Span, Token, TokenType}, +}; + +#[derive(Error, Debug, Diagnostic)] +#[error("Unterminated comment")] +#[diagnostic(code(UnterminatedComment), severity(Error))] +pub struct UnterminatedComment { + #[label(primary, "This comment is not terminated by a `-->` sequence")] + comment: Span, +} + +impl TokenDiagnostic for UnterminatedComment { + fn handle_token(token: &Token<'_>) -> Option<Self> { + let TokenType::Comment { terminated, .. } = token.ty else { + return None; + }; + + if terminated { + return None; + } + + Some(Self { + comment: token.span, + }) + } +} |
