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,
];
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 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 {
ast::StateSpace::Reg => Ok(PRIVATE_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::ParamFunc => Err(TranslateError::Todo),
ast::StateSpace::ParamFunc => Err(TranslateError::Todo("".to_string())),
ast::StateSpace::Local => Ok(PRIVATE_ADDRESS_SPACE),
ast::StateSpace::Global => Ok(GLOBAL_ADDRESS_SPACE),
ast::StateSpace::Const => Ok(CONSTANT_ADDRESS_SPACE),
ast::StateSpace::Shared => Ok(SHARED_ADDRESS_SPACE),
ast::StateSpace::SharedCta => Err(TranslateError::Todo),
ast::StateSpace::SharedCluster => Err(TranslateError::Todo),
ast::StateSpace::SharedCta => Err(TranslateError::Todo("".to_string())),
ast::StateSpace::SharedCluster => Err(TranslateError::Todo("".to_string())),
}
}

View File

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