Ping. Thanks, --Serge
2015-03-19 10:22 GMT+06:00 Serge Pavlov <sepavl...@gmail.com>: > Ping. > > Thanks, > --Serge > > 2015-03-12 23:30 GMT+06:00 Serge Pavlov <sepavl...@gmail.com>: > >> Any feedback? >> >> Thanks, >> --Serge >> >> 2015-03-02 23:54 GMT+06:00 Serge Pavlov <sepavl...@gmail.com>: >> >>> 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 cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits