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 match 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)]
28 // Add Arm ---------------------------------------------------------------------
30 pub fn add_arm(x: u32) -> u32 {
39 #[rustc_dirty(label="Hir", cfg="cfail2")]
40 #[rustc_clean(label="Hir", cfg="cfail3")]
41 #[rustc_metadata_dirty(cfg="cfail2")]
42 #[rustc_metadata_clean(cfg="cfail3")]
43 pub fn add_arm(x: u32) -> u32 {
54 // Change Order Of Arms --------------------------------------------------------
56 pub fn change_order_of_arms(x: u32) -> u32 {
65 #[rustc_dirty(label="Hir", cfg="cfail2")]
66 #[rustc_clean(label="Hir", cfg="cfail3")]
67 #[rustc_metadata_dirty(cfg="cfail2")]
68 #[rustc_metadata_clean(cfg="cfail3")]
69 pub fn change_order_of_arms(x: u32) -> u32 {
79 // Add Guard Clause ------------------------------------------------------------
81 pub fn add_guard_clause(x: u32, y: bool) -> u32 {
90 #[rustc_dirty(label="Hir", cfg="cfail2")]
91 #[rustc_clean(label="Hir", cfg="cfail3")]
92 #[rustc_metadata_dirty(cfg="cfail2")]
93 #[rustc_metadata_clean(cfg="cfail3")]
94 pub fn add_guard_clause(x: u32, y: bool) -> u32 {
104 // Change Guard Clause ------------------------------------------------------------
106 pub fn change_guard_clause(x: u32, y: bool) -> u32 {
115 #[rustc_dirty(label="Hir", cfg="cfail2")]
116 #[rustc_clean(label="Hir", cfg="cfail3")]
117 #[rustc_metadata_dirty(cfg="cfail2")]
118 #[rustc_metadata_clean(cfg="cfail3")]
119 pub fn change_guard_clause(x: u32, y: bool) -> u32 {
129 // Add @-Binding ---------------------------------------------------------------
131 pub fn add_at_binding(x: u32) -> u32 {
140 #[rustc_dirty(label="Hir", cfg="cfail2")]
141 #[rustc_clean(label="Hir", cfg="cfail3")]
142 #[rustc_metadata_dirty(cfg="cfail2")]
143 #[rustc_metadata_clean(cfg="cfail3")]
144 pub fn add_at_binding(x: u32) -> u32 {
154 // Change Name of @-Binding ----------------------------------------------------
156 pub fn change_name_of_at_binding(x: u32) -> u32 {
165 #[rustc_dirty(label="Hir", cfg="cfail2")]
166 #[rustc_clean(label="Hir", cfg="cfail3")]
167 #[rustc_metadata_dirty(cfg="cfail2")]
168 #[rustc_metadata_clean(cfg="cfail3")]
169 pub fn change_name_of_at_binding(x: u32) -> u32 {
179 // Change Simple Binding To Pattern --------------------------------------------
181 pub fn change_simple_name_to_pattern(x: u32) -> u32 {
189 #[rustc_dirty(label="Hir", cfg="cfail2")]
190 #[rustc_clean(label="Hir", cfg="cfail3")]
191 #[rustc_metadata_dirty(cfg="cfail2")]
192 #[rustc_metadata_clean(cfg="cfail3")]
193 pub fn change_simple_name_to_pattern(x: u32) -> u32 {
202 // Change Name In Pattern ------------------------------------------------------
204 pub fn change_name_in_pattern(x: u32) -> u32 {
213 #[rustc_dirty(label="Hir", cfg="cfail2")]
214 #[rustc_clean(label="Hir", cfg="cfail3")]
215 #[rustc_metadata_dirty(cfg="cfail2")]
216 #[rustc_metadata_clean(cfg="cfail3")]
217 pub fn change_name_in_pattern(x: u32) -> u32 {
227 // Change Mutability Of Binding In Pattern -------------------------------------
229 pub fn change_mutability_of_binding_in_pattern(x: u32) -> u32 {
237 #[rustc_dirty(label="Hir", cfg="cfail2")]
238 #[rustc_clean(label="Hir", cfg="cfail3")]
239 #[rustc_metadata_dirty(cfg="cfail2")]
240 #[rustc_metadata_clean(cfg="cfail3")]
241 pub fn change_mutability_of_binding_in_pattern(x: u32) -> u32 {
250 // Add `ref` To Binding In Pattern -------------------------------------
252 pub fn add_ref_to_binding_in_pattern(x: u32) -> u32 {
260 #[rustc_dirty(label="Hir", cfg="cfail2")]
261 #[rustc_clean(label="Hir", cfg="cfail3")]
262 #[rustc_metadata_dirty(cfg="cfail2")]
263 #[rustc_metadata_clean(cfg="cfail3")]
264 pub fn add_ref_to_binding_in_pattern(x: u32) -> u32 {
273 // Add `&` To Binding In Pattern -------------------------------------
275 pub fn add_amp_to_binding_in_pattern(x: u32) -> u32 {
283 #[rustc_dirty(label="Hir", cfg="cfail2")]
284 #[rustc_clean(label="Hir", cfg="cfail3")]
285 #[rustc_metadata_dirty(cfg="cfail2")]
286 #[rustc_metadata_clean(cfg="cfail3")]
287 pub fn add_amp_to_binding_in_pattern(x: u32) -> u32 {
296 // Change RHS Of Arm -----------------------------------------------------------
298 pub fn change_rhs_of_arm(x: u32) -> u32 {
307 #[rustc_dirty(label="Hir", cfg="cfail2")]
308 #[rustc_clean(label="Hir", cfg="cfail3")]
309 #[rustc_metadata_dirty(cfg="cfail2")]
310 #[rustc_metadata_clean(cfg="cfail3")]
311 pub fn change_rhs_of_arm(x: u32) -> u32 {
321 // Add Alternative To Arm ------------------------------------------------------
323 pub fn add_alternative_to_arm(x: u32) -> u32 {
332 #[rustc_dirty(label="Hir", cfg="cfail2")]
333 #[rustc_clean(label="Hir", cfg="cfail3")]
334 #[rustc_metadata_dirty(cfg="cfail2")]
335 #[rustc_metadata_clean(cfg="cfail3")]
336 pub fn add_alternative_to_arm(x: u32) -> u32 {