From c03ffb3212281d01b304781e67ea6fc38feb224e Mon Sep 17 00:00:00 2001
From: Luc Van Oostenryck
Date: Fri, 7 Dec 2018 23:17:07 +0100
Subject: delay 'empty character constant' warning to phase 5
A subset of C syntax regarding character constants is:
char-constant:
' c-char-sequence '
c-char-sequence:
char
c-char-sequence char
In short, when tokenized, a character constant must have at least
one character between the quotes. Consequently, sparse will
issue an error on empty character constants (unlike GCC).
However, sparse issues the error during tokenization (phase 3),
before preprocessing directives are handled (phase 4).
This means that code like:
#if 0
... ''
#endif
will throw an error although the corresponding code is discarded.
Fix this by
1) silently accept empty char constants during tokenization
2) issue the diagnostic only when escape sequences are handled.
Signed-off-by: Luc Van Oostenryck
---
validation/preprocessor/empty-char-constant.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 validation/preprocessor/empty-char-constant.c
(limited to 'validation/preprocessor')
diff --git a/validation/preprocessor/empty-char-constant.c b/validation/preprocessor/empty-char-constant.c
new file mode 100644
index 00000000..2c248159
--- /dev/null
+++ b/validation/preprocessor/empty-char-constant.c
@@ -0,0 +1,13 @@
+#if 0
+ ''
+#endif
+
+/*
+ * check-name: empty-char-constant
+ * check-command: sparse -E $file
+ *
+ * check-output-start
+
+
+ * check-output-end
+ */
--
cgit 1.2.3-korg