From ef81a74872f58a2aef9abed9a3b2c1541b5e8834 Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Thu, 14 Apr 2022 14:01:39 +0200 Subject: [PATCH 1/2] expose message and spans from front/back wgsl errors --- src/front/wgsl/mod.rs | 10 ++++++++++ src/span.rs | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/front/wgsl/mod.rs b/src/front/wgsl/mod.rs index 511f6b66f9..147c9a45b9 100644 --- a/src/front/wgsl/mod.rs +++ b/src/front/wgsl/mod.rs @@ -1287,6 +1287,16 @@ pub struct ParseError { } impl ParseError { + pub fn labels(&self) -> impl Iterator + ExactSizeIterator + '_ { + self.labels + .iter() + .map(|(span, msg)| (span.clone(), msg.as_ref())) + } + + pub fn message(&self) -> &str { + &self.message + } + fn diagnostic(&self) -> Diagnostic<()> { let diagnostic = Diagnostic::error() .with_message(self.message.to_string()) diff --git a/src/span.rs b/src/span.rs index f9fb111139..000d09c32b 100644 --- a/src/span.rs +++ b/src/span.rs @@ -124,8 +124,12 @@ impl WithSpan { self.inner } + pub fn as_inner(&self) -> &E { + &self.inner + } + /// Iterator over stored [`SpanContext`]s. - pub fn spans(&self) -> impl Iterator { + pub fn spans(&self) -> impl Iterator + ExactSizeIterator { #[cfg(feature = "span")] return self.spans.iter(); #[cfg(not(feature = "span"))] From b661ee34a7a72e922d757562fecaee88f94e1614 Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Thu, 14 Apr 2022 14:08:26 +0200 Subject: [PATCH 2/2] fix clippy --- src/front/wgsl/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/front/wgsl/mod.rs b/src/front/wgsl/mod.rs index 147c9a45b9..ba176bc489 100644 --- a/src/front/wgsl/mod.rs +++ b/src/front/wgsl/mod.rs @@ -1290,7 +1290,7 @@ impl ParseError { pub fn labels(&self) -> impl Iterator + ExactSizeIterator + '_ { self.labels .iter() - .map(|(span, msg)| (span.clone(), msg.as_ref())) + .map(|&(ref span, ref msg)| (span.clone(), msg.as_ref())) } pub fn message(&self) -> &str {