PR c++/91868 - improve -Wshadow location.
* name-lookup.c (check_local_shadow): Use DECL_SOURCE_LOCATION instead of input_location. * g++.dg/warn/Wshadow-16.C: New test. From-SVN: r276103
This commit is contained in:
parent
fea3397e56
commit
a0aedc7a41
|
@ -1,5 +1,9 @@
|
|||
2019-09-24 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c++/91868 - improve -Wshadow location.
|
||||
* name-lookup.c (check_local_shadow): Use DECL_SOURCE_LOCATION
|
||||
instead of input_location.
|
||||
|
||||
PR c++/91845 - ICE with invalid pointer-to-member.
|
||||
* expr.c (mark_use): Use error_operand_p.
|
||||
* typeck2.c (build_m_component_ref): Check error_operand_p after
|
||||
|
|
|
@ -2771,7 +2771,7 @@ check_local_shadow (tree decl)
|
|||
msg = "declaration of %qD shadows a previous local";
|
||||
|
||||
auto_diagnostic_group d;
|
||||
if (warning_at (input_location, warning_code, msg, decl))
|
||||
if (warning_at (DECL_SOURCE_LOCATION (decl), warning_code, msg, decl))
|
||||
inform_shadowed (old);
|
||||
return;
|
||||
}
|
||||
|
@ -2798,7 +2798,7 @@ check_local_shadow (tree decl)
|
|||
|| TYPE_PTRMEMFUNC_P (TREE_TYPE (decl)))
|
||||
{
|
||||
auto_diagnostic_group d;
|
||||
if (warning_at (input_location, OPT_Wshadow,
|
||||
if (warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wshadow,
|
||||
"declaration of %qD shadows a member of %qT",
|
||||
decl, current_nonlambda_class_type ())
|
||||
&& DECL_P (member))
|
||||
|
@ -2818,7 +2818,7 @@ check_local_shadow (tree decl)
|
|||
/* XXX shadow warnings in outer-more namespaces */
|
||||
{
|
||||
auto_diagnostic_group d;
|
||||
if (warning_at (input_location, OPT_Wshadow,
|
||||
if (warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wshadow,
|
||||
"declaration of %qD shadows a global declaration",
|
||||
decl))
|
||||
inform_shadowed (old);
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
2019-09-24 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c++/91868 - improve -Wshadow location.
|
||||
* g++.dg/warn/Wshadow-16.C: New test.
|
||||
|
||||
PR c++/91845 - ICE with invalid pointer-to-member.
|
||||
* g++.dg/cpp1y/pr91845.C: New test.
|
||||
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
// PR c++/91868 - improve -Wshadow location.
|
||||
// { dg-options "-Wshadow" }
|
||||
|
||||
int global; // { dg-message "shadowed declaration" }
|
||||
|
||||
struct S
|
||||
{
|
||||
static int bar; // { dg-message "shadowed declaration" }
|
||||
S (int i) { int bar // { dg-warning "19:declaration of .bar. shadows a member" }
|
||||
(1);
|
||||
int global // { dg-warning "9:declaration of .global. shadows a global declaration" }
|
||||
(42);
|
||||
}
|
||||
};
|
||||
|
||||
void
|
||||
foo ()
|
||||
{
|
||||
int xx; // { dg-message "shadowed declaration" }
|
||||
{
|
||||
S xx // { dg-warning "7:declaration of .xx. shadows a previous local" }
|
||||
(42);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue