Ping. Thanks, --Serge
2015-03-12 23:30 GMT+06:00 Serge Pavlov <[email protected]>: > Any feedback? > > Thanks, > --Serge > > 2015-03-02 23:54 GMT+06:00 Serge Pavlov <[email protected]>: > >> If definition of a class is unknown and out-of-line definition of its >> member is encountered, do not parse the member declaration. >> This change fixes PR18542. >> >> http://reviews.llvm.org/D8010 >> >> Files: >> lib/Sema/SemaDecl.cpp >> test/SemaCXX/incomplete-call.cpp >> >> Index: lib/Sema/SemaDecl.cpp >> =================================================================== >> --- lib/Sema/SemaDecl.cpp >> +++ lib/Sema/SemaDecl.cpp >> @@ -4573,12 +4573,14 @@ >> RequireCompleteDeclContext(D.getCXXScopeSpec(), DC)) >> return nullptr; >> >> + // If a class is incomplete, do not parse entities inside it. >> if (isa<CXXRecordDecl>(DC) && >> !cast<CXXRecordDecl>(DC)->hasDefinition()) { >> Diag(D.getIdentifierLoc(), >> diag::err_member_def_undefined_record) >> << Name << DC << D.getCXXScopeSpec().getRange(); >> - D.setInvalidType(); >> - } else if (!D.getDeclSpec().isFriendSpecified()) { >> + return nullptr; >> + } >> + if (!D.getDeclSpec().isFriendSpecified()) { >> if (diagnoseQualifiedDeclaration(D.getCXXScopeSpec(), DC, >> Name, D.getIdentifierLoc())) { >> if (DC->isRecord()) >> Index: test/SemaCXX/incomplete-call.cpp >> =================================================================== >> --- test/SemaCXX/incomplete-call.cpp >> +++ test/SemaCXX/incomplete-call.cpp >> @@ -47,3 +47,15 @@ >> void test_incomplete_object_call(C& c) { >> c(); // expected-error{{incomplete type in call to object of type}} >> } >> + >> +namespace pr18542 { >> + struct X { >> + int count; >> + template<typename CharT> class basic_istream; >> + template<typename CharT> >> + void basic_istream<CharT>::read() { // expected-error{{out-of-line >> definition of 'read' from class 'basic_istream<CharT>' without definition}} >> + count = 0; >> + } >> + }; >> +} >> + >> >> EMAIL PREFERENCES >> http://reviews.llvm.org/settings/panel/emailpreferences/ >> > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
