From 89ac9d00f54c55796e00bf7282b50a0bea5eccbf Mon Sep 17 00:00:00 2001 From: Techatrix <19954306+Techatrix@users.noreply.github.com> Date: Fri, 20 Jan 2023 22:25:19 +0100 Subject: [PATCH] add more interpreter tests --- .../comptime_interpreter.zig | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/language_features/comptime_interpreter.zig b/tests/language_features/comptime_interpreter.zig index ae66b36..a110e9a 100644 --- a/tests/language_features/comptime_interpreter.zig +++ b/tests/language_features/comptime_interpreter.zig @@ -83,6 +83,39 @@ test "ComptimeInterpreter - if" { , .{ .simple = .bool }, .{ .simple = .bool_false }); } +test "ComptimeInterpreter - field access" { + if (true) return error.SkipZigTest; // TODO + try testExprCheck( + \\blk: { + \\ const foo = struct {alpha: u32, beta: bool} = undefined; + \\ break :blk foo.beta; + \\} + , .{ .simple = .bool }, null); +} + +test "ComptimeInterpreter - pointer operations" { + if (true) return error.SkipZigTest; // TODO + try testExprCheck( + \\blk: { + \\ const foo: []const u8 = ""; + \\ break :blk foo.len; + \\} + , .{ .simple = .usize }, .{ .bytes = "" }); + try testExprCheck( + \\blk: { + \\ const foo = true; + \\ break :blk &foo; + \\} + , @panic("TODO"), .{ .simple = .bool_true }); + try testExprCheck( + \\blk: { + \\ const foo = true; + \\ const bar = &foo; + \\ break :blk bar.*; + \\} + , @panic("TODO"), .{ .simple = .bool_true }); +} + test "ComptimeInterpreter - call return primitive type" { try testCallCheck( \\pub fn Foo() type {