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)'