Skip to content

Commit 35ee832

Browse files
danix800arichardson
authored andcommitted
[clang][ASTDumper] Remove redundant dump of BlockDecl's ParmVarDecl
ParmVarDecl of BlockDecl is unnecessarily dumped twice. Remove this duplication as other FunctionDecls. Fixes llvm/llvm-project#64005 (#2) Differential Revision: https://reviews.llvm.org/D155985
2 parents cd2362f + 4b15bb9 commit 35ee832

File tree

4 files changed

+9
-27
lines changed

4 files changed

+9
-27
lines changed

clang/docs/ReleaseNotes.rst

+2-1
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,8 @@ Bug Fixes in This Version
674674
value exprs is invalid. Propagating the error info up by replacing BlockExpr
675675
with a RecoveryExpr. This fixes:
676676
(`#63863 <https://github.com/llvm/llvm-project/issues/63863>_`)
677-
- Invalidate BlockDecl with invalid ParmVarDecl
677+
- Invalidate BlockDecl with invalid ParmVarDecl. Remove redundant dump of
678+
BlockDecl's ParmVarDecl
678679
(`#64005 <https://github.com/llvm/llvm-project/issues/64005>_`)
679680

680681
Bug Fixes to Compiler Builtins

clang/include/clang/AST/ASTNodeTraverser.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,8 @@ class ASTNodeTraverser
104104
Visit(Comment, Comment);
105105

106106
// Decls within functions are visited by the body.
107-
if (!isa<FunctionDecl>(*D) && !isa<ObjCMethodDecl>(*D)) {
107+
if (!isa<FunctionDecl>(*D) && !isa<ObjCMethodDecl>(*D) &&
108+
!isa<BlockDecl>(*D)) {
108109
if (Traversal != TK_AsIs) {
109110
if (const auto *CTSD = dyn_cast<ClassTemplateSpecializationDecl>(D)) {
110111
auto SK = CTSD->getSpecializationKind();

clang/test/AST/ast-dump-decl-json.m

-25
Original file line numberDiff line numberDiff line change
@@ -1923,31 +1923,6 @@ void f(void) {
19231923
// CHECK-NEXT: ]
19241924
// CHECK-NEXT: }
19251925
// CHECK-NEXT: ]
1926-
// CHECK-NEXT: },
1927-
// CHECK-NEXT: {
1928-
// CHECK-NEXT: "id": "0x{{.*}}",
1929-
// CHECK-NEXT: "kind": "ParmVarDecl",
1930-
// CHECK-NEXT: "loc": {
1931-
// CHECK-NEXT: "offset": {{[0-9]+}},
1932-
// CHECK-NEXT: "col": 9,
1933-
// CHECK-NEXT: "tokLen": 1
1934-
// CHECK-NEXT: },
1935-
// CHECK-NEXT: "range": {
1936-
// CHECK-NEXT: "begin": {
1937-
// CHECK-NEXT: "offset": {{[0-9]+}},
1938-
// CHECK-NEXT: "col": 5,
1939-
// CHECK-NEXT: "tokLen": 3
1940-
// CHECK-NEXT: },
1941-
// CHECK-NEXT: "end": {
1942-
// CHECK-NEXT: "offset": {{[0-9]+}},
1943-
// CHECK-NEXT: "col": 9,
1944-
// CHECK-NEXT: "tokLen": 1
1945-
// CHECK-NEXT: }
1946-
// CHECK-NEXT: },
1947-
// CHECK-NEXT: "name": "y",
1948-
// CHECK-NEXT: "type": {
1949-
// CHECK-NEXT: "qualType": "int"
1950-
// CHECK-NEXT: }
19511926
// CHECK-NEXT: }
19521927
// CHECK-NEXT: ]
19531928
// CHECK-NEXT: }

clang/test/AST/ast-dump-decl.m

+5
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,17 @@ @implementation TestObjCProperty {
142142

143143
void TestBlockDecl(int x) {
144144
^(int y, ...){ x; };
145+
int z;
145146
}
146147
// CHECK: FunctionDecl{{.*}}TestBlockDecl
147148
// CHECK: BlockDecl {{.+}} <col:3, col:21> col:3 variadic
148149
// CHECK-NEXT: ParmVarDecl{{.*}} y 'int'
149150
// CHECK-NEXT: capture ParmVar{{.*}} 'x' 'int'
150151
// CHECK-NEXT: CompoundStmt
152+
// CHECK-NEXT: ImplicitCastExpr
153+
// CHECK-NEXT: DeclRefExpr{{.*}} 'x'
154+
// CHECK-NEXT: DeclStmt
155+
// CHECK-NEXT: VarDecl{{.*}} z
151156

152157
@interface B
153158
+ (int) foo;

0 commit comments

Comments
 (0)