@@ -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 , ident. span ( ) ) ?;
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,16 @@ 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 (
290+ & method_name,
291+ PhpNameContext :: Method ,
292+ fn_item. sig . ident . span ( ) ,
293+ ) ?;
294+ let f = Function :: new ( & fn_item. sig , method_name, args, php_attr. optional , docs) ;
290295
291296 if php_attr. constructor . is_present ( ) {
292297 Ok ( MethodKind :: Constructor ( f) )
@@ -336,9 +341,10 @@ fn parse_trait_item_const(
336341
337342 let attr = PhpConstAttribute :: from_attributes ( & const_item. attrs ) ?;
338343 let name = attr. rename . rename (
339- const_item. ident . to_string ( ) ,
344+ ident_to_php_name ( & const_item. ident ) ,
340345 change_case. unwrap_or ( RenameRule :: ScreamingSnake ) ,
341346 ) ;
347+ validate_php_name ( & name, PhpNameContext :: Constant , const_item. ident . span ( ) ) ?;
342348 let docs = get_docs ( & attr. attrs ) ?;
343349 const_item. attrs . clean_php ( ) ;
344350
0 commit comments