| ... | ... | @@ -83,12 +83,20 @@ fn do(writer: anytype, comptime value: astgen.Value, data: anytype, ctx: anytype |
| 83 | 83 | .@"if" => { |
| 84 | 84 | comptime assertEqual(v.args.len, 1); |
| 85 | 85 | const x = search(v.args[0], data); |
| 86 | | if (x) try do(writer, body, data, ctx, indent, flag1); |
| 86 | switch (@typeInfo(@TypeOf(x))) { |
| 87 | .Bool => if (x) try do(writer, body, data, ctx, indent, flag1), |
| 88 | .Optional => if (x) |_| try do(writer, body, data, ctx, indent, flag1), |
| 89 | else => unreachable, |
| 90 | } |
| 87 | 91 | }, |
| 88 | 92 | .ifnot => { |
| 89 | 93 | comptime assertEqual(v.args.len, 1); |
| 90 | 94 | const x = search(v.args[0], data); |
| 91 | | if (!x) try do(writer, body, data, ctx, indent, flag1); |
| 95 | switch (@typeInfo(@TypeOf(x))) { |
| 96 | .Bool => if (x) {} else try do(writer, body, data, ctx, indent, flag1), |
| 97 | .Optional => if (x) |_| {} else try do(writer, body, data, ctx, indent, flag1), |
| 98 | else => unreachable, |
| 99 | } |
| 92 | 100 | }, |
| 93 | 101 | .ifequal => { |
| 94 | 102 | comptime assertEqual(v.args.len, 2); |