[clang] [clang][AST] fix ast-print of `extern <lang>` with >=2 declarators (PR #93131)

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Tue May 28 07:44:48 PDT 2024


================
@@ -0,0 +1,27 @@
+// RUN: %clang_cc1 -ast-print %s -o - | FileCheck %s
+
+// CHECK: extern "C" int printf(const char *, ...);
+extern "C" int printf(const char *...);
+
+// CHECK: extern "C++" {
----------------
AaronBallman wrote:

Oofda, there are differences between the braced and non-braced versions, so ideally, we want to reproduce exactly what was in the user's source to avoid accidentally changing the meaning of code. Consider cases like:
```
extern "C" int a, b, c;

extern "C" {
  int x;
  int y;
  int z;
}
```
`z`, `y`, and `z` are external, `a`, `b`, and `c` are not: https://godbolt.org/z/evG9KPKMM


https://github.com/llvm/llvm-project/pull/93131


More information about the cfe-commits mailing list