diff --git a/src/front/wgsl/mod.rs b/src/front/wgsl/mod.rs index 511f6b66f9..ba176bc489 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(|&(ref span, ref 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"))]