authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-16 14:24:36-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-16 14:24:36-07:00
log755c5580267b246983fc0b2b2fb8dccfc261b9a0
tree4b30c2cbdfc00a59f461ec5992e02494e6ae10ba
parentf59069f3d0cf6204f15dbd9c707dbefebfe88e01
parentd877eb0e8d1b6327446c72a2db28b9a7c92c35bf

Merge remote-tracking branch 'origin/master' into llvm12


3 files changed, 35 insertions(+), 1 deletions(-)

lib/std/math.zig+24-1
......@@ -1169,7 +1169,7 @@ pub const Order = enum {
11691169 return switch (self) {
11701170 .lt => .gt,
11711171 .eq => .eq,
1172 .gt => .gt,
1172 .gt => .lt,
11731173 };
11741174 }
11751175
......@@ -1266,6 +1266,29 @@ test "compare between signed and unsigned" {
12661266 testing.expect(compare(@as(u8, 1), .eq, @as(u8, 1)));
12671267}
12681268
1269test "order" {
1270 testing.expect(order(0, 0) == .eq);
1271 testing.expect(order(1, 0) == .gt);
1272 testing.expect(order(-1, 0) == .lt);
1273}
1274
1275test "order.invert" {
1276 testing.expect(Order.invert(order(0, 0)) == .eq);
1277 testing.expect(Order.invert(order(1, 0)) == .lt);
1278 testing.expect(Order.invert(order(-1, 0)) == .gt);
1279}
1280
1281test "order.compare" {
1282 testing.expect(order(-1, 0).compare(.lt));
1283 testing.expect(order(-1, 0).compare(.lte));
1284 testing.expect(order(0, 0).compare(.lte));
1285 testing.expect(order(0, 0).compare(.eq));
1286 testing.expect(order(0, 0).compare(.gte));
1287 testing.expect(order(1, 0).compare(.gte));
1288 testing.expect(order(1, 0).compare(.gt));
1289 testing.expect(order(1, 0).compare(.neq));
1290}
1291
12691292test "math.comptime" {
12701293 comptime const v = sin(@as(f32, 1)) + ln(@as(f32, 5));
12711294 testing.expect(v == sin(@as(f32, 1)) + ln(@as(f32, 5)));
src/translate_c.zig+4
......@@ -1797,6 +1797,10 @@ fn exprIsStringLiteral(expr: *const clang.Expr) bool {
17971797 const op_expr = @ptrCast(*const clang.UnaryOperator, expr).getSubExpr();
17981798 return exprIsStringLiteral(op_expr);
17991799 },
1800 .ParenExprClass => {
1801 const op_expr = @ptrCast(*const clang.ParenExpr, expr).getSubExpr();
1802 return exprIsStringLiteral(op_expr);
1803 },
18001804 else => return false,
18011805 }
18021806}
test/run_translated_c.zig+7
......@@ -3,6 +3,13 @@ const tests = @import("tests.zig");
33const nl = std.cstr.line_sep;
44
55pub fn addCases(cases: *tests.RunTranslatedCContext) void {
6 cases.add("parenthesized string literal",
7 \\void foo(const char *s) {}
8 \\int main(void) {
9 \\ foo(("bar"));
10 \\}
11 , "");
12
613 cases.add("variable shadowing type type",
714 \\#include <stdlib.h>
815 \\int main() {