From 6fbd16115049f784dfb8aae525d6dcf6c7a1756e Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Thu, 22 Jan 2026 19:16:33 -0500 Subject: [PATCH] [clang] Set end loc on declspec() (#177001) Follow-up to #176296 where the root problem was declspec() not having a valid range. I don't if this is the right fix! It _is_ a progression on the included test file though, and it's similar to what Parser::ParsePackIndexingType() in the same file does. --- clang/lib/Parse/ParseDeclCXX.cpp | 1 + clang/test/AST/ast-dump-decl-stmts.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index af0361c10a01..da7b07ee26d3 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -1123,6 +1123,7 @@ SourceLocation Parser::ParseDecltypeSpecifier(DeclSpec &DS) { Diag(StartLoc, DiagID) << PrevSpec; DS.SetTypeSpecError(); } + DS.SetRangeEnd(EndLoc); return EndLoc; } diff --git a/clang/test/AST/ast-dump-decl-stmts.cpp b/clang/test/AST/ast-dump-decl-stmts.cpp index 613a3f9ee2bb..c0c37a89d34e 100644 --- a/clang/test/AST/ast-dump-decl-stmts.cpp +++ b/clang/test/AST/ast-dump-decl-stmts.cpp @@ -36,3 +36,6 @@ void d(), e(int); int f; // CHECK: VarDecl 0x{{[^ ]*}} col:5 f 'int' +int decltype_fn_int; +auto decltype_fn() -> decltype(decltype_fn_int); +// CHECK: FunctionDecl {{.*}} col:6 decltype_fn 'auto () -> decltype(decltype_fn_int)'