authorgravatar for sahnvour@pm.meSahnvour <sahnvour@pm.me> 2019-03-10 14:43:35+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-03-10 14:56:35-04:00
logfa9fcab620ada24d9bb7c51a86a1a8944056da02
tree21fca241d37142a1e3f7afe0367a4c94f1d8a294
parent0a8a7a57e7a6b4b5a0d1523bde57b2a4b93fa50a

translate-c: add support for integer suffixes on 0 (zero) litteral inside macro definitions


2 files changed, 49 insertions(+), 0 deletions(-)

src/c_tokenizer.cpp+7
......@@ -362,6 +362,13 @@ void tokenize_c_macro(CTokenize *ctok, const uint8_t *c) {
362362 ctok->cur_tok->id = CTokIdNumLitFloat;
363363 buf_append_char(&ctok->buf, '.');
364364 break;
365 case 'l':
366 case 'L':
367 case 'u':
368 case 'U':
369 c -= 1;
370 ctok->state = CTokStateDecimal;
371 continue;
365372 default:
366373 c -= 1;
367374 ctok->state = CTokStateOctal;
test/translate_c.zig+42
......@@ -1425,6 +1425,48 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
14251425 \\pub export fn bar() void {}
14261426 );
14271427
1428 cases.addC("u integer suffix after 0 (zero) in macro definition",
1429 "#define ZERO 0U"
1430 ,
1431 "pub const ZERO = c_uint(0);"
1432 );
1433
1434 cases.addC("l integer suffix after 0 (zero) in macro definition",
1435 "#define ZERO 0L"
1436 ,
1437 "pub const ZERO = c_long(0);"
1438 );
1439
1440 cases.addC("ul integer suffix after 0 (zero) in macro definition",
1441 "#define ZERO 0UL"
1442 ,
1443 "pub const ZERO = c_ulong(0);"
1444 );
1445
1446 cases.addC("lu integer suffix after 0 (zero) in macro definition",
1447 "#define ZERO 0LU"
1448 ,
1449 "pub const ZERO = c_ulong(0);"
1450 );
1451
1452 cases.addC("ll integer suffix after 0 (zero) in macro definition",
1453 "#define ZERO 0LL"
1454 ,
1455 "pub const ZERO = c_longlong(0);"
1456 );
1457
1458 cases.addC("ull integer suffix after 0 (zero) in macro definition",
1459 "#define ZERO 0ULL"
1460 ,
1461 "pub const ZERO = c_ulonglong(0);"
1462 );
1463
1464 cases.addC("llu integer suffix after 0 (zero) in macro definition",
1465 "#define ZERO 0LLU"
1466 ,
1467 "pub const ZERO = c_ulonglong(0);"
1468 );
1469
14281470 // cases.add("empty array with initializer",
14291471 // "int a[4] = {};"
14301472 // ,