re PR c++/84691 (internal compiler error: in poplevel_class, at cp/name-lookup.c:4430)
/cp 2018-04-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84691 * decl.c (grokdeclarator): Clear friendp upon definition in local class definition error. /testsuite 2018-04-27 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84691 * g++.dg/cpp0x/friend3.C: New. From-SVN: r259716
This commit is contained in:
parent
6d0e87b25e
commit
a6e34898d1
4 changed files with 27 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2018-04-27 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/84691
|
||||
* decl.c (grokdeclarator): Clear friendp upon definition in local
|
||||
class definition error.
|
||||
|
||||
2018-04-27 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/85545 - ICE with noexcept PMF conversion.
|
||||
|
|
|
@ -11298,9 +11298,11 @@ grokdeclarator (const cp_declarator *declarator,
|
|||
if (decl_context == NORMAL)
|
||||
error ("friend declaration not in class definition");
|
||||
if (current_function_decl && funcdef_flag)
|
||||
error ("can%'t define friend function %qs in a local "
|
||||
"class definition",
|
||||
name);
|
||||
{
|
||||
error ("can%'t define friend function %qs in a local "
|
||||
"class definition", name);
|
||||
friendp = 0;
|
||||
}
|
||||
}
|
||||
else if (ctype && sfk == sfk_conversion)
|
||||
{
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-04-27 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/84691
|
||||
* g++.dg/cpp0x/friend3.C: New.
|
||||
|
||||
2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
||||
|
||||
PR target/82518
|
||||
|
|
11
gcc/testsuite/g++.dg/cpp0x/friend3.C
Normal file
11
gcc/testsuite/g++.dg/cpp0x/friend3.C
Normal file
|
@ -0,0 +1,11 @@
|
|||
// PR c++/84691
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template<typename>
|
||||
struct a {
|
||||
unsigned b = [] {
|
||||
union {
|
||||
friend void c() {} // { dg-error "local class" }
|
||||
}; // { dg-error "no members" }
|
||||
};
|
||||
};
|
Loading…
Add table
Reference in a new issue