c++: Give more expressions locations.
In the testcase for PR94186, we have a SCOPE_REF with no location even though at one point it was in a cp_expr which had a location. So let's make the cp_expr constructor that takes a location apply it to the expression when possible. gcc/cp/ChangeLog 2020-03-24 Jason Merrill <jason@redhat.com> * cp-tree.h (cp_expr): When constructing from an expr and a location, call protected_set_expr_location.
This commit is contained in:
parent
07f8bcc6ea
commit
6e771c087b
5 changed files with 12 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
2020-03-24 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* cp-tree.h (cp_expr): When constructing from an expr and a
|
||||
location, call protected_set_expr_location.
|
||||
|
||||
2020-03-23 Patrick Palka <ppalka@redhat.com>
|
||||
|
||||
PR c++/93805
|
||||
|
|
|
@ -59,7 +59,10 @@ public:
|
|||
m_value (value), m_loc (cp_expr_location (m_value)) {}
|
||||
|
||||
cp_expr (tree value, location_t loc):
|
||||
m_value (value), m_loc (loc) {}
|
||||
m_value (value), m_loc (loc)
|
||||
{
|
||||
protected_set_expr_location (value, loc);
|
||||
}
|
||||
|
||||
/* Implicit conversions to tree. */
|
||||
operator tree () const { return m_value; }
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
void foo()
|
||||
{
|
||||
int x[({ return; })]; // { dg-error "could not convert" }
|
||||
// { dg-error "12:size of array .x. has non-integral" "" { target *-*-* } .-1 }
|
||||
// { dg-error "9:size of array .x. has non-integral" "" { target *-*-* } .-1 }
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
void foo()
|
||||
{
|
||||
if (({int c[2];})) ; // { dg-error "7:ISO C.. forbids" "7" }
|
||||
// { dg-error "17:could not convert" "17" { target *-*-* } .-1 }
|
||||
// { dg-error "7:could not convert" "17" { target *-*-* } .-1 }
|
||||
}
|
||||
|
||||
void bar()
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
// We expect a warning at the declaration of construct2, since Automatic2 is
|
||||
// defined below; we don't expect one for construct1, because Automatic1 is
|
||||
// defined in the fake system header.
|
||||
// { dg-warning "noexcept-expression" "" { target *-*-* } 15 }
|
||||
// { dg-warning "noexcept-expression" "" { target *-*-* } 16 }
|
||||
|
||||
class Automatic2 {
|
||||
public:
|
||||
|
|
Loading…
Add table
Reference in a new issue