aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/preprocess.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-08-30 00:39:45 +0900
committernsfisis <nsfisis@gmail.com>2025-08-30 00:39:45 +0900
commit194e87a88290a4b3025436709e1f3064aecd00cd (patch)
tree17b7a78ed9f0cb767b9caf8b4f98b5dc1b4c6055 /src/preprocess.c
parentf89dab5c45395f432d9b25abfba4ecbad0e3ce03 (diff)
downloadducc-194e87a88290a4b3025436709e1f3064aecd00cd.tar.gz
ducc-194e87a88290a4b3025436709e1f3064aecd00cd.tar.zst
ducc-194e87a88290a4b3025436709e1f3064aecd00cd.zip
feat: check invalid #elif* and #endif
Diffstat (limited to 'src/preprocess.c')
-rw-r--r--src/preprocess.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/preprocess.c b/src/preprocess.c
index 3f0161d..e47a390 100644
--- a/src/preprocess.c
+++ b/src/preprocess.c
@@ -1157,8 +1157,15 @@ static void preprocess_group_part(Preprocessor* pp) {
if (tok->kind == TokenKind_pp_directive_if || tok->kind == TokenKind_pp_directive_ifdef ||
tok->kind == TokenKind_pp_directive_ifndef) {
preprocess_if_section(pp);
+ } else if (tok->kind == TokenKind_pp_directive_elif || tok->kind == TokenKind_pp_directive_elifdef ||
+ tok->kind == TokenKind_pp_directive_elifndef || tok->kind == TokenKind_pp_directive_else ||
+ tok->kind == TokenKind_pp_directive_endif) {
+ fatal_error("%s:%d: unexpected '%s'; no corresponding '#if'*", tok->loc.filename, tok->loc.line,
+ token_kind_stringify(tok->kind));
} else if (tok->kind == TokenKind_pp_directive_include) {
preprocess_include_directive(pp);
+ } else if (tok->kind == TokenKind_pp_directive_embed) {
+ preprocess_embed_directive(pp);
} else if (tok->kind == TokenKind_pp_directive_define) {
preprocess_define_directive(pp);
} else if (tok->kind == TokenKind_pp_directive_undef) {