Re: [PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-27 Thread Jason Merrill via Gcc-patches
On 3/27/20 11:28 AM, Patrick Palka wrote: On Thu, 26 Mar 2020, Patrick Palka wrote: On Thu, 26 Mar 2020, Jason Merrill wrote: On 3/26/20 5:24 PM, Patrick Palka wrote: On Wed, 25 Mar 2020, Jason Merrill wrote: On 3/25/20 12:17 PM, Patrick Palka wrote: This PR reports that the

Re: [PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-27 Thread Patrick Palka via Gcc-patches
On Thu, 26 Mar 2020, Patrick Palka wrote: > On Thu, 26 Mar 2020, Jason Merrill wrote: > > > On 3/26/20 5:24 PM, Patrick Palka wrote: > > > On Wed, 25 Mar 2020, Jason Merrill wrote: > > > > > > > On 3/25/20 12:17 PM, Patrick Palka wrote: > > > > > This PR reports that the requires-expression in >

Re: [PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-26 Thread Patrick Palka via Gcc-patches
On Thu, 26 Mar 2020, Jason Merrill wrote: > On 3/26/20 5:24 PM, Patrick Palka wrote: > > On Wed, 25 Mar 2020, Jason Merrill wrote: > > > > > On 3/25/20 12:17 PM, Patrick Palka wrote: > > > > This PR reports that the requires-expression in > > > > > > > > auto f = [] { }; > > > >

Re: [PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-26 Thread Jason Merrill via Gcc-patches
On 3/26/20 5:24 PM, Patrick Palka wrote: On Wed, 25 Mar 2020, Jason Merrill wrote: On 3/25/20 12:17 PM, Patrick Palka wrote: This PR reports that the requires-expression in auto f = [] { }; static_assert(requires { f(); }); erroneously evaluates to false. The way we end up

Re: [PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-26 Thread Patrick Palka via Gcc-patches
On Wed, 25 Mar 2020, Jason Merrill wrote: > On 3/25/20 12:17 PM, Patrick Palka wrote: > > This PR reports that the requires-expression in > > > >auto f = [] { }; > >static_assert(requires { f(); }); > > > > erroneously evaluates to false. The way we end up evaluating to false goes > >

Re: [PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-25 Thread Jason Merrill via Gcc-patches
On 3/25/20 12:17 PM, Patrick Palka wrote: This PR reports that the requires-expression in auto f = [] { }; static_assert(requires { f(); }); erroneously evaluates to false. The way we end up evaluating to false goes as follows. During the parsing of the requires-expression, we call

Re: [PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-25 Thread Patrick Palka via Gcc-patches
On Wed, 25 Mar 2020, Marek Polacek wrote: > On Wed, Mar 25, 2020 at 12:17:41PM -0400, Patrick Palka via Gcc-patches wrote: > > diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c > > index 03ecd7838f6..14a22b85318 100644 > > --- a/gcc/cp/parser.c > > +++ b/gcc/cp/parser.c > > @@ -27689,7 +27689,12 @@

Re: [PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-25 Thread Marek Polacek via Gcc-patches
On Wed, Mar 25, 2020 at 12:17:41PM -0400, Patrick Palka via Gcc-patches wrote: > diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c > index 03ecd7838f6..14a22b85318 100644 > --- a/gcc/cp/parser.c > +++ b/gcc/cp/parser.c > @@ -27689,7 +27689,12 @@ cp_parser_requires_expression (cp_parser *parser) >

[PATCH] c++: requires-expression outside of a template is misevaluated [PR94252]

2020-03-25 Thread Patrick Palka via Gcc-patches
This PR reports that the requires-expression in auto f = [] { }; static_assert(requires { f(); }); erroneously evaluates to false. The way we end up evaluating to false goes as follows. During the parsing of the requires-expression, we call finish_call_expr from