From 88b50ba728b1f57ee4084193814ef1c35ee4b21b Mon Sep 17 00:00:00 2001 From: Ivar Fatland Date: Thu, 1 Oct 2026 22:18:32 +0200 Subject: [PATCH] fix scanner_print_errors --- cig.h | 2 +- test_scanner.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cig.h b/cig.h index 635b36e..b453d8d 100644 --- a/cig.h +++ b/cig.h @@ -338,7 +338,7 @@ scan_result_t scan_f32(scanner_t *s); scan_result_t scan_identifier(scanner_t *s); scan_result_t scan_string_literal(scanner_t *s); bool scanner_print_errors_func(FILE *fp, scan_result_t const *results, int results_len); -#define scanner_print_errors(FP, ...) scanner_print_errors_func(FP, &(scan_result_t[]){__VA_ARGS__}, sizeof((scan_result_t[]){__VA_ARGS__})) +#define scanner_print_errors(FP, ...) scanner_print_errors_func(FP, (scan_result_t const []){__VA_ARGS__}, sizeof((scan_result_t[]){__VA_ARGS__}) / sizeof(((scan_result_t[]){__VA_ARGS__})[0])) bool looks_like_float(scanner_t *s); bool looks_like_int(scanner_t *s); diff --git a/test_scanner.c b/test_scanner.c index b507d9c..03c292d 100644 --- a/test_scanner.c +++ b/test_scanner.c @@ -1,5 +1,6 @@ #include #include +#include #include "cig.h" Test(scanner, looks_like_float) { @@ -58,12 +59,17 @@ Test(scanner, print_errors) { "+. false\n" "abc false\n" "+x false\n"; + FILE *f = tmpfile(); with_borrow(allocator) { - scanner_t scanner = make_scanner("test", buffer, allocator); - while (!scan_eof(&scanner)) { - // TODO - cr_assert(false); - } + scanner_t scanner = make_scanner(__FILE__, buffer, allocator); + scan_result_t res1 = scan_error(&scanner, "ignore this\n"); + scan_result_t res2 = scan_error(&scanner, "and this\n"); + scan_result_t res3 = scan_value(.i64=10); + scan_result_t res4 = scan_value(.string_literal="foobar"); + + cr_assert(scanner_print_errors(f, res1, res2)); + cr_assert(scanner_print_errors(f, res1, res2, res3, res4)); + cr_assert(!scanner_print_errors(f, res3, res4)); } }