Skip to content

Commit 762566f

Browse files
committed
lang: Handle invalid camel case ident more gracefully
1 parent 219023e commit 762566f

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

lang/syn/src/codegen/program/instruction.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::codegen::program::common::*;
22
use crate::parser;
33
use crate::Program;
44
use heck::CamelCase;
5-
use quote::quote;
5+
use quote::{quote, quote_spanned};
66

77
pub fn generate(program: &Program) -> proc_macro2::TokenStream {
88
let variants: Vec<proc_macro2::TokenStream> = program
@@ -11,8 +11,11 @@ pub fn generate(program: &Program) -> proc_macro2::TokenStream {
1111
.map(|ix| {
1212
let name = &ix.raw_method.sig.ident.to_string();
1313
let ix_cfgs = &ix.cfgs;
14-
let ix_name_camel =
15-
proc_macro2::Ident::new(&name.to_camel_case(), ix.raw_method.sig.ident.span());
14+
let Ok(ix_name_camel) = syn::parse_str::<syn::Ident>(&name.to_camel_case()) else {
15+
return quote_spanned! { ix.raw_method.sig.ident.span()=>
16+
compile_error!("failed to parse ix method name after conversion to camelCase");
17+
};
18+
};
1619
let raw_args: Vec<proc_macro2::TokenStream> = ix
1720
.args
1821
.iter()

0 commit comments

Comments
 (0)