summaryrefslogtreecommitdiffstats
path: root/src/test/ui/borrowck/borrowck-argument.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/borrowck/borrowck-argument.rs')
-rw-r--r--src/test/ui/borrowck/borrowck-argument.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/borrowck-argument.rs b/src/test/ui/borrowck/borrowck-argument.rs
new file mode 100644
index 000000000..5d776d4fc
--- /dev/null
+++ b/src/test/ui/borrowck/borrowck-argument.rs
@@ -0,0 +1,34 @@
+#[derive(Copy, Clone)]
+struct S;
+
+impl S {
+ fn mutate(&mut self) {
+ }
+}
+
+fn func(arg: S) {
+ arg.mutate(); //~ ERROR: cannot borrow `arg` as mutable, as it is not declared as mutable
+}
+
+impl S {
+ fn method(&self, arg: S) {
+ arg.mutate(); //~ ERROR: cannot borrow `arg` as mutable, as it is not declared as mutable
+ }
+}
+
+trait T {
+ fn default(&self, arg: S) {
+ arg.mutate(); //~ ERROR: cannot borrow `arg` as mutable, as it is not declared as mutable
+ }
+}
+
+impl T for S {}
+
+fn main() {
+ let s = S;
+ func(s);
+ s.method(s);
+ s.default(s);
+ (|arg: S| { arg.mutate() })(s);
+ //~^ ERROR: cannot borrow `arg` as mutable, as it is not declared as mutable
+}