@@ -11,7 +11,7 @@ use quote::{ToTokens, format_ident, quote};
1111use syn:: { Expr , Ident , ItemTrait , Path , TraitItem , TraitItemConst , TraitItemFn } ;
1212
1313use crate :: impl_:: { FnBuilder , MethodModifier } ;
14- use crate :: parsing:: { PhpRename , RenameRule , Visibility } ;
14+ use crate :: parsing:: { PhpNameContext , PhpRename , RenameRule , Visibility , ident_to_php_name , validate_php_name } ;
1515use crate :: prelude:: * ;
1616
1717const INTERNAL_INTERFACE_NAME_PREFIX : & str = "PhpInterface" ;
@@ -196,7 +196,8 @@ impl<'a> Parse<'a, InterfaceData<'a>> for ItemTrait {
196196 fn parse ( & ' a mut self ) -> Result < InterfaceData < ' a > > {
197197 let attrs = TraitAttributes :: from_attributes ( & self . attrs ) ?;
198198 let ident = & self . ident ;
199- let name = attrs. rename . rename ( ident. to_string ( ) , RenameRule :: Pascal ) ;
199+ let name = attrs. rename . rename ( ident_to_php_name ( ident) , RenameRule :: Pascal ) ;
200+ validate_php_name ( & name, PhpNameContext :: Interface ) ;
200201 let docs = get_docs ( & attrs. attrs ) ?;
201202 self . attrs . clean_php ( ) ;
202203 let interface_name = format_ident ! ( "{INTERNAL_INTERFACE_NAME_PREFIX}{ident}" ) ;
@@ -277,16 +278,12 @@ fn parse_trait_item_fn(
277278 modifiers. insert ( MethodModifier :: Static ) ;
278279 }
279280
280- let f = Function :: new (
281- & fn_item. sig ,
282- php_attr. rename . rename (
283- fn_item. sig . ident . to_string ( ) ,
284- change_case. unwrap_or ( RenameRule :: Camel ) ,
285- ) ,
286- args,
287- php_attr. optional ,
288- docs,
281+ let method_name = php_attr. rename . rename (
282+ ident_to_php_name ( & fn_item. sig . ident ) ,
283+ change_case. unwrap_or ( RenameRule :: Camel ) ,
289284 ) ;
285+ validate_php_name ( & method_name, PhpNameContext :: Method ) ;
286+ let f = Function :: new ( & fn_item. sig , method_name, args, php_attr. optional , docs) ;
290287
291288 if php_attr. constructor . is_present ( ) {
292289 Ok ( MethodKind :: Constructor ( f) )
@@ -336,9 +333,10 @@ fn parse_trait_item_const(
336333
337334 let attr = PhpConstAttribute :: from_attributes ( & const_item. attrs ) ?;
338335 let name = attr. rename . rename (
339- const_item. ident . to_string ( ) ,
336+ ident_to_php_name ( & const_item. ident ) ,
340337 change_case. unwrap_or ( RenameRule :: ScreamingSnake ) ,
341338 ) ;
339+ validate_php_name ( & name, PhpNameContext :: Constant ) ;
342340 let docs = get_docs ( & attr. attrs ) ?;
343341 const_item. attrs . clean_php ( ) ;
344342
0 commit comments