diff --git a/cc_macro.c b/cc_macro.c index 591f292..3ceb548 100644 --- a/cc_macro.c +++ b/cc_macro.c @@ -359,7 +359,8 @@ int macro_expression() void handle_define() { struct macro_list* hold; - struct token_list* expansion_end; + struct token_list* expansion_end = NULL; + struct token_list* line_start = macro_token; eat_current_token(); @@ -381,6 +382,12 @@ void handle_define() if ('\n' == macro_token->s[0]) { + if(NULL == expansion_end) + { + line_error_token(line_start); + fputs("#define missing actual definition\n", stderr); + exit(EXIT_FAILURE); + } expansion_end->next = NULL; return; } @@ -459,6 +466,16 @@ void macro_directive() } else { + if(!match("#include", macro_token->s)) + { + /* Put a big fat warning but see if we can just ignore */ + fputs(">>WARNING<<\n>>WARNING<<\n", stderr); + line_error_token(macro_token); + fputs("feature: ", stderr); + fputs(macro_token->s, stderr); + fputs(" unsupported in M2-Planet\nIgnoring line, may result in bugs\n>>WARNING<<\n>>WARNING<<\n\n", stderr); + } + /* unhandled macro directive; let's eat until a newline; om nom nom */ while(TRUE) { diff --git a/test/test.answers b/test/test.answers index c34528a..29dfc58 100644 --- a/test/test.answers +++ b/test/test.answers @@ -212,9 +212,9 @@ eb1f6aab09a1a4966f9f49a518d8aa03ca97aa7c46e443871d758a306671a85e test/results/t a2cbfd5f76d3be8049c6737e3fa02f191caf29b6885db006fa23f86e6eacc186 test/results/test0106-knight-posix-binary d75e450e2fcdf19df63f9d6a3fe5e032933e57b33f6f06b39a8ed2f3dc759f17 test/results/test0106-riscv64-binary 473cc504d6cba9eaf648abcf15c83a317ff3f4a7f08f5e8936e3b35b2cc4fbc6 test/results/test0106-x86-binary -af40eec9f8fedb23d073696a02e11e04bb5446ed97bcbd0b79bf9101fa4d7b23 test/results/test1000-aarch64-binary -6d6186142d7277b81442bfa92f2ca1954a65c301470031dd92570ced92b1f294 test/results/test1000-amd64-binary -e3749d1d25de39147008ca6c439dc6b8e426f05b7a0a39eb3a12b9f224f30042 test/results/test1000-armv7l-binary -5b1bf70269464323c50db4003a525b412498f2ab37ff9cf7d9753f1213012ac5 test/results/test1000-knight-posix-binary -5aff9455f74ba67f30a2275fa91820b269fed55ed93c51bab4183ad3b3d797b2 test/results/test1000-riscv64-binary -3ef12a7978ba55bc922316bdc31d1f15962ee954f31967ac8080e59bcafaf7f1 test/results/test1000-x86-binary +1071ba48b488d819219d499df231dbfa8c563651418810371bdc43e37ca9e5ce test/results/test1000-aarch64-binary +e2e37c4d5d15ca647699b2bd32858b842ce9718e780d7e5a7771087948d4e36a test/results/test1000-amd64-binary +4b6560f40038a37beaa6e02018a8058e42e48ae60f2e6cec6536fc8cf74aca1e test/results/test1000-armv7l-binary +e49004d44844da98f993af2f8536048c6b389e653d611c8dc27bde70ba026118 test/results/test1000-knight-posix-binary +c55cf7ffc36b8d81fa06b65a362f680b0d43d3527672b87e4150ebecd63d92b9 test/results/test1000-riscv64-binary +610050fdc4005e36c13d881e6eedc08c7a4710bd3ad9a1cef007e29958fdbf04 test/results/test1000-x86-binary diff --git a/test/test1000/proof.answer b/test/test1000/proof.answer index 57d0803..90ca619 100644 --- a/test/test1000/proof.answer +++ b/test/test1000/proof.answer @@ -1 +1 @@ -dad8b8bddecc2a7b9e23c387daf3e74e7268da415c56cecbaef1f4bae23aed20 test/test1000/proof +9ddace917535db9ad89c8aa035e3e90145de84cefb2f80b3c18cf36389b02633 test/test1000/proof