File tree Expand file tree Collapse file tree 3 files changed +75
-0
lines changed Expand file tree Collapse file tree 3 files changed +75
-0
lines changed 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
+ #![ feature( unboxed_closures) ]
12
+
13
+ // Test that an unboxed closure that captures a free variable by
14
+ // reference cannot escape the region of that variable.
15
+ fn main ( ) {
16
+ let _f = {
17
+ let x = 0 u;
18
+ |: | x //~ ERROR cannot infer an appropriate lifetime due to conflicting requirements
19
+ } ;
20
+ }
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
+ #![ feature( unboxed_closures) ]
12
+
13
+ // Test that an unboxed closure that mutates a free variable will
14
+ // cause borrow conflicts.
15
+
16
+ fn main ( ) {
17
+ let mut x = 0 u;
18
+ let f = |: | x += 1 ;
19
+ let _y = x; //~ ERROR cannot use `x` because it was mutably borrowed
20
+ }
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
+ #![ feature( overloaded_calls, unboxed_closures) ]
12
+
13
+ // Test by-ref capture of environment in unboxed closure types
14
+
15
+ fn call_fn < F : Fn ( ) > ( f : F ) {
16
+ f ( )
17
+ }
18
+
19
+ fn call_fn_mut < F : FnMut ( ) > ( mut f : F ) {
20
+ f ( )
21
+ }
22
+
23
+ fn call_fn_once < F : FnOnce ( ) > ( f : F ) {
24
+ f ( )
25
+ }
26
+
27
+ fn main ( ) {
28
+ let mut x = 0 u;
29
+ let y = 2 u;
30
+
31
+ call_fn( |& : | x += y) ;
32
+ call_fn_mut( |& mut : | x += y) ;
33
+ call_fn_once( |: | x += y) ;
34
+ assert_eq ! ( x, y * 3 ) ;
35
+ }
You can’t perform that action at this time.
13 commit comments
bors commentedon Oct 3, 2014
saw approval from pcwalton
at https://github.com/bkoropoff/rust/commit/521ca31071c01b21de40ce3477a81972103b3db9
bors commentedon Oct 3, 2014
merging bkoropoff/rust/unboxed-by-ref = 521ca31 into auto
bors commentedon Oct 3, 2014
bkoropoff/rust/unboxed-by-ref = 521ca31 merged ok, testing candidate = a7027975
bors commentedon Oct 3, 2014
some tests failed:
exception: http://buildbot.rust-lang.org/builders/auto-mac-32-opt/builds/1654
exception: http://buildbot.rust-lang.org/builders/auto-mac-64-opt/builds/1651
exception: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-c/builds/1645
exception: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-t/builds/1651
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-opt/builds/1648
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-c/builds/1647
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-t/builds/1647
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-opt/builds/1651
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-c/builds/1645
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-t/builds/1644
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-x-android-t/builds/1647
exception: http://buildbot.rust-lang.org/builders/auto-win-32-opt/builds/1303
exception: http://buildbot.rust-lang.org/builders/auto-win-64-opt/builds/138
bors commentedon Oct 3, 2014
saw approval from pcwalton
at https://github.com/bkoropoff/rust/commit/521ca31071c01b21de40ce3477a81972103b3db9
bors commentedon Oct 3, 2014
merging bkoropoff/rust/unboxed-by-ref = 521ca31 into auto
bors commentedon Oct 3, 2014
bkoropoff/rust/unboxed-by-ref = 521ca31 merged ok, testing candidate = a894a95b
bors commentedon Oct 3, 2014
some tests failed:
failure: http://buildbot.rust-lang.org/builders/auto-mac-64-opt/builds/1652
exception: http://buildbot.rust-lang.org/builders/auto-mac-32-opt/builds/1655
exception: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-c/builds/1646
exception: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-t/builds/1652
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-opt/builds/1649
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-c/builds/1648
exception: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-t/builds/1648
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-opt/builds/1652
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-c/builds/1646
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-t/builds/1645
exception: http://buildbot.rust-lang.org/builders/auto-linux-64-x-android-t/builds/1648
exception: http://buildbot.rust-lang.org/builders/auto-win-32-opt/builds/1304
exception: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-t/builds/1302
exception: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-c/builds/1306
exception: http://buildbot.rust-lang.org/builders/auto-win-64-opt/builds/139
exception: http://buildbot.rust-lang.org/builders/auto-win-64-nopt-t/builds/137
exception: http://buildbot.rust-lang.org/builders/auto-win-64-nopt-c/builds/136
bors commentedon Oct 4, 2014
saw approval from pcwalton
at https://github.com/bkoropoff/rust/commit/521ca31071c01b21de40ce3477a81972103b3db9
bors commentedon Oct 4, 2014
merging bkoropoff/rust/unboxed-by-ref = 521ca31 into auto
bors commentedon Oct 4, 2014
bkoropoff/rust/unboxed-by-ref = 521ca31 merged ok, testing candidate = 136ab3c
bors commentedon Oct 4, 2014
all tests pass:
success: http://buildbot.rust-lang.org/builders/auto-mac-32-opt/builds/1657
success: http://buildbot.rust-lang.org/builders/auto-mac-64-opt/builds/1654
success: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-c/builds/1648
success: http://buildbot.rust-lang.org/builders/auto-mac-64-nopt-t/builds/1654
success: http://buildbot.rust-lang.org/builders/auto-linux-32-opt/builds/1651
success: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-c/builds/1650
success: http://buildbot.rust-lang.org/builders/auto-linux-32-nopt-t/builds/1650
success: http://buildbot.rust-lang.org/builders/auto-linux-64-opt/builds/1654
success: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-c/builds/1648
success: http://buildbot.rust-lang.org/builders/auto-linux-64-nopt-t/builds/1647
success: http://buildbot.rust-lang.org/builders/auto-linux-64-x-android-t/builds/1650
success: http://buildbot.rust-lang.org/builders/auto-win-32-opt/builds/1306
success: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-t/builds/1304
success: http://buildbot.rust-lang.org/builders/auto-win-32-nopt-c/builds/1308
success: http://buildbot.rust-lang.org/builders/auto-win-64-opt/builds/141
success: http://buildbot.rust-lang.org/builders/auto-win-64-nopt-t/builds/139
success: http://buildbot.rust-lang.org/builders/auto-win-64-nopt-c/builds/138
bors commentedon Oct 4, 2014
fast-forwarding master to auto = 136ab3c