[clang] 747c011 - [clang][Sema][Tests] Add test coverage for function-like macro diagnostic edge cases and C++ (#223895)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 18 05:05:04 PDT 2026
Author: Prashanth
Date: 2026-09-18T08:04:58-04:00
New Revision: 747c011130b66c197ff5b18892646933f3a1c838
URL: https://github.com/llvm/llvm-project/commit/747c011130b66c197ff5b18892646933f3a1c838
DIFF: https://github.com/llvm/llvm-project/commit/747c011130b66c197ff5b18892646933f3a1c838.diff
LOG: [clang][Sema][Tests] Add test coverage for function-like macro diagnostic edge cases and C++ (#223895)
Add C++ and edge-case test coverage for function-like macro diagnostic
Follow-up to #123495.
Adds regression tests covering cases not exercised by the original PR:
- Macro call with intervening comment/whitespace before '(', confirms
findNextToken correctly skips these rather than misfiring
- Macro call with '(' across a line break
- Re-#define after #undef, confirms no stale state
- Array-size context (non-assignment expression)
- Variadic function-like macro
- New SemaCXX test confirming the diagnostic fires correctly in C++,
since the implementation lives in shared SemaExpr.cpp
No behavior change, test coverage only.
Added:
Modified:
clang/test/Sema/typo-correction-no-hang.cpp
clang/test/Sema/typo-correction.c
Removed:
################################################################################
diff --git a/clang/test/Sema/typo-correction-no-hang.cpp b/clang/test/Sema/typo-correction-no-hang.cpp
index 34b8486bed902..3e7202e6aed9f 100644
--- a/clang/test/Sema/typo-correction-no-hang.cpp
+++ b/clang/test/Sema/typo-correction-no-hang.cpp
@@ -40,3 +40,10 @@ int Bar(const B &b) {
return b.depar().longitude() + //expected-error{{no member named 'longitude' in 'A'}}
b.depar().latitude(); //expected-error{{no member named 'latitude' in 'A'}}
}
+
+#define BAZ() 1
+// expected-note at -1 {{'BAZ' defined here as a function-like macro}}
+
+void testFuncLikeMacroWithoutParens() {
+ int x = BAZ; // expected-error {{'BAZ' is defined as a function-like macro; did you mean 'BAZ(...)'?}}
+}
diff --git a/clang/test/Sema/typo-correction.c b/clang/test/Sema/typo-correction.c
index 1f6bcd0485a02..7cda42f8640d5 100644
--- a/clang/test/Sema/typo-correction.c
+++ b/clang/test/Sema/typo-correction.c
@@ -140,3 +140,37 @@ void test5() {
FOO1 + 1; // expected-error {{'FOO1' is defined as a function-like macro; did you mean 'FOO1(...)'?}}
bar(FOO1); // expected-error {{'FOO1' is defined as a function-like macro; did you mean 'FOO1(...)'?}}
}
+
+#undef FOO1
+
+void test6(){
+ int iter = FOO1; //expected-error {{use of undeclared identifier 'FOO1'}}
+}
+
+
+#define FOO1() 99 // expected-note 2 {{'FOO1' defined here as a function-like macro}}
+
+void test7() {
+ int w = FOO1; // expected-error {{'FOO1' is defined as a function-like macro; did you mean 'FOO1(...)'?}}
+}
+
+#define FOO2() 42
+
+void test8() {
+ int y = FOO2 /* comment */ (); // no error expected — still a real call
+}
+
+void test9() {
+ int z = FOO2
+ (); // no error expected — paren across a line break
+}
+
+void test10() {
+ int arr[FOO1]; // expected-error {{'FOO1' is defined as a function-like macro; did you mean 'FOO1(...)'?}}
+}
+
+#define VARFOO(...) 1 // expected-note {{'VARFOO' defined here as a function-like macro}}
+
+void test11() {
+ int v = VARFOO; // expected-error {{'VARFOO' is defined as a function-like macro; did you mean 'VARFOO(...)'?}}
+}
More information about the cfe-commits
mailing list