This revision was automatically updated to reflect the committed changes. Closed by commit rG4ae537c2220f: Fix false positive with -Wnon-c-typedef-for-linkage (authored by rtrieu).
Changed prior to commit: https://reviews.llvm.org/D79548?vs=262536&id=262808#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79548/new/ https://reviews.llvm.org/D79548 Files: clang/lib/Sema/SemaDecl.cpp clang/test/SemaCXX/anonymous-struct.cpp Index: clang/test/SemaCXX/anonymous-struct.cpp =================================================================== --- clang/test/SemaCXX/anonymous-struct.cpp +++ clang/test/SemaCXX/anonymous-struct.cpp @@ -133,3 +133,23 @@ int arr[&f<X> ? 1 : 2]; } C; // expected-note {{by this typedef}} } + +namespace ImplicitDecls { +struct Destructor { + ~Destructor() {} +}; +typedef struct { +} Empty; + +typedef struct { + Destructor x; +} A; + +typedef struct { + Empty E; +} B; + +typedef struct { + const Empty E; +} C; +} // namespace ImplicitDecls Index: clang/lib/Sema/SemaDecl.cpp =================================================================== --- clang/lib/Sema/SemaDecl.cpp +++ clang/lib/Sema/SemaDecl.cpp @@ -4425,8 +4425,11 @@ isa<EnumDecl>(D)) continue; auto *MemberRD = dyn_cast<CXXRecordDecl>(D); - if (!MemberRD) + if (!MemberRD) { + if (D->isImplicit()) + continue; return {NonCLikeKind::OtherMember, D->getSourceRange()}; + } // -- contain a lambda-expression, if (MemberRD->isLambda())
Index: clang/test/SemaCXX/anonymous-struct.cpp =================================================================== --- clang/test/SemaCXX/anonymous-struct.cpp +++ clang/test/SemaCXX/anonymous-struct.cpp @@ -133,3 +133,23 @@ int arr[&f<X> ? 1 : 2]; } C; // expected-note {{by this typedef}} } + +namespace ImplicitDecls { +struct Destructor { + ~Destructor() {} +}; +typedef struct { +} Empty; + +typedef struct { + Destructor x; +} A; + +typedef struct { + Empty E; +} B; + +typedef struct { + const Empty E; +} C; +} // namespace ImplicitDecls Index: clang/lib/Sema/SemaDecl.cpp =================================================================== --- clang/lib/Sema/SemaDecl.cpp +++ clang/lib/Sema/SemaDecl.cpp @@ -4425,8 +4425,11 @@ isa<EnumDecl>(D)) continue; auto *MemberRD = dyn_cast<CXXRecordDecl>(D); - if (!MemberRD) + if (!MemberRD) { + if (D->isImplicit()) + continue; return {NonCLikeKind::OtherMember, D->getSourceRange()}; + } // -- contain a lambda-expression, if (MemberRD->isLambda())
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits