about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-10-11 13:26:09 +0000
committerbors <bors@rust-lang.org>2017-10-11 13:26:09 +0000
commitc0d40a1908723a7bbf0d2f745570162de250f188 (patch)
tree28d342c8beb99445f408a545a7ff101d4f161889
parent264aafe0566e521bbc95bd3f44dae97591c9fd20 (diff)
parent4a90366464a109f5959917cce188f73fef6aa225 (diff)
downloadrust-c0d40a1908723a7bbf0d2f745570162de250f188.tar.gz
rust-c0d40a1908723a7bbf0d2f745570162de250f188.zip
Auto merge of #45192 - steveklabnik:rollup, r=steveklabnik
Rollup of 5 pull requests

- Successful merges: #45071, #45139, #45148, #45171, #45180
- Failed merges: #45121
-rw-r--r--RELEASES.md12
-rwxr-xr-xsrc/bootstrap/configure.py7
-rwxr-xr-xsrc/etc/gdb_rust_pretty_printing.py15
-rw-r--r--src/librustc/ty/maps/plumbing.rs51
-rw-r--r--src/test/debuginfo/pretty-std.rs4
-rw-r--r--src/test/incremental/hashes/let_expressions.rs160
6 files changed, 229 insertions, 20 deletions
diff --git a/RELEASES.md b/RELEASES.md
index e65934a89e6..194745d9caa 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -3,12 +3,6 @@ Version 1.21.0 (2017-10-12)
 
 Language
 --------
-- [Relaxed path syntax. You can now add type parameters to values][43540]
-  Example:
-  ```rust
-  my_macro!(Vec<i32>::new); // Always worked
-  my_macro!(Vec::<i32>::new); // Now works
-  ```
 - [You can now use static references for literals.][43838]
   Example:
   ```rust
@@ -16,6 +10,12 @@ Language
       let x: &'static u32 = &0;
   }
   ```
+- [Relaxed path syntax. Optional `::` before `<` is now allowed in all contexts.][43540]
+  Example:
+  ```rust
+  my_macro!(Vec<i32>::new); // Always worked
+  my_macro!(Vec::<i32>::new); // Now works
+  ```
 
 Compiler
 --------
diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
index 8e3ee90207f..0ea4af386c7 100755
--- a/src/bootstrap/configure.py
+++ b/src/bootstrap/configure.py
@@ -407,11 +407,6 @@ with open('Makefile', 'w') as f:
     contents = contents.replace("$(CFG_PYTHON)", sys.executable)
     f.write(contents)
 
-# Finally, clean up with a bit of a help message
-relpath = os.path.dirname(__file__)
-if relpath == '':
-    relpath = '.'
-
 p("")
-p("run `python {}/x.py --help`".format(relpath))
+p("run `python {}/x.py --help`".format(rust_dir))
 p("")
diff --git a/src/etc/gdb_rust_pretty_printing.py b/src/etc/gdb_rust_pretty_printing.py
index 822dc581404..0612873e281 100755
--- a/src/etc/gdb_rust_pretty_printing.py
+++ b/src/etc/gdb_rust_pretty_printing.py
@@ -248,7 +248,10 @@ class RustStringSlicePrinter(object):
     def to_string(self):
         (length, data_ptr) = rustpp.extract_length_and_ptr_from_slice(self.__val)
         raw_ptr = data_ptr.get_wrapped_value()
-        return '"%s"' % raw_ptr.string(encoding="utf-8", length=length)
+        return raw_ptr.lazy_string(encoding="utf-8", length=length)
+
+    def display_hint(self):
+        return "string"
 
 
 class RustStdVecPrinter(object):
@@ -278,9 +281,11 @@ class RustStdStringPrinter(object):
     def to_string(self):
         vec = self.__val.get_child_at_index(0)
         (length, data_ptr, cap) = rustpp.extract_length_ptr_and_cap_from_std_vec(vec)
-        return '"%s"' % data_ptr.get_wrapped_value().string(encoding="utf-8",
-                                                            length=length)
+        return data_ptr.get_wrapped_value().lazy_string(encoding="utf-8",
+                                                        length=length)
 
+    def display_hint(self):
+        return "string"
 
 class RustOsStringPrinter(object):
     def __init__(self, val):
@@ -294,8 +299,10 @@ class RustOsStringPrinter(object):
 
         (length, data_ptr, cap) = rustpp.extract_length_ptr_and_cap_from_std_vec(
             vec)
-        return '"%s"' % data_ptr.get_wrapped_value().string(length=length)
+        return data_ptr.get_wrapped_value().lazy_string(length=length)
 
+    def display_hint(self):
+        return "string"
 
 class RustCStyleVariantPrinter(object):
     def __init__(self, val):
diff --git a/src/librustc/ty/maps/plumbing.rs b/src/librustc/ty/maps/plumbing.rs
index 88b619558d9..389b0401b86 100644
--- a/src/librustc/ty/maps/plumbing.rs
+++ b/src/librustc/ty/maps/plumbing.rs
@@ -603,6 +603,49 @@ macro_rules! define_provider_struct {
     };
 }
 
+
+/// The red/green evaluation system will try to mark a specific DepNode in the
+/// dependency graph as green by recursively trying to mark the dependencies of
+/// that DepNode as green. While doing so, it will sometimes encounter a DepNode
+/// where we don't know if it is red or green and we therefore actually have
+/// to recompute its value in order to find out. Since the only piece of
+/// information that we have at that point is the DepNode we are trying to
+/// re-evaluate, we need some way to re-run a query from just that. This is what
+/// `force_from_dep_node()` implements.
+///
+/// In the general case, a DepNode consists of a DepKind and an opaque
+/// GUID/fingerprint that will uniquely identify the node. This GUID/fingerprint
+/// is usually constructed by computing a stable hash of the query-key that the
+/// DepNode corresponds to. Consequently, it is not in general possible to go
+/// back from hash to query-key (since hash functions are not reversible). For
+/// this reason `force_from_dep_node()` is expected to fail from time to time
+/// because we just cannot find out, from the DepNode alone, what the
+/// corresponding query-key is and therefore cannot re-run the query.
+///
+/// The system deals with this case letting `try_mark_green` fail which forces
+/// the root query to be re-evaluated.
+///
+/// Now, if force_from_dep_node() would always fail, it would be pretty useless.
+/// Fortunately, we can use some contextual information that will allow us to
+/// reconstruct query-keys for certain kinds of DepNodes. In particular, we
+/// enforce by construction that the GUID/fingerprint of certain DepNodes is a
+/// valid DefPathHash. Since we also always build a huge table that maps every
+/// DefPathHash in the current codebase to the corresponding DefId, we have
+/// everything we need to re-run the query.
+///
+/// Take the `mir_validated` query as an example. Like many other queries, it
+/// just has a single parameter: the DefId of the item it will compute the
+/// validated MIR for. Now, when we call `force_from_dep_node()` on a dep-node
+/// with kind `MirValidated`, we know that the GUID/fingerprint of the dep-node
+/// is actually a DefPathHash, and can therefore just look up the corresponding
+/// DefId in `tcx.def_path_hash_to_def_id`.
+///
+/// When you implement a new query, it will likely have a corresponding new
+/// DepKind, and you'll have to support it here in `force_from_dep_node()`. As
+/// a rule of thumb, if your query takes a DefId or DefIndex as sole parameter,
+/// then `force_from_dep_node()` should not fail for it. Otherwise, you can just
+/// add it to the "We don't have enough information to reconstruct..." group in
+/// the match below.
 pub fn force_from_dep_node<'a, 'gcx, 'lcx>(tcx: TyCtxt<'a, 'gcx, 'lcx>,
                                            dep_node: &DepNode)
                                            -> bool {
@@ -687,16 +730,16 @@ pub fn force_from_dep_node<'a, 'gcx, 'lcx>(tcx: TyCtxt<'a, 'gcx, 'lcx>,
         DepKind::Hir |
 
         // This are anonymous nodes
+        DepKind::TraitSelect |
+
+        // We don't have enough information to reconstruct the query key of
+        // these
         DepKind::IsCopy |
         DepKind::IsSized |
         DepKind::IsFreeze |
         DepKind::NeedsDrop |
         DepKind::Layout |
-        DepKind::TraitSelect |
         DepKind::ConstEval |
-
-        // We don't have enough information to reconstruct the query key of
-        // these
         DepKind::InstanceSymbolName |
         DepKind::MirShim |
         DepKind::BorrowCheckKrate |
diff --git a/src/test/debuginfo/pretty-std.rs b/src/test/debuginfo/pretty-std.rs
index 9596f0287bc..2a28c895b79 100644
--- a/src/test/debuginfo/pretty-std.rs
+++ b/src/test/debuginfo/pretty-std.rs
@@ -44,6 +44,10 @@
 // gdb-command: print some_string
 // gdb-check:$8 = Some = {"IAMA optional string!"}
 
+// gdb-command: set print length 5
+// gdb-command: print some_string
+// gdb-check:$8 = Some = {"IAMA "...}
+
 
 // === LLDB TESTS ==================================================================================
 
diff --git a/src/test/incremental/hashes/let_expressions.rs b/src/test/incremental/hashes/let_expressions.rs
index 9e532548e11..d46fbd36760 100644
--- a/src/test/incremental/hashes/let_expressions.rs
+++ b/src/test/incremental/hashes/let_expressions.rs
@@ -38,6 +38,20 @@ pub fn change_name() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_clean(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn change_name() {
     let _y = 2u64;
 }
@@ -57,6 +71,20 @@ pub fn add_type() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_clean(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_clean(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn add_type() {
     let _x: u32 = 2u32;
 }
@@ -76,6 +104,20 @@ pub fn change_type() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn change_type() {
     let _x: u8 = 2;
 }
@@ -95,6 +137,20 @@ pub fn change_mutability_of_reference_type() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_clean(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn change_mutability_of_reference_type() {
     let _x: &mut u64;
 }
@@ -114,6 +170,20 @@ pub fn change_mutability_of_slot() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn change_mutability_of_slot() {
     let _x: u64 = 0;
 }
@@ -133,6 +203,20 @@ pub fn change_simple_binding_to_pattern() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn change_simple_binding_to_pattern() {
     let (_a, _b) = (0u8, 'x');
 }
@@ -152,6 +236,20 @@ pub fn change_name_in_pattern() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_clean(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn change_name_in_pattern() {
     let (_a, _c) = (1u8, 'y');
 }
@@ -171,6 +269,20 @@ pub fn add_ref_in_pattern() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn add_ref_in_pattern() {
     let (ref _a, _b) = (1u8, 'y');
 }
@@ -190,6 +302,12 @@ pub fn add_amp_in_pattern() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
 pub fn add_amp_in_pattern() {
     let (&_a, _b) = (&1u8, 'y');
 }
@@ -209,6 +327,20 @@ pub fn change_mutability_of_binding_in_pattern() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn change_mutability_of_binding_in_pattern() {
     let (mut _a, _b) = (99u8, 'q');
 }
@@ -228,6 +360,20 @@ pub fn add_initializer() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_dirty(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn add_initializer() {
     let _x: i16 = 3i16;
 }
@@ -247,6 +393,20 @@ pub fn change_initializer() {
 #[rustc_clean(label="HirBody", cfg="cfail3")]
 #[rustc_metadata_clean(cfg="cfail2")]
 #[rustc_metadata_clean(cfg="cfail3")]
+#[rustc_dirty(label="MirValidated", cfg="cfail2")]
+#[rustc_clean(label="MirValidated", cfg="cfail3")]
+#[rustc_dirty(label="MirOptimized", cfg="cfail2")]
+#[rustc_clean(label="MirOptimized", cfg="cfail3")]
+#[rustc_clean(label="TypeckTables", cfg="cfail2")]
+#[rustc_clean(label="TypeckTables", cfg="cfail3")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail2")]
+#[rustc_clean(label="TypeOfItem", cfg="cfail3")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail2")]
+#[rustc_clean(label="GenericsOfItem", cfg="cfail3")]
+#[rustc_clean(label="FnSignature", cfg="cfail2")]
+#[rustc_clean(label="FnSignature", cfg="cfail3")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail2")]
+#[rustc_clean(label="PredicatesOfItem", cfg="cfail3")]
 pub fn change_initializer() {
     let _x = 5u16;
 }