Commit 6c6a2737 by Paolo Carlini

typeck.c (build_x_unary_op): Use the location_t argument in three error_at.

/cp
2019-10-29  Paolo Carlini  <paolo.carlini@oracle.com>

	* typeck.c (build_x_unary_op): Use the location_t argument in
	three error_at.

/testsuite
2019-10-29  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/other/ptrmem8.C: Test locations too.
	* g++.dg/template/dtor6.C: Likewise.

From-SVN: r277595
parent 1e2fa738
2019-10-29 Paolo Carlini <paolo.carlini@oracle.com>
* typeck.c (build_x_unary_op): Use the location_t argument in
three error_at.
2019-10-29 Marek Polacek <polacek@redhat.com>
PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
......@@ -25,8 +30,8 @@
* cp-tree.h (cxx_simulate_builtin_function_decl): Declare.
* decl.c (cxx_simulate_builtin_function_decl): New function.
* cp-objcp-common.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL): Define
to the above.
* cp-objcp-common.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL):
Define to the above.
2019-10-28 Martin Sebor <msebor@redhat.com>
......
......@@ -5829,10 +5829,10 @@ build_x_unary_op (location_t loc, enum tree_code code, cp_expr xarg,
if (DECL_CONSTRUCTOR_P (fn) || DECL_DESTRUCTOR_P (fn))
{
if (complain & tf_error)
error (DECL_CONSTRUCTOR_P (fn)
? G_("taking address of constructor %qD")
: G_("taking address of destructor %qD"),
fn);
error_at (loc, DECL_CONSTRUCTOR_P (fn)
? G_("taking address of constructor %qD")
: G_("taking address of destructor %qD"),
fn);
return error_mark_node;
}
}
......@@ -5847,19 +5847,19 @@ build_x_unary_op (location_t loc, enum tree_code code, cp_expr xarg,
{
if (complain & tf_error)
{
error ("invalid use of %qE to form a "
"pointer-to-member-function", xarg.get_value ());
error_at (loc, "invalid use of %qE to form a "
"pointer-to-member-function", xarg.get_value ());
if (TREE_CODE (xarg) != OFFSET_REF)
inform (input_location, " a qualified-id is required");
inform (loc, " a qualified-id is required");
}
return error_mark_node;
}
else
{
if (complain & tf_error)
error ("parentheses around %qE cannot be used to form a"
" pointer-to-member-function",
xarg.get_value ());
error_at (loc, "parentheses around %qE cannot be used to "
"form a pointer-to-member-function",
xarg.get_value ());
else
return error_mark_node;
PTRMEM_OK_P (xarg) = 1;
......
2019-10-29 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/other/ptrmem8.C: Test locations too.
* g++.dg/template/dtor6.C: Likewise.
2019-10-29 Marek Polacek <polacek@redhat.com>
PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
......
......@@ -6,11 +6,11 @@ struct A {};
template<int> void foo(void (A::* f)())
{
A a;
&(a.*f); // { dg-error "invalid use of\[^\n\]*\\.\\*\[^\n\]*to form|qualified-id is required" }
&(a.*f); // { dg-error "3:invalid use of\[^\n\]*\\.\\*\[^\n\]*to form|qualified-id is required" }
}
template<int> void bar(void (A::* f)())
{
A *p;
&(p->*f); // { dg-error "invalid use of\[^\n\]*->\\*\[^\n\]*to form|qualified-id is required" }
&(p->*f); // { dg-error "3:invalid use of\[^\n\]*->\\*\[^\n\]*to form|qualified-id is required" }
}
......@@ -5,12 +5,12 @@ template<int> struct A
static int i;
};
template<int N> int A<N>::i = { A::~A }; // { dg-error "non-static member function" }
template<int N> int A<N>::i = { A::~A }; // { dg-error "36:invalid use of non-static member function" }
template class A<0>;
struct X { };
int i1 = X::~X; // { dg-error "non-static member function" }
int i2 = &X::~X; // { dg-error "address of destructor" }
int i3 = &A<0>::~A; // { dg-error "address of destructor" }
int i1 = X::~X; // { dg-error "13:invalid use of non-static member function" }
int i2 = &X::~X; // { dg-error "10:taking address of destructor" }
int i3 = &A<0>::~A; // { dg-error "10:taking address of destructor" }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment