@@ -11,7 +11,9 @@ 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:: {
15+ PhpNameContext , PhpRename , RenameRule , Visibility , ident_to_php_name, validate_php_name,
16+ } ;
1517use crate :: prelude:: * ;
1618
1719const INTERNAL_INTERFACE_NAME_PREFIX : & str = "PhpInterface" ;
@@ -196,7 +198,10 @@ impl<'a> Parse<'a, InterfaceData<'a>> for ItemTrait {
196198 fn parse ( & ' a mut self ) -> Result < InterfaceData < ' a > > {
197199 let attrs = TraitAttributes :: from_attributes ( & self . attrs ) ?;
198200 let ident = & self . ident ;
199- let name = attrs. rename . rename ( ident. to_string ( ) , RenameRule :: Pascal ) ;
201+ let name = attrs
202+ . rename
203+ . rename ( ident_to_php_name ( ident) , RenameRule :: Pascal ) ;
204+ validate_php_name ( & name, PhpNameContext :: Interface ) ;
200205 let docs = get_docs ( & attrs. attrs ) ?;
201206 self . attrs . clean_php ( ) ;
202207 let interface_name = format_ident ! ( "{INTERNAL_INTERFACE_NAME_PREFIX}{ident}" ) ;
@@ -277,16 +282,12 @@ fn parse_trait_item_fn(
277282 modifiers. insert ( MethodModifier :: Static ) ;
278283 }
279284
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,
285+ let method_name = php_attr. rename . rename (
286+ ident_to_php_name ( & fn_item. sig . ident ) ,
287+ change_case. unwrap_or ( RenameRule :: Camel ) ,
289288 ) ;
289+ validate_php_name ( & method_name, PhpNameContext :: Method ) ;
290+ let f = Function :: new ( & fn_item. sig , method_name, args, php_attr. optional , docs) ;
290291
291292 if php_attr. constructor . is_present ( ) {
292293 Ok ( MethodKind :: Constructor ( f) )
@@ -336,9 +337,10 @@ fn parse_trait_item_const(
336337
337338 let attr = PhpConstAttribute :: from_attributes ( & const_item. attrs ) ?;
338339 let name = attr. rename . rename (
339- const_item. ident . to_string ( ) ,
340+ ident_to_php_name ( & const_item. ident ) ,
340341 change_case. unwrap_or ( RenameRule :: ScreamingSnake ) ,
341342 ) ;
343+ validate_php_name ( & name, PhpNameContext :: Constant ) ;
342344 let docs = get_docs ( & attr. attrs ) ?;
343345 const_item. attrs . clean_php ( ) ;
344346
0 commit comments