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.
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.
12 // This test case tests the incremental compilation hash (ICH) implementation
13 // for let expressions.
15 // The general pattern followed here is: Change one thing between rev1 and rev2
16 // and make sure that the hash has changed, then change nothing between rev2 and
17 // rev3 and make sure that the hash has not changed.
19 // must-compile-successfully
20 // revisions: cfail1 cfail2 cfail3
21 // compile-flags: -Z query-dep-graph
25 #![feature(rustc_attrs)]
30 // Change Method Name -----------------------------------------------------------
33 pub fn method_name() { }
37 #[rustc_dirty(label="Hir", cfg="cfail2")]
38 #[rustc_clean(label="Hir", cfg="cfail3")]
39 #[rustc_metadata_dirty(cfg="cfail2")]
40 #[rustc_metadata_clean(cfg="cfail3")]
42 #[rustc_dirty(label="Hir", cfg="cfail2")]
43 #[rustc_clean(label="Hir", cfg="cfail3")]
44 #[rustc_metadata_dirty(cfg="cfail2")]
45 #[rustc_metadata_clean(cfg="cfail3")]
46 pub fn method_name2() { }
49 // Change Method Body -----------------------------------------------------------
51 // This should affect the method itself, but not the impl.
54 pub fn method_body() { }
58 #[rustc_clean(label="Hir", cfg="cfail2")]
59 #[rustc_clean(label="Hir", cfg="cfail3")]
60 #[rustc_metadata_clean(cfg="cfail2")]
61 #[rustc_metadata_clean(cfg="cfail3")]
63 #[rustc_dirty(label="Hir", cfg="cfail2")]
64 #[rustc_clean(label="Hir", cfg="cfail3")]
65 #[rustc_metadata_dirty(cfg="cfail2")]
66 #[rustc_metadata_clean(cfg="cfail3")]
67 pub fn method_body() {
68 println!("Hello, world!");
72 // Change Method Privacy -----------------------------------------------------------
75 pub fn method_privacy() { }
79 #[rustc_dirty(label="Hir", cfg="cfail2")]
80 #[rustc_clean(label="Hir", cfg="cfail3")]
81 #[rustc_metadata_dirty(cfg="cfail2")]
82 #[rustc_metadata_clean(cfg="cfail3")]
84 #[rustc_dirty(label="Hir", cfg="cfail2")]
85 #[rustc_clean(label="Hir", cfg="cfail3")]
86 #[rustc_metadata_dirty(cfg="cfail2")]
87 #[rustc_metadata_clean(cfg="cfail3")]
88 fn method_privacy() { }
91 // Change Method Selfness -----------------------------------------------------------
94 pub fn method_selfness() { }
98 #[rustc_dirty(label="Hir", cfg="cfail2")]
99 #[rustc_clean(label="Hir", cfg="cfail3")]
100 #[rustc_metadata_dirty(cfg="cfail2")]
101 #[rustc_metadata_clean(cfg="cfail3")]
103 #[rustc_dirty(label="Hir", cfg="cfail2")]
104 #[rustc_clean(label="Hir", cfg="cfail3")]
105 #[rustc_metadata_dirty(cfg="cfail2")]
106 #[rustc_metadata_clean(cfg="cfail3")]
107 pub fn method_selfness(&self) { }
110 // Change Method Selfmutness ---------------------------------------------------
113 pub fn method_selfmutness(&self) { }
117 #[rustc_clean(label="Hir", cfg="cfail2")]
118 #[rustc_clean(label="Hir", cfg="cfail3")]
119 #[rustc_metadata_clean(cfg="cfail2")]
120 #[rustc_metadata_clean(cfg="cfail3")]
122 #[rustc_dirty(label="Hir", cfg="cfail2")]
123 #[rustc_clean(label="Hir", cfg="cfail3")]
124 #[rustc_metadata_dirty(cfg="cfail2")]
125 #[rustc_metadata_clean(cfg="cfail3")]
126 pub fn method_selfmutness(&mut self) { }
131 // Add Method To Impl ----------------------------------------------------------
134 pub fn add_method_to_impl1(&self) { }
138 #[rustc_dirty(label="Hir", cfg="cfail2")]
139 #[rustc_clean(label="Hir", cfg="cfail3")]
140 #[rustc_metadata_dirty(cfg="cfail2")]
141 #[rustc_metadata_clean(cfg="cfail3")]
143 #[rustc_clean(label="Hir", cfg="cfail2")]
144 #[rustc_clean(label="Hir", cfg="cfail3")]
145 #[rustc_metadata_clean(cfg="cfail2")]
146 #[rustc_metadata_clean(cfg="cfail3")]
147 pub fn add_method_to_impl1(&self) { }
149 #[rustc_dirty(label="Hir", cfg="cfail2")]
150 #[rustc_clean(label="Hir", cfg="cfail3")]
151 #[rustc_metadata_dirty(cfg="cfail2")]
152 #[rustc_metadata_clean(cfg="cfail3")]
153 pub fn add_method_to_impl2(&self) { }
158 // Add Method Parameter --------------------------------------------------------
161 pub fn add_method_parameter(&self) { }
165 #[rustc_clean(label="Hir", cfg="cfail2")]
166 #[rustc_clean(label="Hir", cfg="cfail3")]
167 #[rustc_metadata_clean(cfg="cfail2")]
168 #[rustc_metadata_clean(cfg="cfail3")]
170 #[rustc_dirty(label="Hir", cfg="cfail2")]
171 #[rustc_clean(label="Hir", cfg="cfail3")]
172 #[rustc_metadata_dirty(cfg="cfail2")]
173 #[rustc_metadata_clean(cfg="cfail3")]
174 pub fn add_method_parameter(&self, _: i32) { }
179 // Change Method Parameter Name ------------------------------------------------
182 pub fn change_method_parameter_name(&self, a: i64) { }
186 #[rustc_clean(label="Hir", cfg="cfail2")]
187 #[rustc_clean(label="Hir", cfg="cfail3")]
188 #[rustc_metadata_clean(cfg="cfail2")]
189 #[rustc_metadata_clean(cfg="cfail3")]
191 #[rustc_dirty(label="Hir", cfg="cfail2")]
192 #[rustc_clean(label="Hir", cfg="cfail3")]
193 #[rustc_metadata_dirty(cfg="cfail2")]
194 #[rustc_metadata_clean(cfg="cfail3")]
195 pub fn change_method_parameter_name(&self, b: i64) { }
200 // Change Method Return Type ---------------------------------------------------
203 pub fn change_method_return_type(&self) -> u16 { 0 }
207 #[rustc_clean(label="Hir", cfg="cfail2")]
208 #[rustc_clean(label="Hir", cfg="cfail3")]
209 #[rustc_metadata_clean(cfg="cfail2")]
210 #[rustc_metadata_clean(cfg="cfail3")]
212 #[rustc_dirty(label="Hir", cfg="cfail2")]
213 #[rustc_clean(label="Hir", cfg="cfail3")]
214 #[rustc_metadata_dirty(cfg="cfail2")]
215 #[rustc_metadata_clean(cfg="cfail3")]
216 pub fn change_method_return_type(&self) -> u8 { 0 }
221 // Make Method #[inline] -------------------------------------------------------
224 pub fn make_method_inline(&self) -> u8 { 0 }
228 #[rustc_clean(label="Hir", cfg="cfail2")]
229 #[rustc_clean(label="Hir", cfg="cfail3")]
230 #[rustc_metadata_clean(cfg="cfail2")]
231 #[rustc_metadata_clean(cfg="cfail3")]
233 #[rustc_dirty(label="Hir", cfg="cfail2")]
234 #[rustc_clean(label="Hir", cfg="cfail3")]
235 #[rustc_metadata_dirty(cfg="cfail2")]
236 #[rustc_metadata_clean(cfg="cfail3")]
238 pub fn make_method_inline(&self) -> u8 { 0 }
243 // Change order of parameters -------------------------------------------------
246 pub fn change_method_parameter_order(&self, a: i64, b: i64) { }
250 #[rustc_clean(label="Hir", cfg="cfail2")]
251 #[rustc_clean(label="Hir", cfg="cfail3")]
252 #[rustc_metadata_clean(cfg="cfail2")]
253 #[rustc_metadata_clean(cfg="cfail3")]
255 #[rustc_dirty(label="Hir", cfg="cfail2")]
256 #[rustc_clean(label="Hir", cfg="cfail3")]
257 #[rustc_metadata_dirty(cfg="cfail2")]
258 #[rustc_metadata_clean(cfg="cfail3")]
259 pub fn change_method_parameter_order(&self, b: i64, a: i64) { }
264 // Make method unsafe ----------------------------------------------------------
267 pub fn make_method_unsafe(&self) { }
271 #[rustc_clean(label="Hir", cfg="cfail2")]
272 #[rustc_clean(label="Hir", cfg="cfail3")]
273 #[rustc_metadata_clean(cfg="cfail2")]
274 #[rustc_metadata_clean(cfg="cfail3")]
276 #[rustc_dirty(label="Hir", cfg="cfail2")]
277 #[rustc_clean(label="Hir", cfg="cfail3")]
278 #[rustc_metadata_dirty(cfg="cfail2")]
279 #[rustc_metadata_clean(cfg="cfail3")]
280 pub unsafe fn make_method_unsafe(&self) { }
285 // Make method extern ----------------------------------------------------------
288 pub fn make_method_extern(&self) { }
292 #[rustc_clean(label="Hir", cfg="cfail2")]
293 #[rustc_clean(label="Hir", cfg="cfail3")]
294 #[rustc_metadata_clean(cfg="cfail2")]
295 #[rustc_metadata_clean(cfg="cfail3")]
297 #[rustc_dirty(label="Hir", cfg="cfail2")]
298 #[rustc_clean(label="Hir", cfg="cfail3")]
299 #[rustc_metadata_dirty(cfg="cfail2")]
300 #[rustc_metadata_clean(cfg="cfail3")]
301 pub extern fn make_method_extern(&self) { }
306 // Change method calling convention --------------------------------------------
309 pub extern "C" fn change_method_calling_convention(&self) { }
313 #[rustc_clean(label="Hir", cfg="cfail2")]
314 #[rustc_clean(label="Hir", cfg="cfail3")]
315 #[rustc_metadata_clean(cfg="cfail2")]
316 #[rustc_metadata_clean(cfg="cfail3")]
318 #[rustc_dirty(label="Hir", cfg="cfail2")]
319 #[rustc_clean(label="Hir", cfg="cfail3")]
320 #[rustc_metadata_dirty(cfg="cfail2")]
321 #[rustc_metadata_clean(cfg="cfail3")]
322 pub extern "system" fn change_method_calling_convention(&self) { }
327 // Add Lifetime Parameter to Method --------------------------------------------
330 pub fn add_lifetime_parameter_to_method(&self) { }
334 #[rustc_clean(label="Hir", cfg="cfail2")]
335 #[rustc_clean(label="Hir", cfg="cfail3")]
336 #[rustc_metadata_clean(cfg="cfail2")]
337 #[rustc_metadata_clean(cfg="cfail3")]
339 #[rustc_dirty(label="Hir", cfg="cfail2")]
340 #[rustc_clean(label="Hir", cfg="cfail3")]
341 #[rustc_metadata_dirty(cfg="cfail2")]
342 #[rustc_metadata_clean(cfg="cfail3")]
343 pub fn add_lifetime_parameter_to_method<'a>(&self) { }
348 // Add Type Parameter To Method ------------------------------------------------
351 pub fn add_type_parameter_to_method(&self) { }
355 #[rustc_clean(label="Hir", cfg="cfail2")]
356 #[rustc_clean(label="Hir", cfg="cfail3")]
357 #[rustc_metadata_clean(cfg="cfail2")]
358 #[rustc_metadata_clean(cfg="cfail3")]
360 #[rustc_dirty(label="Hir", cfg="cfail2")]
361 #[rustc_clean(label="Hir", cfg="cfail3")]
362 #[rustc_metadata_dirty(cfg="cfail2")]
363 #[rustc_metadata_clean(cfg="cfail3")]
364 pub fn add_type_parameter_to_method<T>(&self) { }
369 // Add Lifetime Bound to Lifetime Parameter of Method --------------------------
372 pub fn add_lifetime_bound_to_lifetime_param_of_method<'a, 'b>(&self) { }
376 #[rustc_clean(label="Hir", cfg="cfail2")]
377 #[rustc_clean(label="Hir", cfg="cfail3")]
378 #[rustc_metadata_clean(cfg="cfail2")]
379 #[rustc_metadata_clean(cfg="cfail3")]
381 #[rustc_dirty(label="Hir", cfg="cfail2")]
382 #[rustc_clean(label="Hir", cfg="cfail3")]
383 #[rustc_metadata_dirty(cfg="cfail2")]
384 #[rustc_metadata_clean(cfg="cfail3")]
385 pub fn add_lifetime_bound_to_lifetime_param_of_method<'a, 'b: 'a>(&self) { }
390 // Add Lifetime Bound to Type Parameter of Method ------------------------------
393 pub fn add_lifetime_bound_to_type_param_of_method<'a, T>(&self) { }
397 #[rustc_clean(label="Hir", cfg="cfail2")]
398 #[rustc_clean(label="Hir", cfg="cfail3")]
399 #[rustc_metadata_clean(cfg="cfail2")]
400 #[rustc_metadata_clean(cfg="cfail3")]
402 #[rustc_dirty(label="Hir", cfg="cfail2")]
403 #[rustc_clean(label="Hir", cfg="cfail3")]
404 #[rustc_metadata_dirty(cfg="cfail2")]
405 #[rustc_metadata_clean(cfg="cfail3")]
406 pub fn add_lifetime_bound_to_type_param_of_method<'a, T: 'a>(&self) { }
411 // Add Trait Bound to Type Parameter of Method ------------------------------
414 pub fn add_trait_bound_to_type_param_of_method<T>(&self) { }
418 #[rustc_clean(label="Hir", cfg="cfail2")]
419 #[rustc_clean(label="Hir", cfg="cfail3")]
420 #[rustc_metadata_clean(cfg="cfail2")]
421 #[rustc_metadata_clean(cfg="cfail3")]
423 #[rustc_dirty(label="Hir", cfg="cfail2")]
424 #[rustc_clean(label="Hir", cfg="cfail3")]
425 #[rustc_metadata_dirty(cfg="cfail2")]
426 #[rustc_metadata_clean(cfg="cfail3")]
427 pub fn add_trait_bound_to_type_param_of_method<T: Clone>(&self) { }
432 // Add #[no_mangle] to Method --------------------------------------------------
435 pub fn add_no_mangle_to_method(&self) { }
439 #[rustc_clean(label="Hir", cfg="cfail2")]
440 #[rustc_clean(label="Hir", cfg="cfail3")]
441 #[rustc_metadata_clean(cfg="cfail2")]
442 #[rustc_metadata_clean(cfg="cfail3")]
444 #[rustc_dirty(label="Hir", cfg="cfail2")]
445 #[rustc_clean(label="Hir", cfg="cfail3")]
446 #[rustc_metadata_dirty(cfg="cfail2")]
447 #[rustc_metadata_clean(cfg="cfail3")]
449 pub fn add_no_mangle_to_method(&self) { }
456 // Add Type Parameter To Impl --------------------------------------------------
459 pub fn add_type_parameter_to_impl(&self) { }
463 #[rustc_dirty(label="Hir", cfg="cfail2")]
464 #[rustc_clean(label="Hir", cfg="cfail3")]
465 #[rustc_metadata_dirty(cfg="cfail2")]
466 #[rustc_metadata_clean(cfg="cfail3")]
468 #[rustc_dirty(label="Hir", cfg="cfail2")]
469 #[rustc_clean(label="Hir", cfg="cfail3")]
470 #[rustc_metadata_dirty(cfg="cfail2")]
471 #[rustc_metadata_clean(cfg="cfail3")]
472 pub fn add_type_parameter_to_impl(&self) { }
477 // Change Self Type of Impl ----------------------------------------------------
480 pub fn change_impl_self_type(&self) { }
484 #[rustc_dirty(label="Hir", cfg="cfail2")]
485 #[rustc_clean(label="Hir", cfg="cfail3")]
486 #[rustc_metadata_dirty(cfg="cfail2")]
487 #[rustc_metadata_clean(cfg="cfail3")]
489 #[rustc_dirty(label="Hir", cfg="cfail2")]
490 #[rustc_clean(label="Hir", cfg="cfail3")]
491 #[rustc_metadata_dirty(cfg="cfail2")]
492 #[rustc_metadata_clean(cfg="cfail3")]
493 pub fn change_impl_self_type(&self) { }
498 // Add Lifetime Bound to Impl --------------------------------------------------
501 pub fn add_lifetime_bound_to_impl_parameter(&self) { }
505 #[rustc_dirty(label="Hir", cfg="cfail2")]
506 #[rustc_clean(label="Hir", cfg="cfail3")]
507 #[rustc_metadata_dirty(cfg="cfail2")]
508 #[rustc_metadata_clean(cfg="cfail3")]
509 impl<T: 'static> Bar<T> {
510 #[rustc_dirty(label="Hir", cfg="cfail2")]
511 #[rustc_clean(label="Hir", cfg="cfail3")]
512 #[rustc_metadata_dirty(cfg="cfail2")]
513 #[rustc_metadata_clean(cfg="cfail3")]
514 pub fn add_lifetime_bound_to_impl_parameter(&self) { }
519 // Add Trait Bound to Impl Parameter -------------------------------------------
522 pub fn add_trait_bound_to_impl_parameter(&self) { }
526 #[rustc_dirty(label="Hir", cfg="cfail2")]
527 #[rustc_clean(label="Hir", cfg="cfail3")]
528 #[rustc_metadata_dirty(cfg="cfail2")]
529 #[rustc_metadata_clean(cfg="cfail3")]
530 impl<T: Clone> Bar<T> {
531 #[rustc_dirty(label="Hir", cfg="cfail2")]
532 #[rustc_clean(label="Hir", cfg="cfail3")]
533 #[rustc_metadata_dirty(cfg="cfail2")]
534 #[rustc_metadata_clean(cfg="cfail3")]
535 pub fn add_trait_bound_to_impl_parameter(&self) { }