diff --git a/src/ytdl_sub/script/types/function.py b/src/ytdl_sub/script/types/function.py index 566693c1..59aaf8e3 100644 --- a/src/ytdl_sub/script/types/function.py +++ b/src/ytdl_sub/script/types/function.py @@ -108,6 +108,9 @@ class BuiltInFunction(Function, BuiltInFunctionType): return type(arg) def output_type(self) -> Type[Resolvable]: + if self.function_spec.return_type is ReturnableArgument: + generic_arg_index = self.function_spec.args.index(ReturnableArgument) + return self._arg_output_type(self.args[generic_arg_index]) if is_union(self.function_spec.return_type): union_types_list = [] for union_type in self.function_spec.return_type.__args__: diff --git a/tests/unit/script/functions/test_error_functions.py b/tests/unit/script/functions/test_error_functions.py index 71943a3d..9f1092b4 100644 --- a/tests/unit/script/functions/test_error_functions.py +++ b/tests/unit/script/functions/test_error_functions.py @@ -1,6 +1,7 @@ import re import pytest +from unit.script.conftest import single_variable_output from ytdl_sub.script.script import Script from ytdl_sub.script.utils.exceptions import UserThrownRuntimeError @@ -16,11 +17,9 @@ class TestErrorFunctions: Script({"throw_error": "{%assert(False, 'test this error message')}"}).resolve() def test_user_assert_passthrough(self): - output = ( - Script({"output": "{%assert(['a'], 'test this error message')}"}) - .resolve(update=True) - .get("output") - .native - ) - + output = single_variable_output("{%assert(['a'], 'test this error message')}") assert output == ["a"] + + def test_user_assert_passthrough_as_arg(self): + output = single_variable_output("{%int(%assert('123', 'test this error message'))}") + assert output == 123