From d534d6ae11d6f08bdbc3e73525d8f797b9b9cf74 Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Thu, 31 Oct 2024 17:33:01 +1300 Subject: Add location() method to SourceSpan struct A SourceSpan contains up to two SourceLocations: the location of the span in the parsed source file (called in_merged), and the location of the span in an original source file as per a path comment in the parsed source file (called in_source). In places where only one location can be reported, the in_source location is preferred but is not guaranteed to exist, so the in_merged location is used as a fallback. Because this pattern is used in multiple places, it was added as a method to SourceSpan and all occurrences of the pattern were replaced with a method call. --- src/locators/source.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/locators/source.rs') diff --git a/src/locators/source.rs b/src/locators/source.rs index 2f10bd9..20542e3 100644 --- a/src/locators/source.rs +++ b/src/locators/source.rs @@ -11,6 +11,12 @@ pub struct SourceSpan { pub in_source: Option, } +impl SourceSpan { + pub fn location(&self) -> &SourceLocation { + self.in_source.as_ref().unwrap_or(&self.in_merged) + } +} + #[derive(Clone)] pub struct SourceLocation { -- cgit v1.2.3-70-g09d2