typeck.c (build_unary_op): Deal with const qualifier in invalid pointer-to-member earlier.
* typeck.c (build_unary_op): Deal with const qualifier in invalid pointer-to-member earlier. From-SVN: r66522
This commit is contained in:
parent
5b0f0db6d9
commit
d219f3ff2f
|
@ -1,3 +1,8 @@
|
|||
2003-05-06 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
|
||||
|
||||
* typeck.c (build_unary_op): Deal with const qualifier in
|
||||
invalid pointer-to-member earlier.
|
||||
|
||||
2003-05-05 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/9537
|
||||
|
|
|
@ -4430,26 +4430,27 @@ build_unary_op (code, xarg, noconvert)
|
|||
We could defer this in non-MS mode, but it's easier to give
|
||||
a useful error here. */
|
||||
|
||||
tree base = TREE_TYPE (TREE_OPERAND (arg, 0));
|
||||
/* Inside constant member functions, the `this' pointer
|
||||
contains an extra const qualifier. TYPE_MAIN_VARIANT
|
||||
is used here to remove this const from the diagnostics
|
||||
and the created OFFSET_REF. */
|
||||
tree base = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (arg, 0)));
|
||||
tree name = DECL_NAME (get_first_fn (TREE_OPERAND (arg, 1)));
|
||||
|
||||
if (! flag_ms_extensions)
|
||||
{
|
||||
/* Inside constant member functions, the `this' pointer
|
||||
contains an extra const qualifier. TYPE_MAIN_VARIANT
|
||||
is used here to remove this const from the diagnostics. */
|
||||
if (current_class_type
|
||||
&& TREE_OPERAND (arg, 0) == current_class_ref)
|
||||
/* An expression like &memfn. */
|
||||
pedwarn ("ISO C++ forbids taking the address of an unqualified"
|
||||
" or parenthesized non-static member function to form"
|
||||
" a pointer to member function. Say `&%T::%D'",
|
||||
TYPE_MAIN_VARIANT (base), name);
|
||||
base, name);
|
||||
else
|
||||
pedwarn ("ISO C++ forbids taking the address of a bound member"
|
||||
" function to form a pointer to member function."
|
||||
" Say `&%T::%D'",
|
||||
TYPE_MAIN_VARIANT (base), name);
|
||||
base, name);
|
||||
}
|
||||
arg = build_offset_ref (base, name);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue