[wgsl-in] Turn Error::Other into Error::Internal, to help devs.

Provide a textual message with `front::wgsl::Error::Internal`, so that
a developer who sees one of these errors can at least search the
source tree to find out where it came from.
This commit is contained in:
Jim Blandy
2023-10-19 18:30:26 -07:00
committed by Teodor Tanasoaia
parent dd8f814344
commit 946745d38f
2 changed files with 6 additions and 7 deletions

View File

@@ -233,7 +233,7 @@ pub enum Error<'a> {
},
FunctionReturnsVoid(Span),
InvalidWorkGroupUniformLoad(Span),
Other,
Internal(&'static str),
ExpectedConstExprConcreteIntegerScalar(Span),
ExpectedNonNegative(Span),
ExpectedPositiveArrayLength(Span),
@@ -667,10 +667,10 @@ impl<'a> Error<'a> {
labels: vec![(span, "".into())],
notes: vec!["passed type must be a workgroup pointer".into()],
},
Error::Other => ParseError {
message: "other error".to_string(),
Error::Internal(message) => ParseError {
message: "internal WGSL front end error".to_string(),
labels: vec![],
notes: vec![],
notes: vec![message.into()],
},
Error::ExpectedConstExprConcreteIntegerScalar(span) => ParseError {
message: "must be a const-expression that resolves to a concrete integer scalar (u32 or i32)".to_string(),

View File

@@ -2290,13 +2290,12 @@ impl Parser {
if !self.rules.is_empty() {
log::error!("Reached the end of global decl, but rule stack is not empty");
log::error!("Rules: {:?}", self.rules);
return Err(Error::Other);
return Err(Error::Internal("rule stack is not empty"));
};
match binding {
None => Ok(()),
// we had the attribute but no var?
Some(_) => Err(Error::Other),
Some(_) => Err(Error::Internal("we had the attribute but no var?")),
}
}