diff --git a/library/proc_macro/src/lib.rs b/library/proc_macro/src/lib.rs index 4d6e7cb6671e8..e335fe1c70264 100644 --- a/library/proc_macro/src/lib.rs +++ b/library/proc_macro/src/lib.rs @@ -1648,7 +1648,7 @@ impl Literal { #[unstable(feature = "proc_macro_value", issue = "136652")] pub fn byte_character_value(&self) -> Result { self.0.symbol.with(|symbol| match self.0.kind { - bridge::LitKind::Char => unescape_byte(symbol) + bridge::LitKind::Byte => unescape_byte(symbol) .map_err(|err| ConversionErrorKind::FailedToUnescape(err.into())), _ => Err(ConversionErrorKind::InvalidLiteralKind), }) diff --git a/tests/ui/proc-macro/auxiliary/api/literal.rs b/tests/ui/proc-macro/auxiliary/api/literal.rs index 6a95dcf0d3a43..176a05fa4264c 100644 --- a/tests/ui/proc-macro/auxiliary/api/literal.rs +++ b/tests/ui/proc-macro/auxiliary/api/literal.rs @@ -1,6 +1,6 @@ // ignore-tidy-linelength -use proc_macro::Literal; +use proc_macro::{EscapeError, Literal, ConversionErrorKind}; pub fn test() { test_display_literal(); @@ -111,4 +111,17 @@ fn test_literal_value() { { assert_eq!(Literal::f32_unsuffixed(15.).f16_value().map(|f| f.to_string()), Ok("15".to_string())); } + + assert_eq!( + Literal::character('A').byte_character_value(), + Err(ConversionErrorKind::InvalidLiteralKind), + ); + assert_eq!( + Literal::character('é').byte_character_value(), + Err(ConversionErrorKind::InvalidLiteralKind), + ); + assert_eq!( + Literal::byte_character(b'B').byte_character_value(), + Ok(b'B') + ); } diff --git a/tests/ui/proc-macro/auxiliary/api/proc_macro_api_tests.rs b/tests/ui/proc-macro/auxiliary/api/proc_macro_api_tests.rs index c72e58cc8f80b..bc26d156308ef 100644 --- a/tests/ui/proc-macro/auxiliary/api/proc_macro_api_tests.rs +++ b/tests/ui/proc-macro/auxiliary/api/proc_macro_api_tests.rs @@ -4,6 +4,7 @@ #![feature(proc_macro_value)] #![feature(f16)] #![feature(cfg_target_has_reliable_f16_f128)] +#![feature(rustc_private)] #![deny(dead_code)] // catch if a test function is never called extern crate proc_macro;