Ping! Thanks, --Serge
2015-05-25 18:15 GMT+06:00 Serge Pavlov <[email protected]>: > 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
