diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-02-14 20:12:05 +1100 | 
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-02-15 14:46:08 +1100 | 
| commit | 25ed6e43b0ea03ca48692741624f3e70d717ea43 (patch) | |
| tree | 7c4dc20f60c6c62d239cd710400998f405ab1bd8 /library/proc_macro | |
| parent | 332c57723a03e97497d6fba6636e31c2e41fefe9 (diff) | |
| download | rust-25ed6e43b0ea03ca48692741624f3e70d717ea43.tar.gz rust-25ed6e43b0ea03ca48692741624f3e70d717ea43.zip | |
Add `ErrorGuaranteed` to `ast::LitKind::Err`, `token::LitKind::Err`.
This mostly works well, and eliminates a couple of delayed bugs. One annoying thing is that we should really also add an `ErrorGuaranteed` to `proc_macro::bridge::LitKind::Err`. But that's difficult because `proc_macro` doesn't have access to `ErrorGuaranteed`, so we have to fake it.
Diffstat (limited to 'library/proc_macro')
| -rw-r--r-- | library/proc_macro/src/bridge/mod.rs | 8 | ||||
| -rw-r--r-- | library/proc_macro/src/lib.rs | 2 | 
2 files changed, 7 insertions, 3 deletions
| diff --git a/library/proc_macro/src/bridge/mod.rs b/library/proc_macro/src/bridge/mod.rs index 55e24b6491c..9b337f23867 100644 --- a/library/proc_macro/src/bridge/mod.rs +++ b/library/proc_macro/src/bridge/mod.rs @@ -337,7 +337,11 @@ pub enum LitKind { ByteStrRaw(u8), CStr, CStrRaw(u8), - Err, + // This should have an `ErrorGuaranteed`, except that type isn't available + // in this crate. (Imagine it is there.) Hence the `WithGuar` suffix. Must + // only be constructed in `LitKind::from_internal`, where an + // `ErrorGuaranteed` is available. + ErrWithGuar, } rpc_encode_decode!( @@ -352,7 +356,7 @@ rpc_encode_decode!( ByteStrRaw(n), CStr, CStrRaw(n), - Err, + ErrWithGuar, } ); diff --git a/library/proc_macro/src/lib.rs b/library/proc_macro/src/lib.rs index 90b76cbc26e..7c492941713 100644 --- a/library/proc_macro/src/lib.rs +++ b/library/proc_macro/src/lib.rs @@ -1451,7 +1451,7 @@ impl Literal { f(&["cr", hashes, "\"", symbol, "\"", hashes, suffix]) } - bridge::LitKind::Integer | bridge::LitKind::Float | bridge::LitKind::Err => { + bridge::LitKind::Integer | bridge::LitKind::Float | bridge::LitKind::ErrWithGuar => { f(&[symbol, suffix]) } }) | 
