Skip to content

[BUG] for loop don't allow several assignments in next #448

Closed
@realgdman

Description

@realgdman

for loop (and other loops) don't accept several assignments inside next

Reproduce Code
https://cpp2.godbolt.org/z/aqYqr63z5

main: () = {
	(copy a := 0, copy b := 0)
	//for "abc" next a++ do (i) { //ok
	for "abc" next { a++; b++; } do (i) { //error
	//for "abc' next a do (i) { //unused a
		std::cout << i << a << b << '\n';
	}
}

Version
latest (38aec57)

Command lines
cppfront/cppfront $1.cpp2 -p
clang++-15 -Icppfront/include $1.cpp -std=c++20 -o $1

Expected result
Some block syntax for that assignment or diagnostic

Actual result
Compilation error

Additional notes
In grammar only single expr allowed
//G next-clause:
//G 'next' assignment-expression

Additionally, logical-or-expression could be logical.
Which can lead to compiled, but unused logical expression
for "abc' next a do (i) { //unused a

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions