Skip to content

Commit 54edaba

Browse files
authored
Allow trailing comma in assert (#1121)
1 parent be9d805 commit 54edaba

27 files changed

+34
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
main: () = {
2+
assert(true, "some_potentially_long_string",);
3+
}

regression-tests/test-results/apple-clang-14-c++2b/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/apple-clang-14-c++2b/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/apple-clang-15-c++2b/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/apple-clang-15-c++2b/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/clang-12-c++20/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/clang-12-c++20/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/clang-15-c++20-libcpp/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/clang-15-c++20-libcpp/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/clang-15-c++20/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/clang-15-c++20/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/clang-18-c++20/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/clang-18-c++20/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/gcc-10-c++20/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/gcc-10-c++20/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/gcc-13-c++2b/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/gcc-13-c++2b/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/gcc-14-c++2b/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/gcc-14-c++2b/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/msvc-2022-c++20/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/msvc-2022-c++20/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.

regression-tests/test-results/msvc-2022-c++latest/pure2-trailing-comma-assert.cpp.execution

Whitespace-only changes.

regression-tests/test-results/msvc-2022-c++latest/pure2-trailing-comma-assert.cpp.output

Whitespace-only changes.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
#define CPP2_IMPORT_STD Yes
3+
4+
//=== Cpp2 type declarations ====================================================
5+
6+
7+
#include "cpp2util.h"
8+
9+
#line 1 "pure2-trailing-comma-assert.cpp2"
10+
11+
12+
//=== Cpp2 type definitions and function declarations ===========================
13+
14+
#line 1 "pure2-trailing-comma-assert.cpp2"
15+
auto main() -> int;
16+
17+
//=== Cpp2 function definitions =================================================
18+
19+
#line 1 "pure2-trailing-comma-assert.cpp2"
20+
auto main() -> int{
21+
#line 2 "pure2-trailing-comma-assert.cpp2"
22+
if (cpp2::cpp2_default.is_active() && !(true) ) { cpp2::cpp2_default.report_violation(CPP2_CONTRACT_MSG("some_potentially_long_string")); }
23+
}
24+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pure2-trailing-comma-assert.cpp2... ok (all Cpp2, passes safety checks)
2+

regression-tests/test-results/pure2-trailing-comma-assert.out

Whitespace-only changes.

source/parse.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8006,6 +8006,11 @@ class parser
80068006
}
80078007
}
80088008

8009+
// Consume trailing comma
8010+
if (curr().type() == lexeme::Comma) {
8011+
next();
8012+
}
8013+
80098014
if (curr().type() != lexeme::RightParen) {
80108015
error("expected ')' at the end of the contract");
80118016
return {};

0 commit comments

Comments
 (0)