From 97dee90956930f7c9e8dbe652c36e543c416e3a3 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 8 Aug 2021 21:20:20 -0700 Subject: [PATCH] add support for optionals in `#if` and `#ifnot` --- src/lib.zig | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib.zig b/src/lib.zig index 8e24c26b1b1739bb3967a52996890b2f4f87e1c2..d9040b1bad030183105b2c9b70585c2bd5010ebd 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -83,12 +83,20 @@ fn do(writer: anytype, comptime value: astgen.Value, data: anytype, ctx: anytype .@"if" => { comptime assertEqual(v.args.len, 1); const x = search(v.args[0], data); - if (x) try do(writer, body, data, ctx, indent, flag1); + switch (@typeInfo(@TypeOf(x))) { + .Bool => if (x) try do(writer, body, data, ctx, indent, flag1), + .Optional => if (x) |_| try do(writer, body, data, ctx, indent, flag1), + else => unreachable, + } }, .ifnot => { comptime assertEqual(v.args.len, 1); const x = search(v.args[0], data); - if (!x) try do(writer, body, data, ctx, indent, flag1); + switch (@typeInfo(@TypeOf(x))) { + .Bool => if (x) {} else try do(writer, body, data, ctx, indent, flag1), + .Optional => if (x) |_| {} else try do(writer, body, data, ctx, indent, flag1), + else => unreachable, + } }, .ifequal => { comptime assertEqual(v.args.len, 2); -- 2.54.0