about summary refs log tree commit diff
path: root/src/test/ui/methods
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-02-25 00:21:45 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2020-02-25 00:28:39 +0900
commit5307edce6faa5c675dc57a1dd3b4fdcbf1ebdc7d (patch)
treea9367e3df870a83fbed1ca1a762afc9d3ff8fd0e /src/test/ui/methods
parenta211a82b3c7e450edd99ff6d3cf77a0cedae0d2e (diff)
downloadrust-5307edce6faa5c675dc57a1dd3b4fdcbf1ebdc7d.tar.gz
rust-5307edce6faa5c675dc57a1dd3b4fdcbf1ebdc7d.zip
Tweak tests
Diffstat (limited to 'src/test/ui/methods')
-rw-r--r--src/test/ui/methods/assign-to-method.rs24
-rw-r--r--src/test/ui/methods/assign-to-method.stderr19
2 files changed, 43 insertions, 0 deletions
diff --git a/src/test/ui/methods/assign-to-method.rs b/src/test/ui/methods/assign-to-method.rs
new file mode 100644
index 00000000000..85beaee8df0
--- /dev/null
+++ b/src/test/ui/methods/assign-to-method.rs
@@ -0,0 +1,24 @@
+// compile-flags: -Zsave-analysis
+// Also regression test for #69409
+
+struct Cat {
+    meows : usize,
+    how_hungry : isize,
+}
+
+impl Cat {
+    pub fn speak(&self) { self.meows += 1; }
+}
+
+fn cat(in_x : usize, in_y : isize) -> Cat {
+    Cat {
+        meows: in_x,
+        how_hungry: in_y
+    }
+}
+
+fn main() {
+    let nyan : Cat = cat(52, 99);
+    nyan.speak = || println!("meow"); //~ ERROR attempted to take value of method
+    nyan.speak += || println!("meow"); //~ ERROR attempted to take value of method
+}
diff --git a/src/test/ui/methods/assign-to-method.stderr b/src/test/ui/methods/assign-to-method.stderr
new file mode 100644
index 00000000000..c0dd529b681
--- /dev/null
+++ b/src/test/ui/methods/assign-to-method.stderr
@@ -0,0 +1,19 @@
+error[E0615]: attempted to take value of method `speak` on type `Cat`
+  --> $DIR/assign-to-method.rs:22:10
+   |
+LL |     nyan.speak = || println!("meow");
+   |          ^^^^^
+   |
+   = help: methods are immutable and cannot be assigned to
+
+error[E0615]: attempted to take value of method `speak` on type `Cat`
+  --> $DIR/assign-to-method.rs:23:10
+   |
+LL |     nyan.speak += || println!("meow");
+   |          ^^^^^
+   |
+   = help: methods are immutable and cannot be assigned to
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0615`.