Skip to content

Commit ff7817d

Browse files
committed
fix(parse): permit unbraced initializer after requires
1 parent 9584fcc commit ff7817d

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
f: () -> _ requires true = 0;
2+
main: () -> _ = f();

source/parse.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1988,7 +1988,7 @@ struct declaration_node
19881988
std::vector<std::unique_ptr<id_expression_node>> meta_functions;
19891989
std::unique_ptr<parameter_declaration_list_node> template_parameters;
19901990
source_position requires_pos = {};
1991-
std::unique_ptr<expression_node> requires_clause_expression;
1991+
std::unique_ptr<logical_or_expression_node> requires_clause_expression;
19921992

19931993
source_position equal_sign = {};
19941994
std::unique_ptr<statement_node> initializer;
@@ -5865,7 +5865,7 @@ class parser
58655865
//G meta-functions-list '@' id-expression
58665866
//G
58675867
//G requires-clause:
5868-
//G 'requires' expression
5868+
//G 'requires' logical-or-expression
58695869
//G
58705870
//G template-parameter-declaration-list
58715871
//G '<' parameter-declaration-seq '>'
@@ -6112,7 +6112,7 @@ class parser
61126112
if (curr() == "requires") {
61136113
n->requires_pos = curr().position();
61146114
next();
6115-
auto e = expression();
6115+
auto e = logical_or_expression();
61166116
if (!e) {
61176117
error("'requires' must be followed by an expression");
61186118
return {};

0 commit comments

Comments
 (0)