identifiers: Improve session_id! error messages

This commit is contained in:
Jonas Platte 2022-06-08 13:19:03 +02:00 committed by Jonas Platte
parent cb96caa064
commit c3435a39e4
3 changed files with 11 additions and 4 deletions

View File

@ -167,7 +167,7 @@ macro_rules! session_id {
($s:literal) => {{
const SESSION_ID: &$crate::SessionId = match $crate::SessionId::_priv_const_new($s) {
Ok(id) => id,
Err(_) => panic!("Invalid session ID"),
Err(e) => panic!("{}", e),
};
SESSION_ID

View File

@ -15,10 +15,17 @@ pub struct SessionId(str);
impl SessionId {
#[doc(hidden)]
pub const fn _priv_const_new(s: &str) -> Result<&Self, IdParseError> {
pub const fn _priv_const_new(s: &str) -> Result<&Self, &'static str> {
match validate_session_id(s) {
Ok(()) => Ok(Self::from_borrowed(s)),
Err(e) => Err(e),
Err(IdParseError::MaximumLengthExceeded) => {
Err("Invalid Session ID: exceeds 255 bytes")
}
Err(IdParseError::InvalidCharacters) => {
Err("Invalid Session ID: contains invalid characters")
}
Err(IdParseError::Empty) => Err("Invalid Session ID: empty"),
Err(_) => unreachable!(),
}
}
}

View File

@ -2,6 +2,6 @@ error[E0080]: evaluation of constant value failed
--> tests/identifiers/ui/03-invalid-new-id-macros.rs:2:13
|
2 | let _ = ruma_common::session_id!("invalid~");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'Invalid session ID', $DIR/tests/identifiers/ui/03-invalid-new-id-macros.rs:2:13
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'Invalid Session ID: contains invalid characters', $DIR/tests/identifiers/ui/03-invalid-new-id-macros.rs:2:13
|
= note: this error originates in the macro `$crate::panic::panic_2021` (in Nightly builds, run with -Z macro-backtrace for more info)