module: add check for missing injected arguments

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2024-04-07 13:54:46 -07:00
parent 34030faa9d
commit 393a3e5e5e

View file

@ -578,6 +578,12 @@ inline fn injectArgs(
continue :outer;
}
}
if (@typeInfo(arg.type) == .Pointer and @hasDecl(std.meta.Child(arg.type), "IsInjectedArgument")) {
// Argument is declared as injectable, but we do not have a value to inject for it.
// This can be the case if e.g. a Mod() parameter is specified, but that module is
// not registered.
@compileError("mach: cannot inject argument of type: " ++ @typeName(arg.type) ++ " - is it registered in your program's top-level `pub const modules = .{};`?");
}
// First standard argument
@field(args, arg.name) = std_args[std_args_index];