]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/issue-9446.rs
Auto merge of #28816 - petrochenkov:unistruct, r=nrc
[rust.git] / src / test / run-pass / issue-9446.rs
1 // Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 struct Wrapper(String);
12
13 impl Wrapper {
14     pub fn new(wrapped: String) -> Wrapper {
15         Wrapper(wrapped)
16     }
17
18     pub fn say_hi(&self) {
19         let Wrapper(ref s) = *self;
20         println!("hello {}", *s);
21     }
22 }
23
24 impl Drop for Wrapper {
25     fn drop(&mut self) {}
26 }
27
28 pub fn main() {
29     {
30         // This runs without complaint.
31         let x = Wrapper::new("Bob".to_string());
32         x.say_hi();
33     }
34     {
35         // This fails to compile, circa 0.8-89-gc635fba.
36         // error: internal compiler error: drop_ty_immediate: non-box ty
37         Wrapper::new("Bob".to_string()).say_hi();
38     }
39 }