Skip to content

Commit fa50dab

Browse files
authored
fix: 🐛 resolved parser error because of missing return value (#498)
Added an else statement that directly calls or returns the vanilla function if `any_mod_hooked` is `false`.
1 parent 4b88d5d commit fa50dab

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

addons/mod_loader/_export_plugin/export_plugin.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ func _export_file(path: String, type: String, features: PackedStringArray) -> vo
2222
skip()
2323
add_file(
2424
path,
25-
hook_pre_processor.process_script_verbose(path, true).to_utf8_buffer(),
25+
hook_pre_processor.process_script(path, true).to_utf8_buffer(),
2626
false
2727
)

addons/mod_loader/internal/mod_hook_preprocessor.gd

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,11 +354,15 @@ static func build_mod_hook_string(
354354
var async_string := "_async" if is_async else ""
355355
var return_var := "var %s = " % "return_var" if not method_type.is_empty() or return_prop_usage == 131072 else ""
356356
var method_return := "return " if not method_type.is_empty() or return_prop_usage == 131072 else ""
357-
var hook_check := 'if ModLoaderStore.get("any_mod_hooked") and ModLoaderStore.any_mod_hooked:\n\t\t' if enable_hook_check else ""
357+
var hook_check := "if ModLoaderStore.any_mod_hooked:\n\t\t" if enable_hook_check else ""
358+
var hook_check_else := get_hook_check_else_string(
359+
method_return, await_string, method_prefix, method_name, method_arg_string_names_only
360+
) if enable_hook_check else ""
361+
358362

359363
return """
360364
{STATIC}func {METHOD_NAME}({METHOD_PARAMS}){RETURN_TYPE_STRING}:
361-
{HOOK_CHECK}{METHOD_RETURN}{AWAIT}_ModLoaderHooks.call_hooks{ASYNC}({METHOD_PREFIX}_{METHOD_NAME}, [{METHOD_ARGS}], {HOOK_ID})
365+
{HOOK_CHECK}{METHOD_RETURN}{AWAIT}_ModLoaderHooks.call_hooks{ASYNC}({METHOD_PREFIX}_{METHOD_NAME}, [{METHOD_ARGS}], {HOOK_ID}){HOOK_CHECK_ELSE}
362366
""".format({
363367
"METHOD_PREFIX": method_prefix,
364368
"METHOD_NAME": method_name,
@@ -372,6 +376,7 @@ static func build_mod_hook_string(
372376
"ASYNC": async_string,
373377
"HOOK_ID": hook_id,
374378
"HOOK_CHECK": hook_check,
379+
"HOOK_CHECK_ELSE": hook_check_else
375380
})
376381

377382

@@ -459,3 +464,21 @@ func collect_getters_and_setters(text: String) -> Dictionary:
459464
result[mat.get_string(4)] = true
460465

461466
return result
467+
468+
469+
static func get_hook_check_else_string(
470+
method_return: String,
471+
await_string: String,
472+
method_prefix: String,
473+
method_name: String,
474+
method_arg_string_names_only: String
475+
) -> String:
476+
return "\n\telse:\n\t\t{METHOD_RETURN}{AWAIT}{METHOD_PREFIX}_{METHOD_NAME}({METHOD_ARGS})".format(
477+
{
478+
"METHOD_RETURN": method_return,
479+
"AWAIT": await_string,
480+
"METHOD_PREFIX": method_prefix,
481+
"METHOD_NAME": method_name,
482+
"METHOD_ARGS": method_arg_string_names_only
483+
}
484+
)

0 commit comments

Comments
 (0)