From 515034ef3bb5651f1ab376ca5ec9d843b3ac3503 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Tue, 13 Aug 2019 17:48:27 -0700
Subject: decl: Allow _Static_assert with no message

This is accepted for C2X[0].

[0] http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2265.pdf
---
 decl.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/decl.c b/decl.c
index 1020c2a..8eae666 100644
--- a/decl.c
+++ b/decl.c
@@ -874,13 +874,16 @@ staticassert(struct scope *s)
 		return false;
 	expect(TLPAREN, "after _Static_assert");
 	c = intconstexpr(s, true);
-	expect(TCOMMA, "after static assertion expression");
-	e = assignexpr(s);
-	if (!e->decayed || e->base->kind != EXPRSTRING)
-		error(&tok.loc, "expected string literal after static assertion expression");
-	if (!c)
-		error(&tok.loc, "static assertion failed: %.*s", (int)e->base->string.size, e->base->string.data);
-	expect(TRPAREN, "after static assertion message");
+	if (consume(TCOMMA)) {
+		e = assignexpr(s);
+		if (!e->decayed || e->base->kind != EXPRSTRING)
+			error(&tok.loc, "expected string literal after static assertion expression");
+		if (!c)
+			error(&tok.loc, "static assertion failed: %.*s", (int)e->base->string.size, e->base->string.data);
+	} else if (!c) {
+		error(&tok.loc, "static assertion failed");
+	}
+	expect(TRPAREN, "after static assertion");
 	expect(TSEMICOLON, "after static assertion");
 	return true;
 }
-- 
cgit v1.2.3