Index: cfe/trunk/lib/AST/ASTDumper.cpp =================================================================== --- cfe/trunk/lib/AST/ASTDumper.cpp +++ cfe/trunk/lib/AST/ASTDumper.cpp @@ -1273,12 +1273,12 @@ void ASTDumper::VisitObjCCategoryDecl(const ObjCCategoryDecl *D) { NodeDumper.dumpName(D); NodeDumper.dumpDeclRef(D->getClassInterface()); - dumpObjCTypeParamList(D->getTypeParamList()); NodeDumper.dumpDeclRef(D->getImplementation()); for (ObjCCategoryDecl::protocol_iterator I = D->protocol_begin(), E = D->protocol_end(); I != E; ++I) NodeDumper.dumpDeclRef(*I); + dumpObjCTypeParamList(D->getTypeParamList()); } void ASTDumper::VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D) { @@ -1296,12 +1296,12 @@ void ASTDumper::VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D) { NodeDumper.dumpName(D); - dumpObjCTypeParamList(D->getTypeParamListAsWritten()); NodeDumper.dumpDeclRef(D->getSuperClass(), "super"); NodeDumper.dumpDeclRef(D->getImplementation()); for (auto *Child : D->protocols()) NodeDumper.dumpDeclRef(Child); + dumpObjCTypeParamList(D->getTypeParamListAsWritten()); } void ASTDumper::VisitObjCImplementationDecl(const ObjCImplementationDecl *D) { Index: cfe/trunk/test/AST/ast-dump-decl.m =================================================================== --- cfe/trunk/test/AST/ast-dump-decl.m +++ cfe/trunk/test/AST/ast-dump-decl.m @@ -85,9 +85,9 @@ } @end // CHECK: ObjCInterfaceDecl{{.*}} TestGenericInterface -// CHECK-NEXT: -ObjCTypeParamDecl {{.+}} col:33 T 'id':'id' // CHECK-NEXT: -super ObjCInterface {{.+}} 'A' // CHECK-NEXT: -ObjCProtocol {{.+}} 'P' +// CHECK-NEXT: -ObjCTypeParamDecl {{.+}} col:33 T 'id':'id' @implementation TestObjCClass (TestObjCCategoryDecl) - (void) bar {