diff options
author | Benjamin Otte <otte@redhat.com> | 2017-10-25 21:21:38 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2017-10-30 02:58:03 +0100 |
commit | 5bb7c2ecc3f1fa238ff8a8486bec30809eda18b2 (patch) | |
tree | 2f4c49aeefcf199e7a0bb92e70689af07c8102d3 | |
parent | 651b5bb9b6bdad50ac27867e164c0de880047dd5 (diff) | |
download | gtk+-5bb7c2ecc3f1fa238ff8a8486bec30809eda18b2.tar.gz |
gskslpreprocessor: Error if #endif is missing
-rw-r--r-- | gsk/gskslpreprocessor.c | 9 | ||||
-rw-r--r-- | testsuite/gsksl/errors/missing-endif-after-if-0.glsl | 6 | ||||
-rw-r--r-- | testsuite/gsksl/errors/missing-endif-after-if-1.glsl | 6 |
3 files changed, 21 insertions, 0 deletions
diff --git a/gsk/gskslpreprocessor.c b/gsk/gskslpreprocessor.c index 6f748ffdfc..6a1c6fe321 100644 --- a/gsk/gskslpreprocessor.c +++ b/gsk/gskslpreprocessor.c @@ -295,6 +295,15 @@ gsk_sl_preprocessor_append_token (GskSlPreprocessor *preproc, return; } + if (gsk_sl_token_is (&pp->token, GSK_SL_TOKEN_EOF)) + { + while (gsk_sl_preprocessor_has_conditional (preproc)) + { + gsk_sl_preprocessor_pop_conditional (preproc); + gsk_sl_preprocessor_error_full (preproc, PREPROCESSOR, &pp->location, "Missing #endif."); + } + } + if (gsk_sl_preprocessor_in_ignored_conditional (preproc)) { gsk_sl_preprocessor_clear_token (pp); diff --git a/testsuite/gsksl/errors/missing-endif-after-if-0.glsl b/testsuite/gsksl/errors/missing-endif-after-if-0.glsl new file mode 100644 index 0000000000..91f3636006 --- /dev/null +++ b/testsuite/gsksl/errors/missing-endif-after-if-0.glsl @@ -0,0 +1,6 @@ +#if 0 + +void +main () +{ +} diff --git a/testsuite/gsksl/errors/missing-endif-after-if-1.glsl b/testsuite/gsksl/errors/missing-endif-after-if-1.glsl new file mode 100644 index 0000000000..d44b83052a --- /dev/null +++ b/testsuite/gsksl/errors/missing-endif-after-if-1.glsl @@ -0,0 +1,6 @@ +#if 1 + +void +main () +{ +} |