Skip to content

Commit 8c1509f

Browse files
Fix registering constants when using expressions (#112)
1 parent 8d37afc commit 8c1509f

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

crates/macros/src/constant.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use crate::helpers::get_docs;
22
use anyhow::{bail, Result};
33
use darling::ToTokens;
4-
use proc_macro2::{Ident, Literal, TokenStream};
4+
use proc_macro2::TokenStream;
55
use quote::quote;
6-
use syn::ItemConst;
6+
use syn::{Expr, ItemConst};
77

88
use crate::STATE;
99

@@ -36,10 +36,9 @@ pub fn parser(input: ItemConst) -> Result<TokenStream> {
3636

3737
impl Constant {
3838
pub fn val_tokens(&self) -> TokenStream {
39-
syn::parse_str::<Literal>(&self.value)
40-
.map(|lit| lit.to_token_stream())
41-
.or_else(|_| syn::parse_str::<Ident>(&self.value).map(|ident| ident.to_token_stream()))
42-
.unwrap_or(quote! { Default::default() })
39+
let expr: Expr =
40+
syn::parse_str(&self.value).expect("failed to parse previously parsed expr");
41+
expr.to_token_stream()
4342
}
4443

4544
// pub fn get_flags(&self) -> TokenStream {

crates/macros/src/startup_function.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ fn build_constants(constants: &[Constant]) -> Vec<TokenStream> {
139139
let name = &constant.name;
140140
let val = constant.val_tokens();
141141
quote! {
142-
#val.register_constant(#name, module_number).unwrap();
142+
(#val).register_constant(#name, module_number).unwrap();
143143
}
144144
})
145145
.collect()

0 commit comments

Comments
 (0)