aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2021-11-24 16:06:55 +0000
committerPhilip Herron <philip.herron@embecosm.com>2021-11-24 16:06:55 +0000
commitf967dd27790a16837b55e6d2c5ee01dcba096f53 (patch)
treed6d77289b7fcde098b1e3f568eb4912edfef1e2c /gcc
parent4924160c275d8fafab2dbd4257fb7473fbac5ceb (diff)
downloadgcc-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.h8
-rw-r--r--gcc/testsuite/rust/compile/immutable1.rs5
-rw-r--r--gcc/testsuite/rust/compile/immutable2.rs5
-rw-r--r--gcc/testsuite/rust/compile/immutable3.rs4
-rw-r--r--gcc/testsuite/rust/compile/immutable4.rs4
-rw-r--r--gcc/testsuite/rust/compile/immutable5.rs6
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" }
-}