summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2017-10-25 21:21:38 +0200
committerBenjamin Otte <otte@redhat.com>2017-10-30 02:58:03 +0100
commit5bb7c2ecc3f1fa238ff8a8486bec30809eda18b2 (patch)
tree2f4c49aeefcf199e7a0bb92e70689af07c8102d3
parent651b5bb9b6bdad50ac27867e164c0de880047dd5 (diff)
downloadgtk+-5bb7c2ecc3f1fa238ff8a8486bec30809eda18b2.tar.gz
gskslpreprocessor: Error if #endif is missing
-rw-r--r--gsk/gskslpreprocessor.c9
-rw-r--r--testsuite/gsksl/errors/missing-endif-after-if-0.glsl6
-rw-r--r--testsuite/gsksl/errors/missing-endif-after-if-1.glsl6
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 ()
+{
+}