diff options
author | Owen Avery <powerboat9.gamer@gmail.com> | 2023-03-27 11:05:03 -0400 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2023-03-29 21:17:35 +0000 |
commit | 0ddec9f44d6ce81eec7aa62c2d9b13c9094e7857 (patch) | |
tree | 38b85d9089743cad74ed0089b7d946b6925f2299 | |
parent | 87a0a8f84f56002b5c6f3c08dcce831ba7759eed (diff) | |
download | gcc-0ddec9f44d6ce81eec7aa62c2d9b13c9094e7857.zip gcc-0ddec9f44d6ce81eec7aa62c2d9b13c9094e7857.tar.gz gcc-0ddec9f44d6ce81eec7aa62c2d9b13c9094e7857.tar.bz2 |
Fix parsing of array expressions.
Array expressions were being eagerly handled
outside of Pratt parsing.
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h
(Parser<ManagedTokenSource>::parse_expr_without_block):
Remove direct array expression handling.
gcc/testsuite/ChangeLog:
* rust/compile/array4.rs: New test.
* rust/execute/torture/arrays.rs: New test.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
-rw-r--r-- | gcc/rust/parse/rust-parse-impl.h | 3 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/array4.rs | 3 | ||||
-rw-r--r-- | gcc/testsuite/rust/execute/torture/arrays.rs | 3 |
3 files changed, 6 insertions, 3 deletions
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 79dd4e2..7c554e8 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -7449,9 +7449,6 @@ Parser<ManagedTokenSource>::parse_expr_without_block ( case MOVE: // closure expr (though not all closure exprs require this) return parse_closure_expr (std::move (outer_attrs)); - case LEFT_SQUARE: - // array expr (creation, not index) - return parse_array_expr (std::move (outer_attrs)); default: { /* HACK: piggyback on pratt parsed expr and abuse polymorphism to * essentially downcast */ diff --git a/gcc/testsuite/rust/compile/array4.rs b/gcc/testsuite/rust/compile/array4.rs new file mode 100644 index 0000000..c70ca0a --- /dev/null +++ b/gcc/testsuite/rust/compile/array4.rs @@ -0,0 +1,3 @@ +pub fn foo() { + [0, 1, 2][1]; +} diff --git a/gcc/testsuite/rust/execute/torture/arrays.rs b/gcc/testsuite/rust/execute/torture/arrays.rs new file mode 100644 index 0000000..e30285f --- /dev/null +++ b/gcc/testsuite/rust/execute/torture/arrays.rs @@ -0,0 +1,3 @@ +fn main() -> i32 { + [55, 66, 77][1] - 66 +} |