Skip to content

Commit f415fe7

Browse files
committed
Escape local variables in generated methods, to avoid naming collisions with parameters
1 parent d5eed2a commit f415fe7

File tree

1 file changed

+45
-45
lines changed

1 file changed

+45
-45
lines changed

godot-codegen/src/class_generator.rs

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ fn make_constructor(class: &Class, ctx: &Context, class_name_str: &Literal) -> T
6969
quote! {
7070
pub fn singleton() -> Gd<Self> {
7171
unsafe {
72-
let class_name = StringName::from(#class_name_str);
73-
let object_ptr = sys::interface_fn!(global_get_singleton)(class_name.string_sys());
74-
Gd::from_obj_sys(object_ptr)
72+
let __class_name = StringName::from(#class_name_str);
73+
let __object_ptr = sys::interface_fn!(global_get_singleton)(__class_name.string_sys());
74+
Gd::from_obj_sys(__object_ptr)
7575
}
7676
}
7777
}
@@ -83,10 +83,10 @@ fn make_constructor(class: &Class, ctx: &Context, class_name_str: &Literal) -> T
8383
quote! {
8484
pub fn new() -> Gd<Self> {
8585
unsafe {
86-
let class_name = StringName::from(#class_name_str);
87-
let object_ptr = sys::interface_fn!(classdb_construct_object)(class_name.string_sys());
86+
let __class_name = StringName::from(#class_name_str);
87+
let __object_ptr = sys::interface_fn!(classdb_construct_object)(__class_name.string_sys());
8888
//let instance = Self { object_ptr };
89-
Gd::from_obj_sys(object_ptr)
89+
Gd::from_obj_sys(__object_ptr)
9090
}
9191
}
9292
}
@@ -96,9 +96,9 @@ fn make_constructor(class: &Class, ctx: &Context, class_name_str: &Literal) -> T
9696
#[must_use]
9797
pub fn new_alloc() -> Gd<Self> {
9898
unsafe {
99-
let class_name = StringName::from(#class_name_str);
100-
let object_ptr = sys::interface_fn!(classdb_construct_object)(class_name.string_sys());
101-
Gd::from_obj_sys(object_ptr)
99+
let __class_name = StringName::from(#class_name_str);
100+
let __object_ptr = sys::interface_fn!(classdb_construct_object)(__class_name.string_sys());
101+
Gd::from_obj_sys(__object_ptr)
102102
}
103103
}
104104
}
@@ -392,23 +392,23 @@ fn make_method_definition(method: &Method, class_name: &str, ctx: &mut Context)
392392
quote! {
393393
#vis fn #method_name( #receiver #(, #params )*, varargs: &[Variant]) #return_decl {
394394
unsafe {
395-
let class_name = StringName::from(#class_name);
396-
let method_name = StringName::from(#method_name_str);
397-
let method_bind = sys::interface_fn!(classdb_get_method_bind)(
398-
class_name.string_sys(),
399-
method_name.string_sys(),
395+
let __class_name = StringName::from(#class_name);
396+
let __method_name = StringName::from(#method_name_str);
397+
let __method_bind = sys::interface_fn!(classdb_get_method_bind)(
398+
__class_name.string_sys(),
399+
__method_name.string_sys(),
400400
#hash
401401
);
402-
let call_fn = sys::interface_fn!(object_method_bind_call);
402+
let __call_fn = sys::interface_fn!(object_method_bind_call);
403403

404-
let explicit_args = [
404+
let __explicit_args = [
405405
#( #arg_exprs ),*
406406
];
407-
let mut args = Vec::new();
408-
args.extend(explicit_args.iter().map(Variant::var_sys));
409-
args.extend(varargs.iter().map(Variant::var_sys));
407+
let mut __args = Vec::new();
408+
__args.extend(__explicit_args.iter().map(Variant::var_sys));
409+
__args.extend(varargs.iter().map(Variant::var_sys));
410410

411-
let args_ptr = args.as_ptr();
411+
let __args_ptr = __args.as_ptr();
412412

413413
#call
414414
}
@@ -419,19 +419,19 @@ fn make_method_definition(method: &Method, class_name: &str, ctx: &mut Context)
419419
quote! {
420420
#vis fn #method_name( #receiver, #( #params ),* ) #return_decl {
421421
unsafe {
422-
let class_name = StringName::from(#class_name);
423-
let method_name = StringName::from(#method_name_str);
424-
let method_bind = sys::interface_fn!(classdb_get_method_bind)(
425-
class_name.string_sys(),
426-
method_name.string_sys(),
422+
let __class_name = StringName::from(#class_name);
423+
let __method_name = StringName::from(#method_name_str);
424+
let __method_bind = sys::interface_fn!(classdb_get_method_bind)(
425+
__class_name.string_sys(),
426+
__method_name.string_sys(),
427427
#hash
428428
);
429-
let call_fn = sys::interface_fn!(object_method_bind_ptrcall);
429+
let __call_fn = sys::interface_fn!(object_method_bind_ptrcall);
430430

431-
let args = [
431+
let __args = [
432432
#( #arg_exprs ),*
433433
];
434-
let args_ptr = args.as_ptr();
434+
let __args_ptr = __args.as_ptr();
435435

436436
#call
437437
}
@@ -461,14 +461,14 @@ pub(crate) fn make_function_definition(
461461
quote! {
462462
pub fn #function_name( #( #params ),* ) #return_decl {
463463
let result = unsafe {
464-
let function_name = StringName::from(#function_name_str);
465-
let call_fn = sys::interface_fn!(variant_get_ptr_utility_function)(function_name.string_sys(), #hash);
466-
let call_fn = call_fn.unwrap_unchecked();
464+
let __function_name = StringName::from(#function_name_str);
465+
let __call_fn = sys::interface_fn!(variant_get_ptr_utility_function)(__function_name.string_sys(), #hash);
466+
let __call_fn = __call_fn.unwrap_unchecked();
467467

468-
let args = [
468+
let __args = [
469469
#( #arg_exprs ),*
470470
];
471-
let args_ptr = args.as_ptr();
471+
let __args_ptr = __args.as_ptr();
472472

473473
#call
474474
};
@@ -540,38 +540,38 @@ fn make_method_return(
540540
// TODO use Result instead of panic on error
541541
quote! {
542542
let variant = Variant::from_var_sys_init(|return_ptr| {
543-
let mut err = sys::default_call_error();
544-
call_fn(method_bind, self.object_ptr, args_ptr, args.len() as i64, return_ptr, std::ptr::addr_of_mut!(err));
545-
assert_eq!(err.error, sys::GDNATIVE_CALL_OK);
543+
let mut __err = sys::default_call_error();
544+
__call_fn(__method_bind, self.object_ptr, __args_ptr, __args.len() as i64, return_ptr, std::ptr::addr_of_mut!(__err));
545+
assert_eq!(__err.error, sys::GDNATIVE_CALL_OK);
546546
});
547547
#return_expr
548548
}
549549
}
550550
(true, None) => {
551551
// TODO use Result instead of panic on error
552552
quote! {
553-
let mut err = sys::default_call_error();
554-
call_fn(method_bind, self.object_ptr, args_ptr, args.len() as i64, std::ptr::null_mut(), std::ptr::addr_of_mut!(err));
555-
assert_eq!(err.error, sys::GDNATIVE_CALL_OK);
553+
let mut __err = sys::default_call_error();
554+
__call_fn(__method_bind, self.object_ptr, __args_ptr, __args.len() as i64, std::ptr::null_mut(), std::ptr::addr_of_mut!(__err));
555+
assert_eq!(__err.error, sys::GDNATIVE_CALL_OK);
556556
}
557557
}
558558
(false, Some(RustTy::EngineClass(return_ty))) => {
559559
quote! {
560560
<#return_ty>::from_sys_init_opt(|return_ptr| {
561-
call_fn(method_bind, self.object_ptr, args_ptr, return_ptr);
561+
__call_fn(__method_bind, self.object_ptr, __args_ptr, return_ptr);
562562
})
563563
}
564564
}
565565
(false, Some(return_ty)) => {
566566
quote! {
567567
<#return_ty as sys::GodotFfi>::from_sys_init(|return_ptr| {
568-
call_fn(method_bind, self.object_ptr, args_ptr, return_ptr);
568+
__call_fn(__method_bind, self.object_ptr, __args_ptr, return_ptr);
569569
})
570570
}
571571
}
572572
(false, None) => {
573573
quote! {
574-
call_fn(method_bind, self.object_ptr, args_ptr, std::ptr::null_mut());
574+
__call_fn(__method_bind, self.object_ptr, __args_ptr, std::ptr::null_mut());
575575
}
576576
}
577577
};
@@ -599,20 +599,20 @@ fn make_utility_return(
599599
Some(RustTy::EngineClass(return_ty)) => {
600600
quote! {
601601
<#return_ty>::from_sys_init_opt(|return_ptr| {
602-
call_fn(return_ptr, args_ptr, args.len() as i32);
602+
__call_fn(return_ptr, __args_ptr, __args.len() as i32);
603603
})
604604
}
605605
}
606606
Some(return_ty) => {
607607
quote! {
608608
<#return_ty as sys::GodotFfi>::from_sys_init(|return_ptr| {
609-
call_fn(return_ptr, args_ptr, args.len() as i32);
609+
__call_fn(return_ptr, __args_ptr, __args.len() as i32);
610610
})
611611
}
612612
}
613613
None => {
614614
quote! {
615-
call_fn(std::ptr::null_mut(), args_ptr, args.len() as i32);
615+
__call_fn(std::ptr::null_mut(), __args_ptr, __args.len() as i32);
616616
}
617617
}
618618
};

0 commit comments

Comments
 (0)