@@ -176,6 +176,69 @@ pub(crate) fn is_excluded_from_default_params(class_name: Option<&TyName>, godot
176176 }
177177}
178178
179+ #[ rustfmt:: skip]
180+ pub ( crate ) fn keeps_get_prefix ( class_name : & TyName , method : & ClassMethod ) -> bool {
181+ // Also list those which have default parameters and can be called with 0 arguments. Those are anyway
182+ // excluded at the moment, but this is more robust if the outer logic changes.
183+
184+ match ( class_name. godot_ty . as_str ( ) , method. name . as_str ( ) ) {
185+ // For Object
186+ // https://docs.godotengine.org/en/stable/classes/class_object.html#methods
187+ | ( "Object" , "get_class" )
188+ | ( "Object" , "get_instance_id" ) // currently removed, but would be shadowed by Gd::instance_id().
189+ | ( "Object" , "get_script" )
190+ | ( "Object" , "get_script_instance" )
191+ // The following ones often have slight variations with parameters, so it's more consistent to have get_signal_list() and
192+ // get_signal_connection_list(signal). This may change in the future.
193+ | ( "Object" , "get_incoming_connections" )
194+ | ( "Object" , "get_meta_list" )
195+ | ( "Object" , "get_method_list" )
196+ | ( "Object" , "get_property_list" )
197+ | ( "Object" , "get_signal_list" )
198+
199+ // For Node
200+ // https://docs.godotengine.org/en/stable/classes/class_node.html#methods
201+ // TODO get_child_count?
202+
203+ // https://docs.godotengine.org/en/stable/classes/class_fileaccess.html#methods
204+ | ( "FileAccess" , "get_16" )
205+ | ( "FileAccess" , "get_32" )
206+ | ( "FileAccess" , "get_64" )
207+ | ( "FileAccess" , "get_8" )
208+ | ( "FileAccess" , "get_as_text" )
209+ | ( "FileAccess" , "get_csv_line" )
210+ | ( "FileAccess" , "get_double" )
211+ | ( "FileAccess" , "get_error" ) // If this has side effects, should definitely keep prefix. Not clear.
212+ | ( "FileAccess" , "get_float" )
213+ | ( "FileAccess" , "get_line" )
214+ | ( "FileAccess" , "get_open_error" )
215+ | ( "FileAccess" , "get_pascal_string" )
216+ | ( "FileAccess" , "get_real" )
217+ | ( "FileAccess" , "get_var" )
218+
219+ // https://docs.godotengine.org/en/stable/classes/class_streampeer.html#methods
220+ // do for 8,16,32,64 and u*
221+ | ( "StreamPeer" , "get_16" )
222+ | ( "StreamPeer" , "get_32" )
223+ | ( "StreamPeer" , "get_64" )
224+ | ( "StreamPeer" , "get_8" )
225+ | ( "StreamPeer" , "get_double" )
226+ | ( "StreamPeer" , "get_float" )
227+ | ( "StreamPeer" , "get_string" )
228+ | ( "StreamPeer" , "get_u16" )
229+ | ( "StreamPeer" , "get_u32" )
230+ | ( "StreamPeer" , "get_u64" )
231+ | ( "StreamPeer" , "get_u8" )
232+ | ( "StreamPeer" , "get_utf8_string" )
233+ | ( "StreamPeer" , "get_var" )
234+
235+ // Others that conflict with a verb:
236+ | ( "AnimationPlayer" , "get_queue" )
237+
238+ => true , _ => false ,
239+ }
240+ }
241+
179242/// True if builtin method is excluded. Does NOT check for type exclusion; use [`is_builtin_type_deleted`] for that.
180243pub ( crate ) fn is_builtin_deleted ( _class_name : & TyName , method : & BuiltinClassMethod ) -> bool {
181244 // Currently only deleted if codegen.
0 commit comments