From 577ef510cebe7eab9f735a5236bd1005a565ca62 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 27 Oct 2023 19:57:45 +0200 Subject: [PATCH] error display underline now includes a.f(b) (b) part --- mers_lib/src/parsing/statements.rs | 3 +-- mers_lib/src/program/parsed/assign_to.rs | 3 +++ mers_lib/src/program/parsed/block.rs | 3 +++ mers_lib/src/program/parsed/chain.rs | 3 +++ mers_lib/src/program/parsed/function.rs | 3 +++ mers_lib/src/program/parsed/if.rs | 3 +++ mers_lib/src/program/parsed/init_to.rs | 3 +++ mers_lib/src/program/parsed/mod.rs | 3 +++ mers_lib/src/program/parsed/tuple.rs | 3 +++ mers_lib/src/program/parsed/value.rs | 3 +++ mers_lib/src/program/parsed/variable.rs | 3 +++ mers_lib/src/program/run/mod.rs | 8 ++++++++ 12 files changed, 39 insertions(+), 2 deletions(-) diff --git a/mers_lib/src/parsing/statements.rs b/mers_lib/src/parsing/statements.rs index cf623cb..58bd272 100755 --- a/mers_lib/src/parsing/statements.rs +++ b/mers_lib/src/parsing/statements.rs @@ -51,11 +51,10 @@ pub fn parse(src: &mut Source) -> Result SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/parsed/block.rs b/mers_lib/src/program/parsed/block.rs index 0612637..2ad39b2 100755 --- a/mers_lib/src/program/parsed/block.rs +++ b/mers_lib/src/program/parsed/block.rs @@ -28,4 +28,7 @@ impl MersStatement for Block { .collect::, _>>()?, })) } + fn source_range(&self) -> SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/parsed/chain.rs b/mers_lib/src/program/parsed/chain.rs index 7fde8a8..c4c290e 100755 --- a/mers_lib/src/program/parsed/chain.rs +++ b/mers_lib/src/program/parsed/chain.rs @@ -24,4 +24,7 @@ impl MersStatement for Chain { chained: self.chained.compile(info, comp)?, })) } + fn source_range(&self) -> SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/parsed/function.rs b/mers_lib/src/program/parsed/function.rs index b9d06a9..4a77656 100755 --- a/mers_lib/src/program/parsed/function.rs +++ b/mers_lib/src/program/parsed/function.rs @@ -47,4 +47,7 @@ impl MersStatement for Function { }, })) } + fn source_range(&self) -> SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/parsed/if.rs b/mers_lib/src/program/parsed/if.rs index ea8ad16..dcfd52e 100755 --- a/mers_lib/src/program/parsed/if.rs +++ b/mers_lib/src/program/parsed/if.rs @@ -30,4 +30,7 @@ impl MersStatement for If { }, })) } + fn source_range(&self) -> SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/parsed/init_to.rs b/mers_lib/src/program/parsed/init_to.rs index faa2964..ac74432 100755 --- a/mers_lib/src/program/parsed/init_to.rs +++ b/mers_lib/src/program/parsed/init_to.rs @@ -30,4 +30,7 @@ impl MersStatement for InitTo { source, })) } + fn source_range(&self) -> SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/parsed/mod.rs b/mers_lib/src/program/parsed/mod.rs index 3aaa0ff..e62d055 100755 --- a/mers_lib/src/program/parsed/mod.rs +++ b/mers_lib/src/program/parsed/mod.rs @@ -2,6 +2,8 @@ use std::{collections::HashMap, fmt::Debug}; use crate::info; +use super::run::SourceRange; + #[cfg(feature = "parse")] pub mod assign_to; #[cfg(feature = "parse")] @@ -42,6 +44,7 @@ pub trait MersStatement: Debug + Send + Sync { } o } + fn source_range(&self) -> SourceRange; } #[derive(Clone, Copy)] diff --git a/mers_lib/src/program/parsed/tuple.rs b/mers_lib/src/program/parsed/tuple.rs index b4479dd..7cdf17f 100755 --- a/mers_lib/src/program/parsed/tuple.rs +++ b/mers_lib/src/program/parsed/tuple.rs @@ -28,4 +28,7 @@ impl MersStatement for Tuple { .collect::, _>>()?, })) } + fn source_range(&self) -> SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/parsed/value.rs b/mers_lib/src/program/parsed/value.rs index 260f321..f20033e 100755 --- a/mers_lib/src/program/parsed/value.rs +++ b/mers_lib/src/program/parsed/value.rs @@ -23,4 +23,7 @@ impl MersStatement for Value { val: self.data.clone(), })) } + fn source_range(&self) -> SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/parsed/variable.rs b/mers_lib/src/program/parsed/variable.rs index d7bba28..f1fcfd3 100755 --- a/mers_lib/src/program/parsed/variable.rs +++ b/mers_lib/src/program/parsed/variable.rs @@ -41,4 +41,7 @@ impl MersStatement for Variable { }, })) } + fn source_range(&self) -> SourceRange { + self.pos_in_src + } } diff --git a/mers_lib/src/program/run/mod.rs b/mers_lib/src/program/run/mod.rs index 6884e63..8118d5e 100755 --- a/mers_lib/src/program/run/mod.rs +++ b/mers_lib/src/program/run/mod.rs @@ -74,6 +74,14 @@ impl From<(SourcePos, SourcePos)> for SourceRange { } } } +impl SourceRange { + pub fn start(&self) -> SourcePos { + self.start + } + pub fn end(&self) -> SourcePos { + self.end + } +} #[derive(Clone, Debug)] pub struct CheckError(Vec); #[derive(Clone, Debug)]