summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/glsl/glcpp/glcpp-lex.l7
-rw-r--r--src/glsl/glcpp/tests/131-eof-without-newline.c1
-rw-r--r--src/glsl/glcpp/tests/131-eof-without-newline.c.expected1
-rw-r--r--src/glsl/glcpp/tests/132-eof-without-newline-define.c1
-rw-r--r--src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected2
-rw-r--r--src/glsl/glcpp/tests/133-eof-without-newline-comment.c1
-rw-r--r--src/glsl/glcpp/tests/133-eof-without-newline-comment.c.expected2
7 files changed, 13 insertions, 2 deletions
diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l
index 5f0bb324990..44547fde0e9 100644
--- a/src/glsl/glcpp/glcpp-lex.l
+++ b/src/glsl/glcpp/glcpp-lex.l
@@ -398,8 +398,11 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
return NEWLINE;
}
- /* Handle missing newline at EOF. */
-<INITIAL><<EOF>> {
+<INITIAL,COMMENT,DEFINE><<EOF>> {
+ if (YY_START == COMMENT)
+ glcpp_error(yylloc, yyextra, "Unterminated comment");
+ if (YY_START == DEFINE)
+ glcpp_error(yylloc, yyextra, "#define without macro name");
BEGIN DONE; /* Don't keep matching this rule forever. */
yyextra->lexing_directive = 0;
return NEWLINE;
diff --git a/src/glsl/glcpp/tests/131-eof-without-newline.c b/src/glsl/glcpp/tests/131-eof-without-newline.c
new file mode 100644
index 00000000000..240292dad01
--- /dev/null
+++ b/src/glsl/glcpp/tests/131-eof-without-newline.c
@@ -0,0 +1 @@
+this file ends with no newline \ No newline at end of file
diff --git a/src/glsl/glcpp/tests/131-eof-without-newline.c.expected b/src/glsl/glcpp/tests/131-eof-without-newline.c.expected
new file mode 100644
index 00000000000..57800306322
--- /dev/null
+++ b/src/glsl/glcpp/tests/131-eof-without-newline.c.expected
@@ -0,0 +1 @@
+this file ends with no newline
diff --git a/src/glsl/glcpp/tests/132-eof-without-newline-define.c b/src/glsl/glcpp/tests/132-eof-without-newline-define.c
new file mode 100644
index 00000000000..6795e35ea00
--- /dev/null
+++ b/src/glsl/glcpp/tests/132-eof-without-newline-define.c
@@ -0,0 +1 @@
+#define \ No newline at end of file
diff --git a/src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected b/src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected
new file mode 100644
index 00000000000..a3ace0f3966
--- /dev/null
+++ b/src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected
@@ -0,0 +1,2 @@
+0:1(2): preprocessor error: #define without macro name
+0:1(2): preprocessor error: syntax error, unexpected NEWLINE, expecting FUNC_IDENTIFIER or OBJ_IDENTIFIER
diff --git a/src/glsl/glcpp/tests/133-eof-without-newline-comment.c b/src/glsl/glcpp/tests/133-eof-without-newline-comment.c
new file mode 100644
index 00000000000..56ec5f722c0
--- /dev/null
+++ b/src/glsl/glcpp/tests/133-eof-without-newline-comment.c
@@ -0,0 +1 @@
+This file ends with no newline within a comment /* \ No newline at end of file
diff --git a/src/glsl/glcpp/tests/133-eof-without-newline-comment.c.expected b/src/glsl/glcpp/tests/133-eof-without-newline-comment.c.expected
new file mode 100644
index 00000000000..506eb561756
--- /dev/null
+++ b/src/glsl/glcpp/tests/133-eof-without-newline-comment.c.expected
@@ -0,0 +1,2 @@
+0:1(52): preprocessor error: Unterminated comment
+This file ends with no newline within a comment