diff --git a/naga/src/diagnostic_filter.rs b/naga/src/diagnostic_filter.rs index 16b8de6699..25fcc664f3 100644 --- a/naga/src/diagnostic_filter.rs +++ b/naga/src/diagnostic_filter.rs @@ -201,10 +201,10 @@ impl IntoIterator for DiagnosticFilterMap { } } -/// An error returned by [`DiagnosticFilterMap::add`] when it encounters conflicting rules. +/// An error returned when conflicting rules are present. #[cfg(feature = "wgsl-in")] #[derive(Clone, Debug)] -pub(crate) struct ConflictingDiagnosticRuleError { +pub struct ConflictingDiagnosticRuleError { pub triggering_rule_spans: [Span; 2], } diff --git a/naga/src/front/wgsl/error.rs b/naga/src/front/wgsl/error.rs index 1123caff6a..12c43a44d2 100644 --- a/naga/src/front/wgsl/error.rs +++ b/naga/src/front/wgsl/error.rs @@ -174,7 +174,7 @@ pub enum InvalidAssignmentType { } #[derive(Clone, Debug)] -pub(crate) enum Error<'a> { +pub enum Error<'a> { Unexpected(Span, ExpectedToken<'a>), UnexpectedComponents(Span), UnexpectedOperationInConstContext(Span), @@ -419,7 +419,7 @@ impl From for Error<'_> { /// Used for diagnostic refinement in [`Error::DiagnosticAttributeNotSupported`]. #[derive(Clone, Copy, Debug)] -pub(crate) enum DiagnosticAttributeNotSupportedPosition { +pub enum DiagnosticAttributeNotSupportedPosition { SemicolonInModulePosition, Other { display_plural: &'static str }, } @@ -431,7 +431,7 @@ impl From<&'static str> for DiagnosticAttributeNotSupportedPosition { } #[derive(Clone, Debug)] -pub(crate) struct AutoConversionError { +pub struct AutoConversionError { pub dest_span: Span, pub dest_type: String, pub source_span: Span, @@ -439,7 +439,7 @@ pub(crate) struct AutoConversionError { } #[derive(Clone, Debug)] -pub(crate) struct AutoConversionLeafScalarError { +pub struct AutoConversionLeafScalarError { pub dest_span: Span, pub dest_scalar: String, pub source_span: Span, @@ -447,7 +447,7 @@ pub(crate) struct AutoConversionLeafScalarError { } #[derive(Clone, Debug)] -pub(crate) struct ConcretizationFailedError { +pub struct ConcretizationFailedError { pub expr_span: Span, pub expr_type: String, pub scalar: String, @@ -457,7 +457,7 @@ pub(crate) struct ConcretizationFailedError { impl<'a> Error<'a> { #[cold] #[inline(never)] - pub(crate) fn as_parse_error(&self, source: &'a str) -> ParseError { + pub fn as_parse_error(&self, source: &'a str) -> ParseError { match *self { Error::Unexpected(unexpected_span, expected) => { let expected_str = match expected { diff --git a/naga/src/front/wgsl/mod.rs b/naga/src/front/wgsl/mod.rs index 1080392cc6..825ada591e 100644 --- a/naga/src/front/wgsl/mod.rs +++ b/naga/src/front/wgsl/mod.rs @@ -11,7 +11,7 @@ mod parse; #[cfg(test)] mod tests; -pub use crate::front::wgsl::error::ParseError; +pub use crate::front::wgsl::error::{Error, ParseError}; pub use crate::front::wgsl::parse::directive::language_extension::{ ImplementedLanguageExtension, LanguageExtension, UnimplementedLanguageExtension, }; @@ -20,7 +20,6 @@ pub use crate::front::wgsl::parse::Options; use alloc::boxed::Box; use thiserror::Error; -use crate::front::wgsl::error::Error; use crate::front::wgsl::lower::Lowerer; use crate::front::wgsl::parse::Parser; use crate::Scalar; @@ -49,11 +48,7 @@ impl Frontend { } } - pub fn parse(&mut self, source: &str) -> core::result::Result { - self.inner(source).map_err(|x| x.as_parse_error(source)) - } - - fn inner<'a>(&mut self, source: &'a str) -> Result<'a, crate::Module> { + pub fn parse<'a>(&mut self, source: &'a str) -> Result<'a, crate::Module> { let tu = self.parser.parse(source, &self.options)?; let index = index::Index::generate(&tu)?; let module = Lowerer::new(&index).lower(tu)?; @@ -74,7 +69,9 @@ impl Frontend { /// /// pub fn parse_str(source: &str) -> core::result::Result { - Frontend::new().parse(source) + Frontend::new() + .parse(source) + .map_err(|e| e.as_parse_error(source)) } #[cfg(test)] diff --git a/naga/src/front/wgsl/tests.rs b/naga/src/front/wgsl/tests.rs index bdcd35d8a8..eac92ecb95 100644 --- a/naga/src/front/wgsl/tests.rs +++ b/naga/src/front/wgsl/tests.rs @@ -682,7 +682,7 @@ fn parse_repeated_attributes() { let span_end = span_start + name_length; let expected_span = Span::new(span_start, span_end); - let result = Frontend::new().inner(&shader); + let result = Frontend::new().parse(&shader); assert!(matches!( *result.unwrap_err(), Error::RepeatedAttribute(span) if span == expected_span @@ -698,7 +698,7 @@ fn parse_missing_workgroup_size() { }; let shader = "@compute fn vs() -> vec4 { return vec4(0.0); }"; - let result = Frontend::new().inner(shader); + let result = Frontend::new().parse(shader); assert!(matches!( *result.unwrap_err(), Error::MissingWorkgroupSize(span) if span == Span::new(1, 8) diff --git a/naga/tests/naga/snapshots.rs b/naga/tests/naga/snapshots.rs index 32e2f5e028..b58de0b2b0 100644 --- a/naga/tests/naga/snapshots.rs +++ b/naga/tests/naga/snapshots.rs @@ -837,7 +837,8 @@ fn convert_snapshots_wgsl() { Ok(mut module) => check_targets(&input, &mut module, Some(&source)), Err(e) => panic!( "{}", - e.emit_to_string_with_path(&source, input.input_path()) + e.as_parse_error(&source) + .emit_to_string_with_path(&source, input.input_path()) ), } }