From 089c19bcf6051fde10e69b458d68c2ac79c6e49b Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sat, 14 Aug 2021 16:56:21 -0700 Subject: [PATCH] allow passing just `this` as the args to a replacement --- src/lib.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib.zig b/src/lib.zig index 9a4fc2d9d83078d0d333395a903dfdb7cde5c558..29d6276a8dfc53a74ff89df893bab2d8641d3433 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -164,13 +164,14 @@ fn do(alloc: *std.mem.Allocator, writer: anytype, comptime value: astgen.Value, } fn search(comptime args: []const []const u8, ctx: anytype) FieldSearch(@TypeOf(ctx), args) { + if (args.len == 0) return ctx; const f = @field(ctx, args[0]); if (args.len == 1) return f; return search(args[1..], f); } fn FieldSearch(comptime T: type, comptime args: []const []const u8) type { - return if (args.len == 1) Field(T, args[0]) else FieldSearch(Field(T, args[0]), args[1..]); + return if (args.len == 0) T else if (args.len == 1) Field(T, args[0]) else FieldSearch(Field(T, args[0]), args[1..]); } fn Field(comptime T: type, comptime field_name: []const u8) type { -- 2.54.0