upgrade gut

This commit is contained in:
anyreso 2026-02-19 03:14:22 -05:00
parent 6e724f67fe
commit 82aeebfd35
201 changed files with 8547 additions and 3871 deletions

View file

@ -1,11 +1,18 @@
class CallParameters:
var p_name = null
var default = null
var vararg = false
func _init(n,d):
p_name = n
default = d
func get_signature():
if(vararg):
return "...args: Array"
else:
return str(p_name, "=", default)
# ------------------------------------------------------------------------------
# This class will generate method declaration lines based on method meta
@ -27,7 +34,6 @@ class CallParameters:
# default_args []
var _lgr = GutUtils.get_logger()
var default_vararg_arg_count = 10
const PARAM_PREFIX = 'p_'
# ------------------------------------------------------
@ -103,6 +109,7 @@ func _init():
_supported_defaults[TYPE_PACKED_FLOAT32_ARRAY] = 'PackedFloat32Array'
_supported_defaults[TYPE_PACKED_STRING_ARRAY] = 'PackedStringArray'
# ###############
# Private
# ###############
@ -117,7 +124,7 @@ func _make_stub_default(method, index):
return str('__gutdbl.default_val("', method, '",', index, ')')
func _make_arg_array(method_meta, override_size):
func _make_arg_array(method_meta):
var to_return = []
var has_unsupported_defaults = false
@ -127,17 +134,10 @@ func _make_arg_array(method_meta, override_size):
var dflt_text = _make_stub_default(method_meta.name, i)
to_return.append(CallParameters.new(PARAM_PREFIX + pname, dflt_text))
var extra_params = GutUtils.nvl(override_size, 0)
if(extra_params == 0):
if(method_meta.flags & METHOD_FLAG_VARARG):
extra_params = default_vararg_arg_count
# Add in extra parameters from stub settings.
if(extra_params > 0):
for i in range(method_meta.args.size(), extra_params):
var pname = str(PARAM_PREFIX, 'arg', i)
var dflt_text = _make_stub_default(method_meta.name, i)
to_return.append(CallParameters.new(pname, dflt_text))
if(method_meta.flags & METHOD_FLAG_VARARG):
var cp = CallParameters.new("args", "")
cp.vararg = true
to_return.append(cp)
return [has_unsupported_defaults, to_return];
@ -152,7 +152,7 @@ func _get_arg_text(arg_array):
var text = ''
for i in range(arg_array.size()):
text += str(arg_array[i].p_name, '=', arg_array[i].default)
text += arg_array[i].get_signature()
if(i != arg_array.size() -1):
text += ', '
@ -160,14 +160,20 @@ func _get_arg_text(arg_array):
# creates a call to the function in meta in the super's class.
func _get_super_call_text(method_name, args):
func _get_super_call_text(meta, args, singleton):
if meta.flags & MethodFlags.METHOD_FLAG_VIRTUAL_REQUIRED != 0:
return '__gutdbl.gut_ref.get_ref().get_logger().error("Cannot call super() because method %s is abstract."); return null' \
% meta.name
var params = ''
for i in range(args.size()):
params += args[i].p_name
if(i != args.size() -1):
params += ', '
return str('await super(', params, ')')
if(singleton != null):
return str('return await __gutdbl.get_singleton().', meta.name, '(', params, ')')
else:
return str('return await super(', params, ')')
func _get_spy_call_parameters_text(args):
@ -213,13 +219,12 @@ func _get_init_text(meta, args, method_params, param_array):
# types whose defaults are supported will have their values. If a datatype
# is not supported and the parameter has a default, a warning message will be
# printed and the declaration will return null.
func get_function_text(meta, override_size=null):
func get_function_text(meta, singleton=null):
var method_params = ''
var text = null
var result = _make_arg_array(meta, override_size)
var result = _make_arg_array(meta)
var has_unsupported = result[0]
var args = result[1]
var vararg_warning = ""
var param_array = _get_spy_call_parameters_text(args)
if(has_unsupported):
@ -233,20 +238,16 @@ func get_function_text(meta, override_size=null):
if(param_array == 'null'):
param_array = '[]'
if(meta.flags & METHOD_FLAG_VARARG and override_size == null):
vararg_warning = "__gutdbl.vararg_warning()\n\t"
if(method_params != null):
if(meta.name == '_init'):
text = _get_init_text(meta, args, method_params, param_array)
else:
var decleration = str('func ', meta.name, '(', method_params, '):')
text = _func_text.format({
"func_decleration":decleration,
"method_name":meta.name,
"param_array":param_array,
"super_call":_get_super_call_text(meta.name, args),
"vararg_warning":vararg_warning,
"func_decleration": decleration,
"method_name": meta.name,
"param_array": param_array,
"super_call": _get_super_call_text(meta, args, singleton),
})
return text
@ -258,3 +259,8 @@ func get_logger():
func set_logger(logger):
_lgr = logger
func get_arg_text(meta):
var parsed = _make_arg_array(meta)
return _get_arg_text(parsed[1])