[clang] [Clang] Fixed auto parsing regression with brace initialization (PR #210347)
Tony Guillot via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 17 07:30:37 PDT 2026
https://github.com/to268 created https://github.com/llvm/llvm-project/pull/210347
The PR #208552 has introduced a regression where brace initialization was not taken into account `auto foo{12}`. It was also breaking `dcl.type.general` p2 rules, which is also now tested.
>From 36078caa68f388f9cc2cf1db21909a90866049fd Mon Sep 17 00:00:00 2001
From: Tony Guillot <tony.guillot at protonmail.com>
Date: Fri, 17 Jul 2026 16:14:32 +0200
Subject: [PATCH] Fixed auto parsing regression
---
clang/lib/Parse/ParseDecl.cpp | 8 ++++----
.../dcl/dcl.spec/dcl.type/dcl.type.general/p2.cpp | 13 +++++++++++++
2 files changed, 17 insertions(+), 4 deletions(-)
create mode 100644 clang/test/CXX/dcl/dcl.spec/dcl.type/dcl.type.general/p2.cpp
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp
index 88f07bb104fcb..0825678acaf60 100644
--- a/clang/lib/Parse/ParseDecl.cpp
+++ b/clang/lib/Parse/ParseDecl.cpp
@@ -3879,10 +3879,10 @@ void Parser::ParseDeclarationSpecifiers(
// when a variable name matches a type brought in by a using-directive.
if (DS.getTypeSpecType() == DeclSpec::TST_auto) {
Token Next = NextToken();
- if (Next.isOneOf(tok::equal, tok::l_paren, tok::l_square, tok::amp,
- tok::ampamp, tok::star, tok::coloncolon, tok::comma,
- tok::semi, tok::colon, tok::greater, tok::r_paren,
- tok::arrow))
+ if (Next.isOneOf(tok::equal, tok::l_paren, tok::l_square, tok::l_brace,
+ tok::amp, tok::ampamp, tok::star, tok::coloncolon,
+ tok::comma, tok::semi, tok::colon, tok::greater,
+ tok::r_paren, tok::arrow))
goto DoneWithDeclSpec;
}
diff --git a/clang/test/CXX/dcl/dcl.spec/dcl.type/dcl.type.general/p2.cpp b/clang/test/CXX/dcl/dcl.spec/dcl.type/dcl.type.general/p2.cpp
new file mode 100644
index 0000000000000..5b0079a1ba898
--- /dev/null
+++ b/clang/test/CXX/dcl/dcl.spec/dcl.type/dcl.type.general/p2.cpp
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 -std=c++2c -verify %s
+
+namespace bug {
+void func1() {
+ typedef float foo; // expected-note {{previous definition is here}}
+ auto foo{16}; // expected-error {{redefinition of 'foo' as different kind of symbol}}
+}
+
+typedef float bar;
+void func2() {
+ auto bar{16};
+}
+} // namespace bug
More information about the cfe-commits
mailing list