]> git.lizzy.rs Git - rust.git/blob - src/test/codegen-units/partitioning/local-generic.rs
trans: Treat generics like regular functions, not like #[inline] functions during...
[rust.git] / src / test / codegen-units / partitioning / local-generic.rs
1 // Copyright 2016 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 // ignore-tidy-linelength
12 // We specify -Z incremental here because we want to test the partitioning for
13 // incremental compilation
14 // compile-flags:-Zprint-trans-items=eager -Zincremental=tmp/partitioning-tests/local-generic
15
16 #![allow(dead_code)]
17 #![crate_type="lib"]
18
19 //~ TRANS_ITEM fn local_generic::generic[0]<u32> @@ local_generic.volatile[External]
20 //~ TRANS_ITEM fn local_generic::generic[0]<u64> @@ local_generic.volatile[External]
21 //~ TRANS_ITEM fn local_generic::generic[0]<char> @@ local_generic.volatile[External]
22 //~ TRANS_ITEM fn local_generic::generic[0]<&str> @@ local_generic.volatile[External]
23 pub fn generic<T>(x: T) -> T { x }
24
25 //~ TRANS_ITEM fn local_generic::user[0] @@ local_generic[External]
26 fn user() {
27     let _ = generic(0u32);
28 }
29
30 mod mod1 {
31     pub use super::generic;
32
33     //~ TRANS_ITEM fn local_generic::mod1[0]::user[0] @@ local_generic-mod1[External]
34     fn user() {
35         let _ = generic(0u64);
36     }
37
38     mod mod1 {
39         use super::generic;
40
41         //~ TRANS_ITEM fn local_generic::mod1[0]::mod1[0]::user[0] @@ local_generic-mod1-mod1[External]
42         fn user() {
43             let _ = generic('c');
44         }
45     }
46 }
47
48 mod mod2 {
49     use super::generic;
50
51     //~ TRANS_ITEM fn local_generic::mod2[0]::user[0] @@ local_generic-mod2[External]
52     fn user() {
53         let _ = generic("abc");
54     }
55 }