summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_macros/src/current_version.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
commit9918693037dce8aa4bb6f08741b6812923486c18 (patch)
tree21d2b40bec7e6a7ea664acee056eb3d08e15a1cf /compiler/rustc_macros/src/current_version.rs
parentReleasing progress-linux version 1.75.0+dfsg1-5~progress7.99u1. (diff)
downloadrustc-9918693037dce8aa4bb6f08741b6812923486c18.tar.xz
rustc-9918693037dce8aa4bb6f08741b6812923486c18.zip
Merging upstream version 1.76.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'compiler/rustc_macros/src/current_version.rs')
-rw-r--r--compiler/rustc_macros/src/current_version.rs37
1 files changed, 8 insertions, 29 deletions
diff --git a/compiler/rustc_macros/src/current_version.rs b/compiler/rustc_macros/src/current_version.rs
index 5e3b91c17..42ca60a6d 100644
--- a/compiler/rustc_macros/src/current_version.rs
+++ b/compiler/rustc_macros/src/current_version.rs
@@ -1,37 +1,16 @@
use proc_macro::TokenStream;
use proc_macro2::Span;
use quote::quote;
-use syn::parse::{Parse, ParseStream};
-use syn::{parenthesized, parse_macro_input, LitStr, Token};
-pub struct Input {
- variable: LitStr,
-}
-
-mod kw {
- syn::custom_keyword!(env);
-}
-
-impl Parse for Input {
- // Input syntax is `env!("CFG_RELEASE")` to facilitate grepping.
- fn parse(input: ParseStream<'_>) -> syn::Result<Self> {
- let paren;
- input.parse::<kw::env>()?;
- input.parse::<Token![!]>()?;
- parenthesized!(paren in input);
- let variable: LitStr = paren.parse()?;
- Ok(Input { variable })
- }
-}
-
-pub(crate) fn current_version(input: TokenStream) -> TokenStream {
- let input = parse_macro_input!(input as Input);
-
- TokenStream::from(match RustcVersion::parse_env_var(&input.variable) {
+pub(crate) fn current_version(_input: TokenStream) -> TokenStream {
+ let env_var = "CFG_RELEASE";
+ TokenStream::from(match RustcVersion::parse_cfg_release(env_var) {
Ok(RustcVersion { major, minor, patch }) => quote!(
+ // The produced literal has type `rustc_session::RustcVersion`.
Self { major: #major, minor: #minor, patch: #patch }
),
- Err(err) => syn::Error::new(Span::call_site(), err).into_compile_error(),
+ Err(err) => syn::Error::new(Span::call_site(), format!("{env_var} env var: {err}"))
+ .into_compile_error(),
})
}
@@ -42,8 +21,8 @@ struct RustcVersion {
}
impl RustcVersion {
- fn parse_env_var(env_var: &LitStr) -> Result<Self, Box<dyn std::error::Error>> {
- let value = proc_macro::tracked_env::var(env_var.value())?;
+ fn parse_cfg_release(env_var: &str) -> Result<Self, Box<dyn std::error::Error>> {
+ let value = proc_macro::tracked_env::var(env_var)?;
Self::parse_str(&value)
.ok_or_else(|| format!("failed to parse rustc version: {:?}", value).into())
}