rsmith accepted this revision. rsmith added a comment. This revision is now accepted and ready to land.
LGTM as-is, but a couple of questions for possible further improvements. ================ Comment at: lib/Sema/SemaDecl.cpp:12221 FD->setBody(Body); + FD->setWillHaveBody(false); ---------------- Would it make sense to leave this `true` for a defaulted function whose body has not yet been synthesized? ================ Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:1812-1819 // Check for a function body. const FunctionDecl *Definition = nullptr; if (Function->isDefined(Definition) && Definition->getTemplateSpecializationKind() == TSK_Undeclared) { SemaRef.Diag(Function->getLocation(), diag::err_redefinition) << Function->getDeclName(); SemaRef.Diag(Definition->getLocation(), diag::note_previous_definition); ---------------- Can we replace this... ================ Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:1841-1853 // If some prior declaration of this function was a friend with an // uninstantiated definition, reject it. if (R->getFriendObjectKind()) { if (const FunctionDecl *RPattern = R->getTemplateInstantiationPattern()) { if (RPattern->isDefined(RPattern)) { SemaRef.Diag(Function->getLocation(), diag::err_redefinition) ---------------- ... and this with ``` SemaRef.CheckForFunctionRedefinition(Function); Function->setWillHaveBody(true); ``` ? https://reviews.llvm.org/D30375 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits