diff options
| author | Kevin Ballard <kevin@sb.org> | 2013-11-30 23:55:55 -0800 |
|---|---|---|
| committer | Kevin Ballard <kevin@sb.org> | 2013-11-30 23:55:55 -0800 |
| commit | 2ffcbf11f5fd60ee06b2b275fedefc8dbfd9de9c (patch) | |
| tree | 2aa42f42f730be41330a90ec9004916a8d9eef6f /src | |
| parent | c470184c20167f9f41613d5f4a1d75840e0f5c3a (diff) | |
| download | rust-2ffcbf11f5fd60ee06b2b275fedefc8dbfd9de9c.tar.gz rust-2ffcbf11f5fd60ee06b2b275fedefc8dbfd9de9c.zip | |
Rewrite the issue-10734 rpass file
Stop relying on a malloc error to indicate failure and instead use an
explicit check. Also ensure that the value is dropped at the correct
time (e.g. that the if statement is translated into `{ expr }` instead
of `expr`).
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/run-pass/issue-10734.rs | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/test/run-pass/issue-10734.rs b/src/test/run-pass/issue-10734.rs index 5123b214b8d..a30cf717328 100644 --- a/src/test/run-pass/issue-10734.rs +++ b/src/test/run-pass/issue-10734.rs @@ -8,13 +8,37 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +static mut drop_count: uint = 0; + +#[unsafe_no_drop_flag] +struct Foo { + dropped: bool +} + +impl Drop for Foo { + fn drop(&mut self) { + // Test to make sure we haven't dropped already + assert!(!self.dropped); + self.dropped = true; + // And record the fact that we dropped for verification later + unsafe { drop_count += 1; } + } +} + pub fn main() { + // An `if true { expr }` statement should compile the same as `{ expr }`. if true { - let _a = ~3; + let _a = Foo{ dropped: false }; } + // Check that we dropped already (as expected from a `{ expr }`). + unsafe { assert!(drop_count == 1); } + + // An `if false {} else { expr }` statement should compile the same as `{ expr }`. if false { - fail!() + fail!(); } else { - let _a = ~3; + let _a = Foo{ dropped: false }; } + // Check that we dropped already (as expected from a `{ expr }`). + unsafe { assert!(drop_count == 2); } } |
