================ @@ -5560,6 +5560,25 @@ ExprResult Sema::BuildCXXDefaultArgExpr(SourceLocation CallLoc, Init, InitializationContext->Context); } +static FieldDecl *FindFieldDeclInstantiationPattern(const ASTContext &Ctx, + FieldDecl *Field) { + if (FieldDecl *Pattern = Ctx.getInstantiatedFromUnnamedFieldDecl(Field)) + return Pattern; + auto *ParentRD = cast<CXXRecordDecl>(Field->getParent()); + CXXRecordDecl *ClassPattern = ParentRD->getTemplateInstantiationPattern(); + DeclContext::lookup_result Lookup = + ClassPattern->lookup(Field->getDeclName()); + auto Rng = llvm::make_filter_range(Lookup, [] (auto && L) { + return isa<FieldDecl>(*L); + }); + // FIXME: this breaks clang/test/Modules/pr28812.cpp + // assert(std::distance(Rng.begin(), Rng.end()) <= 1 + // && "Duplicated instantiation pattern for field decl"); + if(Rng.empty()) ---------------- cor3ntin wrote:
I don't understand, can you clarify? https://github.com/llvm/llvm-project/pull/114196 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits