1 // This test case tests the incremental compilation hash (ICH) implementation
2 // for `extern` modules.
4 // The general pattern followed here is: Change one thing between rev1 and rev2
5 // and make sure that the hash has changed, then change nothing between rev2 and
6 // rev3 and make sure that the hash has not changed.
8 // build-pass (FIXME(62277): could be check-pass?)
9 // revisions: cfail1 cfail2 cfail3
10 // compile-flags: -Z query-dep-graph -Zincremental-ignore-spans
13 #![feature(rustc_attrs)]
14 #![feature(unboxed_closures)]
15 #![feature(link_args)]
19 // Change function name --------------------------------------------------------
22 pub fn change_function_name1(c
: i64) -> i32;
26 #[rustc_dirty(cfg="cfail2")]
27 #[rustc_clean(cfg="cfail3")]
29 pub fn change_function_name2(c
: i64) -> i32;
34 // Change parameter name -------------------------------------------------------
37 pub fn change_parameter_name(c
: i64) -> i32;
41 #[rustc_dirty(cfg="cfail2")]
42 #[rustc_clean(cfg="cfail3")]
44 pub fn change_parameter_name(d
: i64) -> i32;
49 // Change parameter type -------------------------------------------------------
52 pub fn change_parameter_type(c
: i64) -> i32;
56 #[rustc_dirty(cfg="cfail2")]
57 #[rustc_clean(cfg="cfail3")]
59 pub fn change_parameter_type(c
: i32) -> i32;
64 // Change return type ----------------------------------------------------------
67 pub fn change_return_type(c
: i32) -> i32;
71 #[rustc_dirty(cfg="cfail2")]
72 #[rustc_clean(cfg="cfail3")]
74 pub fn change_return_type(c
: i32) -> i8;
79 // Add parameter ---------------------------------------------------------------
82 pub fn add_parameter(c
: i32) -> i32;
86 #[rustc_dirty(cfg="cfail2")]
87 #[rustc_clean(cfg="cfail3")]
89 pub fn add_parameter(c
: i32, d
: i32) -> i32;
94 // Add return type -------------------------------------------------------------
97 pub fn add_return_type(c
: i32);
101 #[rustc_dirty(cfg="cfail2")]
102 #[rustc_clean(cfg="cfail3")]
104 pub fn add_return_type(c
: i32) -> i32;
109 // Make function variadic ------------------------------------------------------
112 pub fn make_function_variadic(c
: i32);
116 #[rustc_dirty(cfg="cfail2")]
117 #[rustc_clean(cfg="cfail3")]
119 pub fn make_function_variadic(c
: i32, ...);
124 // Change calling convention ---------------------------------------------------
127 pub fn change_calling_convention(c
: i32);
131 #[rustc_dirty(cfg="cfail2")]
132 #[rustc_clean(cfg="cfail3")]
134 pub fn change_calling_convention(c
: i32);
139 // Make function public --------------------------------------------------------
142 fn make_function_public(c
: i32);
146 #[rustc_dirty(cfg="cfail2")]
147 #[rustc_clean(cfg="cfail3")]
149 pub fn make_function_public(c
: i32);
154 // Add function ----------------------------------------------------------------
157 pub fn add_function1(c
: i32);
161 #[rustc_dirty(cfg="cfail2")]
162 #[rustc_clean(cfg="cfail3")]
164 pub fn add_function1(c
: i32);
165 pub fn add_function2();
170 // Change link-args ------------------------------------------------------------
172 #[link_args = "-foo -bar"]
174 pub fn change_link_args(c
: i32);
178 #[rustc_dirty(cfg="cfail2")]
179 #[rustc_clean(cfg="cfail3")]
180 #[link_args = "-foo -bar -baz"]
182 pub fn change_link_args(c
: i32);
187 // Change link-name ------------------------------------------------------------
189 #[link(name = "foo")]
191 pub fn change_link_name(c
: i32);
195 #[rustc_dirty(cfg="cfail2")]
196 #[rustc_clean(cfg="cfail3")]
197 #[link(name = "bar")]
199 pub fn change_link_name(c
: i32);
205 // Indirectly change parameter type --------------------------------------------
206 mod indirectly_change_parameter_type
{
208 use super::c_i32
as c_int
;
210 use super::c_i64
as c_int
;
212 #[rustc_dirty(cfg="cfail2")]
213 #[rustc_clean(cfg="cfail3")]
215 pub fn indirectly_change_parameter_type(c
: c_int
);
221 // Indirectly change return type --------------------------------------------
222 mod indirectly_change_return_type
{
224 use super::c_i32
as c_int
;
226 use super::c_i64
as c_int
;
228 #[rustc_dirty(cfg="cfail2")]
229 #[rustc_clean(cfg="cfail3")]
231 pub fn indirectly_change_return_type() -> c_int
;