about summary refs log tree commit diff
path: root/tests/ui/issues/issue-9446.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/issues/issue-9446.rs')
-rw-r--r--tests/ui/issues/issue-9446.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/ui/issues/issue-9446.rs b/tests/ui/issues/issue-9446.rs
new file mode 100644
index 00000000000..e200840d290
--- /dev/null
+++ b/tests/ui/issues/issue-9446.rs
@@ -0,0 +1,30 @@
+// run-pass
+struct Wrapper(String);
+
+impl Wrapper {
+    pub fn new(wrapped: String) -> Wrapper {
+        Wrapper(wrapped)
+    }
+
+    pub fn say_hi(&self) {
+        let Wrapper(ref s) = *self;
+        println!("hello {}", *s);
+    }
+}
+
+impl Drop for Wrapper {
+    fn drop(&mut self) {}
+}
+
+pub fn main() {
+    {
+        // This runs without complaint.
+        let x = Wrapper::new("Bob".to_string());
+        x.say_hi();
+    }
+    {
+        // This fails to compile, circa 0.8-89-gc635fba.
+        // error: internal compiler error: drop_ty_immediate: non-box ty
+        Wrapper::new("Bob".to_string()).say_hi();
+    }
+}