From d3a57b96a9bff608f9488c5d0c3c19100997373d Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Tue, 15 Dec 2020 22:40:04 +0200 Subject: [PATCH 1/2] translate-c: detect parenthesized string literals --- src/translate_c.zig | 4 ++++ test/run_translated_c.zig | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/src/translate_c.zig b/src/translate_c.zig index 7469c6e996..e57a1952af 100644 --- a/src/translate_c.zig +++ b/src/translate_c.zig @@ -1797,6 +1797,10 @@ fn exprIsStringLiteral(expr: *const clang.Expr) bool { const op_expr = @ptrCast(*const clang.UnaryOperator, expr).getSubExpr(); return exprIsStringLiteral(op_expr); }, + .ParenExprClass => { + const op_expr = @ptrCast(*const clang.ParenExpr, expr).getSubExpr(); + return exprIsStringLiteral(op_expr); + }, else => return false, } } diff --git a/test/run_translated_c.zig b/test/run_translated_c.zig index eb0b7db50a..f51beb18bf 100644 --- a/test/run_translated_c.zig +++ b/test/run_translated_c.zig @@ -3,6 +3,13 @@ const tests = @import("tests.zig"); const nl = std.cstr.line_sep; pub fn addCases(cases: *tests.RunTranslatedCContext) void { + cases.add("parenthesized string literal", + \\void foo(const char *s) {} + \\int main(void) { + \\ foo(("bar")); + \\} + , ""); + cases.add("variable shadowing type type", \\#include \\int main() { From d877eb0e8d1b6327446c72a2db28b9a7c92c35bf Mon Sep 17 00:00:00 2001 From: data-man Date: Wed, 16 Dec 2020 07:38:36 +0500 Subject: [PATCH 2/2] Fix typo in math.order --- lib/std/math.zig | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/std/math.zig b/lib/std/math.zig index 4fc9eb40e6..a51cac6e7d 100644 --- a/lib/std/math.zig +++ b/lib/std/math.zig @@ -1169,7 +1169,7 @@ pub const Order = enum { return switch (self) { .lt => .gt, .eq => .eq, - .gt => .gt, + .gt => .lt, }; } @@ -1266,6 +1266,29 @@ test "compare between signed and unsigned" { testing.expect(compare(@as(u8, 1), .eq, @as(u8, 1))); } +test "order" { + testing.expect(order(0, 0) == .eq); + testing.expect(order(1, 0) == .gt); + testing.expect(order(-1, 0) == .lt); +} + +test "order.invert" { + testing.expect(Order.invert(order(0, 0)) == .eq); + testing.expect(Order.invert(order(1, 0)) == .lt); + testing.expect(Order.invert(order(-1, 0)) == .gt); +} + +test "order.compare" { + testing.expect(order(-1, 0).compare(.lt)); + testing.expect(order(-1, 0).compare(.lte)); + testing.expect(order(0, 0).compare(.lte)); + testing.expect(order(0, 0).compare(.eq)); + testing.expect(order(0, 0).compare(.gte)); + testing.expect(order(1, 0).compare(.gte)); + testing.expect(order(1, 0).compare(.gt)); + testing.expect(order(1, 0).compare(.neq)); +} + test "math.comptime" { comptime const v = sin(@as(f32, 1)) + ln(@as(f32, 5)); testing.expect(v == sin(@as(f32, 1)) + ln(@as(f32, 5)));