diff options
author | Philip Herron <philip.herron@embecosm.com> | 2021-11-24 16:06:55 +0000 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2021-11-24 16:06:55 +0000 |
commit | f967dd27790a16837b55e6d2c5ee01dcba096f53 (patch) | |
tree | d6d77289b7fcde098b1e3f568eb4912edfef1e2c /gcc | |
parent | 4924160c275d8fafab2dbd4257fb7473fbac5ceb (diff) | |
download | gcc-f967dd27790a16837b55e6d2c5ee01dcba096f53.zip gcc-f967dd27790a16837b55e6d2c5ee01dcba096f53.tar.gz gcc-f967dd27790a16837b55e6d2c5ee01dcba096f53.tar.bz2 |
Remove bad mutability lint
This was an initial pass to try and ensure all assignments were valid
with respect to the binding mutability. This pass cannot be done at the
name resolution level and in rustc is achieved on mir as part of the borrow
checker. This patch removes this pass and associated test cases.
We will be able to do this type of validation on the GCC tree's such as
the C/C++ family const checks we may be able to reuse.
Fixes #815
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/resolve/rust-ast-verify-assignee.h | 8 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/immutable1.rs | 5 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/immutable2.rs | 5 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/immutable3.rs | 4 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/immutable4.rs | 4 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/immutable5.rs | 6 |
6 files changed, 0 insertions, 32 deletions
diff --git a/gcc/rust/resolve/rust-ast-verify-assignee.h b/gcc/rust/resolve/rust-ast-verify-assignee.h index d362fe4..e9f6f23 100644 --- a/gcc/rust/resolve/rust-ast-verify-assignee.h +++ b/gcc/rust/resolve/rust-ast-verify-assignee.h @@ -65,14 +65,6 @@ public: ok = true; // mark the assignment to the name resolver->mark_assignment_to_decl (resolved_node, parent); - - // check is mutable - if (!resolver->decl_is_mutable (resolved_node)) - { - // we only allow a single assignment to immutable decls - if (resolver->get_num_assignments_to_decl (resolved_node) > 1) - rust_error_at (expr.get_locus (), "cannot assign to immutable"); - } } void visit (AST::DereferenceExpr &expr) override diff --git a/gcc/testsuite/rust/compile/immutable1.rs b/gcc/testsuite/rust/compile/immutable1.rs deleted file mode 100644 index d78c1b7..0000000 --- a/gcc/testsuite/rust/compile/immutable1.rs +++ /dev/null @@ -1,5 +0,0 @@ -static x: i32 = 3; - -fn main() { - x = 1; /* { dg-error "cannot assign to immutable" } */ -} diff --git a/gcc/testsuite/rust/compile/immutable2.rs b/gcc/testsuite/rust/compile/immutable2.rs deleted file mode 100644 index 86e70fe..0000000 --- a/gcc/testsuite/rust/compile/immutable2.rs +++ /dev/null @@ -1,5 +0,0 @@ -const TEST_CONST: i32 = 10; - -fn main() { - TEST_CONST = 1; // { dg-error "cannot assign to immutable" } -} diff --git a/gcc/testsuite/rust/compile/immutable3.rs b/gcc/testsuite/rust/compile/immutable3.rs deleted file mode 100644 index fb60280..0000000 --- a/gcc/testsuite/rust/compile/immutable3.rs +++ /dev/null @@ -1,4 +0,0 @@ -fn main() { - let a = 1; - a += 2; // { dg-error "cannot assign to immutable" } -} diff --git a/gcc/testsuite/rust/compile/immutable4.rs b/gcc/testsuite/rust/compile/immutable4.rs deleted file mode 100644 index fb14554..0000000 --- a/gcc/testsuite/rust/compile/immutable4.rs +++ /dev/null @@ -1,4 +0,0 @@ -fn main() { - let array: [i32; 3] = [0; 3]; - array[0] = 1; // { dg-error "cannot assign to immutable" } -} diff --git a/gcc/testsuite/rust/compile/immutable5.rs b/gcc/testsuite/rust/compile/immutable5.rs deleted file mode 100644 index db23609..0000000 --- a/gcc/testsuite/rust/compile/immutable5.rs +++ /dev/null @@ -1,6 +0,0 @@ -struct Foo(f32, i32); - -fn main() { - let a = Foo(1, 2); - a.0 = 22; // { dg-error "cannot assign to immutable" } -} |