File tree Expand file tree Collapse file tree 5 files changed +69
-3
lines changed Expand file tree Collapse file tree 5 files changed +69
-3
lines changed Original file line number Diff line number Diff line change @@ -16,4 +16,4 @@ fn main() {
1616 let x = Foo ;
1717 x[ ..] ; //~ ERROR incorrect slicing expression: `[..]`
1818 //~^ NOTE use `expr[]` to construct a slice of the whole of expr
19- }
19+ }
Original file line number Diff line number Diff line change @@ -22,4 +22,4 @@ fn main() {
2222 x[ mut Foo ..] ; //~ ERROR cannot take a mutable slice of a value with type `Foo`
2323 x[ mut ..Foo ] ; //~ ERROR cannot take a mutable slice of a value with type `Foo`
2424 x[ mut Foo ..Foo ] ; //~ ERROR cannot take a mutable slice of a value with type `Foo`
25- }
25+ }
Original file line number Diff line number Diff line change 1+ // Copyright 2014 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+ // Test that is a slicing expr[..] fails, the correct cleanups happen.
12+
13+ use std:: task;
14+
15+ struct Foo ;
16+
17+ static mut DTOR_COUNT : int = 0 ;
18+
19+ impl Drop for Foo {
20+ fn drop ( & mut self ) { unsafe { DTOR_COUNT += 1 ; } }
21+ }
22+
23+ fn foo ( ) {
24+ let x: & [ _ ] = & [ Foo , Foo ] ;
25+ x[ 3 ..4 ] ;
26+ }
27+
28+ fn main ( ) {
29+ let _ = task:: try ( proc ( ) foo( ) ) ;
30+ unsafe { assert ! ( DTOR_COUNT == 2 ) ; }
31+ }
Original file line number Diff line number Diff line change 1+ // Copyright 2014 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+ // Test that is a slicing expr[..] fails, the correct cleanups happen.
12+
13+ use std:: task;
14+
15+ struct Foo ;
16+
17+ static mut DTOR_COUNT : int = 0 ;
18+
19+ impl Drop for Foo {
20+ fn drop ( & mut self ) { unsafe { DTOR_COUNT += 1 ; } }
21+ }
22+
23+ fn bar ( ) -> uint {
24+ fail ! ( ) ;
25+ }
26+
27+ fn foo ( ) {
28+ let x: & [ _ ] = & [ Foo , Foo ] ;
29+ x[ 3 ..bar ( ) ] ;
30+ }
31+
32+ fn main ( ) {
33+ let _ = task:: try ( proc ( ) foo( ) ) ;
34+ unsafe { assert ! ( DTOR_COUNT == 2 ) ; }
35+ }
Original file line number Diff line number Diff line change @@ -67,4 +67,4 @@ fn main() {
6767 unsafe {
6868 assert ! ( COUNT == 8 ) ;
6969 }
70- }
70+ }
You can’t perform that action at this time.
0 commit comments