From 73aaa11833e35b28c84696f4d69739adbb14467d Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Wed, 3 Nov 2021 11:57:01 +1100 Subject: [PATCH] oceani: add test for duplicate main functions Add a test so the check for duplicate main functions gets exercised. Signed-off-by: NeilBrown --- csrc/oceani-tests.mdc | 8 ++++++++ csrc/oceani.mdc | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/csrc/oceani-tests.mdc b/csrc/oceani-tests.mdc index 881fee7..7be2d25 100644 --- a/csrc/oceani-tests.mdc +++ b/csrc/oceani-tests.mdc @@ -824,12 +824,20 @@ various places that `type_err()` are called. foo := 4 print foo, bar + // trigger duplicate-main error + func main() + foo := 6 + print bar, foo + ###### output: type_err_const .tmp.code:4:16: error: expected number found string .tmp.code:6:8: error: name already declared: bar .tmp.code:4:8: info: this is where 'bar' was first declared .tmp.code:8:8: error: variable 'foo' redeclared .tmp.code:3:8: info: this is where 'foo' was first declared + .tmp.code:13:8: error: variable 'foo' redeclared + .tmp.code:3:8: info: this is where 'foo' was first declared + .tmp.code:13:8: "main" defined a second time ###### test: type_err_const1 const diff --git a/csrc/oceani.mdc b/csrc/oceani.mdc index fd753ce..59b8540 100644 --- a/csrc/oceani.mdc +++ b/csrc/oceani.mdc @@ -166,6 +166,12 @@ structures can be used. {NULL, 0, NULL, 0}, }; const char *options = "tpnbs"; + + static void pr_err(char *msg) + { + fprintf(stderr, "%s\n", msg); // NOTEST + } + int main(int argc, char *argv[]) { int fd; @@ -207,7 +213,7 @@ structures can be used. context.file_name = argv[optind]; len = lseek(fd, 0, 2); file = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0); - s = code_extract(file, file+len, NULL); + s = code_extract(file, file+len, pr_err); if (!s) { fprintf(stderr, "oceani: could not find any code in %s\n", argv[optind]); -- 2.43.0