fix the second half of PR4006 and rdar://6807000 by treating
() as being either zero arguments or one empty argument depending
on situation.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69627 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Preprocessor/macro_fn.c b/test/Preprocessor/macro_fn.c
index 90dc2f0..98ebaee 100644
--- a/test/Preprocessor/macro_fn.c
+++ b/test/Preprocessor/macro_fn.c
@@ -4,6 +4,8 @@
 #define zero() 0
 #define one(x) 0
 #define two(x, y) 0
+#define zero_dot(...) 0   /* expected-warning {{variadic macros were introduced in C99}} */
+#define one_dot(x, ...) 0 /* expected-warning {{variadic macros were introduced in C99}} */
 
 zero()
 zero(1);          /* expected-error {{too many arguments provided to function-like macro invocation}} */
@@ -28,6 +30,11 @@
 
 
 
-/* PR4006 */
+/* PR4006 & rdar://6807000 */
 #define e(...) __VA_ARGS__  /* expected-warning {{variadic macros were introduced in C99}} */
 e(x)
+e()
+
+zero_dot()
+one_dot(x)  /* empty ... argument: expected-warning {{varargs argument missing, but tolerated as an extension}}  */
+one_dot()   /* empty first argument, elided ...: expected-warning {{varargs argument missing, but tolerated as an extension}} */