diff --git a/src/module/module.zig b/src/module/module.zig index a0551f6a..c40a1558 100644 --- a/src/module/module.zig +++ b/src/module/module.zig @@ -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];