Allow messages for error_todo (#415)

This commit is contained in:
Violet
2025-07-16 15:54:40 -07:00
committed by GitHub
parent 039689253d
commit 7c6b95a8e3
2 changed files with 19 additions and 7 deletions

View File

@ -2336,7 +2336,7 @@ impl<'a> MethodEmitContext<'a> {
(control >> 12) & 0b1111, (control >> 12) & 0b1111,
]; ];
if components.iter().any(|&c| c > 7) { if components.iter().any(|&c| c > 7) {
return Err(TranslateError::Todo); return Err(TranslateError::Todo("".to_string()));
} }
let u32_type = get_scalar_type(self.context, ast::ScalarType::U32); let u32_type = get_scalar_type(self.context, ast::ScalarType::U32);
let v4u8_type = get_type(self.context, &ast::Type::Vector(4, ast::ScalarType::U8))?; let v4u8_type = get_type(self.context, &ast::Type::Vector(4, ast::ScalarType::U8))?;
@ -2775,15 +2775,15 @@ fn get_state_space(space: ast::StateSpace) -> Result<u32, TranslateError> {
match space { match space {
ast::StateSpace::Reg => Ok(PRIVATE_ADDRESS_SPACE), ast::StateSpace::Reg => Ok(PRIVATE_ADDRESS_SPACE),
ast::StateSpace::Generic => Ok(GENERIC_ADDRESS_SPACE), ast::StateSpace::Generic => Ok(GENERIC_ADDRESS_SPACE),
ast::StateSpace::Param => Err(TranslateError::Todo), ast::StateSpace::Param => Err(TranslateError::Todo("".to_string())),
ast::StateSpace::ParamEntry => Ok(CONSTANT_ADDRESS_SPACE), ast::StateSpace::ParamEntry => Ok(CONSTANT_ADDRESS_SPACE),
ast::StateSpace::ParamFunc => Err(TranslateError::Todo), ast::StateSpace::ParamFunc => Err(TranslateError::Todo("".to_string())),
ast::StateSpace::Local => Ok(PRIVATE_ADDRESS_SPACE), ast::StateSpace::Local => Ok(PRIVATE_ADDRESS_SPACE),
ast::StateSpace::Global => Ok(GLOBAL_ADDRESS_SPACE), ast::StateSpace::Global => Ok(GLOBAL_ADDRESS_SPACE),
ast::StateSpace::Const => Ok(CONSTANT_ADDRESS_SPACE), ast::StateSpace::Const => Ok(CONSTANT_ADDRESS_SPACE),
ast::StateSpace::Shared => Ok(SHARED_ADDRESS_SPACE), ast::StateSpace::Shared => Ok(SHARED_ADDRESS_SPACE),
ast::StateSpace::SharedCta => Err(TranslateError::Todo), ast::StateSpace::SharedCta => Err(TranslateError::Todo("".to_string())),
ast::StateSpace::SharedCluster => Err(TranslateError::Todo), ast::StateSpace::SharedCluster => Err(TranslateError::Todo("".to_string())),
} }
} }

View File

@ -40,7 +40,9 @@ quick_error! {
UntypedSymbol {} UntypedSymbol {}
MismatchedType {} MismatchedType {}
Unreachable {} Unreachable {}
Todo {} Todo(msg: String) {
display("TODO: {}", msg)
}
} }
} }
@ -161,6 +163,16 @@ fn error_unreachable() -> TranslateError {
TranslateError::Unreachable TranslateError::Unreachable
} }
#[cfg(debug_assertions)]
fn error_todo_msg<T: Into<String>>(msg: T) -> TranslateError {
unreachable!("{}", msg.into())
}
#[cfg(not(debug_assertions))]
fn error_todo_msg<T: Into<String>>(msg: T) -> TranslateError {
TranslateError::Todo(msg.into())
}
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
fn error_todo() -> TranslateError { fn error_todo() -> TranslateError {
unreachable!() unreachable!()
@ -168,7 +180,7 @@ fn error_todo() -> TranslateError {
#[cfg(not(debug_assertions))] #[cfg(not(debug_assertions))]
fn error_todo() -> TranslateError { fn error_todo() -> TranslateError {
TranslateError::Todo TranslateError::Todo("".to_string())
} }
#[cfg(debug_assertions)] #[cfg(debug_assertions)]