From 323ddffe325a4bffec89447c75cc27a81315abc1 Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Fri, 8 May 2026 17:05:01 +0300 Subject: Split Spanned from Span and expose fields Spanned wraps a value with a Span. Public fields enable destructuring in pattern matches. --- compiler/src/lexer/mod.rs | 6 +++--- compiler/src/lexer/tests.rs | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'compiler/src/lexer') diff --git a/compiler/src/lexer/mod.rs b/compiler/src/lexer/mod.rs index ff7d51d..464d88e 100644 --- a/compiler/src/lexer/mod.rs +++ b/compiler/src/lexer/mod.rs @@ -1,4 +1,4 @@ -use crate::span::{Pos, Span}; +use crate::span::{Pos, Span, Spanned}; #[cfg(test)] mod tests; @@ -113,7 +113,7 @@ impl<'a> Lexer<'a> { } impl<'a> Iterator for Lexer<'a> { - type Item = Span>; + type Item = Spanned>; fn next(&mut self) -> Option { loop { @@ -163,6 +163,6 @@ impl<'a> Iterator for Lexer<'a> { }; let end = Pos::new(self.line, self.column, self.cursor); - Some(Span::new(token, start, end)) + Some(Spanned::new(token, Span::new(start, end))) } } diff --git a/compiler/src/lexer/tests.rs b/compiler/src/lexer/tests.rs index 30be85a..2dce2e3 100644 --- a/compiler/src/lexer/tests.rs +++ b/compiler/src/lexer/tests.rs @@ -4,7 +4,7 @@ use super::Token::*; use super::*; fn tokenize<'a>(input: &'a str) -> Vec> { - Lexer::new(input).map(|s| s.into_inner()).collect() + Lexer::new(input).map(|s| s.inner).collect() } #[test] @@ -289,7 +289,9 @@ fn test_comments() { } fn spans(input: &str) -> Vec<(Pos, Pos)> { - Lexer::new(input).map(|s| (s.start(), s.end())).collect() + Lexer::new(input) + .map(|s| (s.span.start, s.span.end)) + .collect() } #[test] -- cgit v1.3