File tree Expand file tree Collapse file tree 6 files changed +131
-0
lines changed Expand file tree Collapse file tree 6 files changed +131
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Copyright 2015 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
+ // Crate that exports a const fn. Used for testing cross-crate.
12
+
13
+ #![ crate_type="rlib" ]
14
+ #![ feature( const_fn) ]
15
+
16
+ pub const fn foo ( ) -> usize { 22 } //~ ERROR const fn is unstable
Original file line number Diff line number Diff line change
1
+ // Copyright 2015 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 use of const fn from another crate without a feature gate.
12
+
13
+ // aux-build:const_fn_lib.rs
14
+
15
+ extern crate const_fn_lib;
16
+
17
+ use const_fn_lib:: foo;
18
+
19
+ fn main ( ) {
20
+ let x: [ usize ; foo ( ) ] = [ ] ; //~ ERROR unsupported constant expr
21
+ }
Original file line number Diff line number Diff line change
1
+ // Copyright 2015 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 use of const fn from another crate without a feature gate.
12
+
13
+ #![ feature( rustc_attrs) ]
14
+ #![ allow( unused_variables) ]
15
+
16
+ // aux-build:const_fn_lib.rs
17
+
18
+ extern crate const_fn_lib;
19
+
20
+ use const_fn_lib:: foo;
21
+
22
+ #[ rustc_error]
23
+ fn main ( ) { //~ ERROR compilation successful
24
+ let x = foo ( ) ; // use outside a constant is ok
25
+ }
Original file line number Diff line number Diff line change
1
+ // Copyright 2015 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 use of const fn from another crate without a feature gate.
12
+
13
+ // aux-build:const_fn_lib.rs
14
+
15
+ extern crate const_fn_lib;
16
+
17
+ use const_fn_lib:: foo;
18
+
19
+ static FOO : usize = foo ( ) ; //~ ERROR const fns are an unstable feature
20
+ const BAR : usize = foo ( ) ; //~ ERROR const fns are an unstable feature
21
+
22
+ macro_rules! constant {
23
+ ( $n: ident: $t: ty = $v: expr) => {
24
+ const $n: $t = $v;
25
+ }
26
+ }
27
+
28
+ constant ! {
29
+ BAZ : usize = foo( ) //~ ERROR const fns are an unstable feature
30
+ }
31
+
32
+ fn main ( ) {
33
+ // let x: [usize; foo()] = [];
34
+ }
Original file line number Diff line number Diff line change @@ -28,6 +28,16 @@ impl Foo for u32 {
28
28
static FOO : usize = foo ( ) ;
29
29
const BAR : usize = foo ( ) ;
30
30
31
+ macro_rules! constant {
32
+ ( $n: ident: $t: ty = $v: expr) => {
33
+ const $n: $t = $v;
34
+ }
35
+ }
36
+
37
+ constant ! {
38
+ BAZ : usize = foo( )
39
+ }
40
+
31
41
fn main ( ) {
32
42
let x: [ usize ; foo ( ) ] = [ ] ;
33
43
}
Original file line number Diff line number Diff line change
1
+ // Copyright 2015 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
+ // aux-build:const_fn_lib.rs
12
+
13
+ // A very basic test of const fn functionality.
14
+
15
+ #![ feature( const_fn) ]
16
+
17
+ extern crate const_fn_lib;
18
+
19
+ use const_fn_lib:: foo;
20
+
21
+ const FOO : usize = foo ( ) ;
22
+
23
+ fn main ( ) {
24
+ assert_eq ! ( FOO , 22 ) ;
25
+ }
You can’t perform that action at this time.
0 commit comments