Any feedback? Thanks, --Serge
2015-04-16 0:52 GMT+06:00 Serge Pavlov <[email protected]>: > Ping. > > Thanks, > --Serge > > 2015-03-19 10:22 GMT+06:00 Serge Pavlov <[email protected]>: > >> 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
