From af424c1813eca41024da5290e064ead85f68dc0b Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Mon, 1 Feb 2021 10:31:05 +0100 Subject: [PATCH 01/62] Implement SourceIterator and InPlaceIterable for ResultShunt --- library/core/src/iter/adapters/mod.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/library/core/src/iter/adapters/mod.rs b/library/core/src/iter/adapters/mod.rs index 41a7b13232ad..f72e64262009 100644 --- a/library/core/src/iter/adapters/mod.rs +++ b/library/core/src/iter/adapters/mod.rs @@ -191,3 +191,26 @@ where self.try_fold(init, ok(fold)).unwrap() } } + +#[unstable(issue = "none", feature = "inplace_iteration")] +unsafe impl SourceIter for ResultShunt<'_, I, E> +where + I: SourceIter, +{ + type Source = S; + + #[inline] + unsafe fn as_inner(&mut self) -> &mut S { + // SAFETY: unsafe function forwarding to unsafe function with the same requirements + unsafe { SourceIter::as_inner(&mut self.iter) } + } +} + +// SAFETY: ResultShunt::next calls I::find, which has to advance `iter` in order to +// return `Some(_)`. Since `iter` has type `I: InPlaceIterable` it's guaranteed that +// at least one item will be moved out from the underlying source. +#[unstable(issue = "none", feature = "inplace_iteration")] +unsafe impl InPlaceIterable for ResultShunt<'_, I, E> where + I: Iterator> + InPlaceIterable +{ +} From 524b0c9c614d4691b2e21ace47fce4df15900701 Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Mon, 1 Feb 2021 10:31:34 +0100 Subject: [PATCH 02/62] Add test for inplace collection of Result,_> --- library/core/tests/iter/mod.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/library/core/tests/iter/mod.rs b/library/core/tests/iter/mod.rs index 770b6f7601fa..b88f2f2089d1 100644 --- a/library/core/tests/iter/mod.rs +++ b/library/core/tests/iter/mod.rs @@ -100,3 +100,29 @@ pub fn extend_for_unit() { } assert_eq!(x, 5); } + +#[test] +pub fn inplace_result_collect() { + let src = vec![0usize; 256]; + let srcptr = src.as_ptr(); + let sink = src.into_iter().map(|i| Ok(i)).collect::, ()>>().unwrap(); + let sinkptr = sink.as_ptr(); + assert_eq!(srcptr, sinkptr); + + let src: Vec = vec![0usize; 256]; + let srcptr = src.as_ptr(); + let iter = src + .into_iter() + .enumerate() + .map(|i| i.0 + i.1) + .zip(std::iter::repeat(1usize)) + .map(|(a, b)| a + b) + .map_while(Option::Some) + .peekable() + .skip(1) + .map(|e| std::num::NonZeroUsize::new(e)) + .map(|z| z.map(|u| u.get()).ok_or(())); + let sink = iter.collect::, _>>().unwrap(); + let sinkptr = sink.as_ptr(); + assert_eq!(srcptr, sinkptr as *const usize); +} From c6c8f3bf12bdeba01ba16eaacc5808e5321302f8 Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Mon, 1 Feb 2021 17:16:54 +0100 Subject: [PATCH 03/62] Move test --- library/alloc/tests/vec.rs | 4 ++-- library/core/tests/iter/mod.rs | 26 -------------------------- 2 files changed, 2 insertions(+), 28 deletions(-) diff --git a/library/alloc/tests/vec.rs b/library/alloc/tests/vec.rs index e19406d7a069..9ae333ce2c3e 100644 --- a/library/alloc/tests/vec.rs +++ b/library/alloc/tests/vec.rs @@ -931,9 +931,9 @@ fn test_from_iter_specialization_with_iterator_adapters() { .map_while(Option::Some) .peekable() .skip(1) - .map(|e| std::num::NonZeroUsize::new(e)); + .map(|e| if e != 0 { Ok(e) } else { Err(()) }); assert_in_place_trait(&iter); - let sink = iter.collect::>(); + let sink = iter.collect::, _>>().unwrap(); let sinkptr = sink.as_ptr(); assert_eq!(srcptr, sinkptr as *const usize); } diff --git a/library/core/tests/iter/mod.rs b/library/core/tests/iter/mod.rs index b88f2f2089d1..770b6f7601fa 100644 --- a/library/core/tests/iter/mod.rs +++ b/library/core/tests/iter/mod.rs @@ -100,29 +100,3 @@ pub fn extend_for_unit() { } assert_eq!(x, 5); } - -#[test] -pub fn inplace_result_collect() { - let src = vec![0usize; 256]; - let srcptr = src.as_ptr(); - let sink = src.into_iter().map(|i| Ok(i)).collect::, ()>>().unwrap(); - let sinkptr = sink.as_ptr(); - assert_eq!(srcptr, sinkptr); - - let src: Vec = vec![0usize; 256]; - let srcptr = src.as_ptr(); - let iter = src - .into_iter() - .enumerate() - .map(|i| i.0 + i.1) - .zip(std::iter::repeat(1usize)) - .map(|(a, b)| a + b) - .map_while(Option::Some) - .peekable() - .skip(1) - .map(|e| std::num::NonZeroUsize::new(e)) - .map(|z| z.map(|u| u.get()).ok_or(())); - let sink = iter.collect::, _>>().unwrap(); - let sinkptr = sink.as_ptr(); - assert_eq!(srcptr, sinkptr as *const usize); -} From 2fb56cc123cc1111cff2803ab7df26a0f0941fae Mon Sep 17 00:00:00 2001 From: Giacomo Stevanato Date: Wed, 3 Feb 2021 21:00:07 +0100 Subject: [PATCH 04/62] Update test to collect item with a different type than the original vec --- library/alloc/tests/vec.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/alloc/tests/vec.rs b/library/alloc/tests/vec.rs index 9ae333ce2c3e..9a0739a27595 100644 --- a/library/alloc/tests/vec.rs +++ b/library/alloc/tests/vec.rs @@ -931,7 +931,7 @@ fn test_from_iter_specialization_with_iterator_adapters() { .map_while(Option::Some) .peekable() .skip(1) - .map(|e| if e != 0 { Ok(e) } else { Err(()) }); + .map(|e| if e != usize::MAX { Ok(std::num::NonZeroUsize::new(e)) } else { Err(()) }); assert_in_place_trait(&iter); let sink = iter.collect::, _>>().unwrap(); let sinkptr = sink.as_ptr(); From e7f340e19be8a4d50214c364aabb5577b6b38e9f Mon Sep 17 00:00:00 2001 From: Stein Somers Date: Tue, 16 Feb 2021 17:13:43 +0100 Subject: [PATCH 05/62] BTree: move blocks around in node.rs --- library/alloc/src/collections/btree/node.rs | 332 ++++++++++---------- 1 file changed, 165 insertions(+), 167 deletions(-) diff --git a/library/alloc/src/collections/btree/node.rs b/library/alloc/src/collections/btree/node.rs index 9a7119470f37..f330a1bb3dcf 100644 --- a/library/alloc/src/collections/btree/node.rs +++ b/library/alloc/src/collections/btree/node.rs @@ -128,106 +128,6 @@ impl InternalNode { /// is not a separate type and has no destructor. type BoxedNode = NonNull>; -/// The root node of an owned tree. -/// -/// Note that this does not have a destructor, and must be cleaned up manually. -pub type Root = NodeRef; - -impl Root { - /// Returns a new owned tree, with its own root node that is initially empty. - pub fn new() -> Self { - NodeRef::new_leaf().forget_type() - } -} - -impl NodeRef { - fn new_leaf() -> Self { - Self::from_new_leaf(LeafNode::new()) - } - - fn from_new_leaf(leaf: Box>) -> Self { - NodeRef { height: 0, node: NonNull::from(Box::leak(leaf)), _marker: PhantomData } - } -} - -impl NodeRef { - fn new_internal(child: Root) -> Self { - let mut new_node = unsafe { InternalNode::new() }; - new_node.edges[0].write(child.node); - unsafe { NodeRef::from_new_internal(new_node, child.height + 1) } - } - - /// # Safety - /// `height` must not be zero. - unsafe fn from_new_internal(internal: Box>, height: usize) -> Self { - debug_assert!(height > 0); - let node = NonNull::from(Box::leak(internal)).cast(); - let mut this = NodeRef { height, node, _marker: PhantomData }; - this.borrow_mut().correct_all_childrens_parent_links(); - this - } -} - -impl NodeRef { - /// Mutably borrows the owned root node. Unlike `reborrow_mut`, this is safe - /// because the return value cannot be used to destroy the root, and there - /// cannot be other references to the tree. - pub fn borrow_mut(&mut self) -> NodeRef, K, V, Type> { - NodeRef { height: self.height, node: self.node, _marker: PhantomData } - } - - /// Slightly mutably borrows the owned root node. - pub fn borrow_valmut(&mut self) -> NodeRef, K, V, Type> { - NodeRef { height: self.height, node: self.node, _marker: PhantomData } - } - - /// Irreversibly transitions to a reference that permits traversal and offers - /// destructive methods and little else. - pub fn into_dying(self) -> NodeRef { - NodeRef { height: self.height, node: self.node, _marker: PhantomData } - } -} - -impl NodeRef { - /// Adds a new internal node with a single edge pointing to the previous root node, - /// make that new node the root node, and return it. This increases the height by 1 - /// and is the opposite of `pop_internal_level`. - pub fn push_internal_level(&mut self) -> NodeRef, K, V, marker::Internal> { - super::mem::take_mut(self, |old_root| NodeRef::new_internal(old_root).forget_type()); - - // `self.borrow_mut()`, except that we just forgot we're internal now: - NodeRef { height: self.height, node: self.node, _marker: PhantomData } - } - - /// Removes the internal root node, using its first child as the new root node. - /// As it is intended only to be called when the root node has only one child, - /// no cleanup is done on any of the keys, values and other children. - /// This decreases the height by 1 and is the opposite of `push_internal_level`. - /// - /// Requires exclusive access to the `Root` object but not to the root node; - /// it will not invalidate other handles or references to the root node. - /// - /// Panics if there is no internal level, i.e., if the root node is a leaf. - pub fn pop_internal_level(&mut self) { - assert!(self.height > 0); - - let top = self.node; - - // SAFETY: we asserted to be internal. - let internal_self = unsafe { self.borrow_mut().cast_to_internal_unchecked() }; - // SAFETY: we borrowed `self` exclusively and its borrow type is exclusive. - let internal_node = unsafe { &mut *NodeRef::as_internal_ptr(&internal_self) }; - // SAFETY: the first edge is always initialized. - self.node = unsafe { internal_node.edges[0].assume_init_read() }; - self.height -= 1; - self.clear_parent_link(); - - unsafe { - Global.deallocate(top.cast(), Layout::new::>()); - } - } -} - // N.B. `NodeRef` is always covariant in `K` and `V`, even when the `BorrowType` // is `Mut`. This is technically wrong, but cannot result in any unsafety due to // internal use of `NodeRef` because we stay completely generic over `K` and `V`. @@ -292,6 +192,11 @@ pub struct NodeRef { _marker: PhantomData<(BorrowType, Type)>, } +/// The root node of an owned tree. +/// +/// Note that this does not have a destructor, and must be cleaned up manually. +pub type Root = NodeRef; + impl<'a, K: 'a, V: 'a, Type> Copy for NodeRef, K, V, Type> {} impl<'a, K: 'a, V: 'a, Type> Clone for NodeRef, K, V, Type> { fn clone(&self) -> Self { @@ -307,6 +212,34 @@ unsafe impl<'a, K: Send + 'a, V: Send + 'a, Type> Send for NodeRef Send for NodeRef {} unsafe impl Send for NodeRef {} +impl NodeRef { + fn new_leaf() -> Self { + Self::from_new_leaf(LeafNode::new()) + } + + fn from_new_leaf(leaf: Box>) -> Self { + NodeRef { height: 0, node: NonNull::from(Box::leak(leaf)), _marker: PhantomData } + } +} + +impl NodeRef { + fn new_internal(child: Root) -> Self { + let mut new_node = unsafe { InternalNode::new() }; + new_node.edges[0].write(child.node); + unsafe { NodeRef::from_new_internal(new_node, child.height + 1) } + } + + /// # Safety + /// `height` must not be zero. + unsafe fn from_new_internal(internal: Box>, height: usize) -> Self { + debug_assert!(height > 0); + let node = NonNull::from(Box::leak(internal)).cast(); + let mut this = NodeRef { height, node, _marker: PhantomData }; + this.borrow_mut().correct_all_childrens_parent_links(); + this + } +} + impl NodeRef { /// Unpack a node reference that was packed as `NodeRef::parent`. fn from_internal(node: NonNull>, height: usize) -> Self { @@ -420,6 +353,19 @@ impl NodeRef } } +impl NodeRef { + /// Could be a public implementation of PartialEq, but only used in this module. + fn eq(&self, other: &Self) -> bool { + let Self { node, height, _marker } = self; + if node.eq(&other.node) { + debug_assert_eq!(*height, other.height); + true + } else { + false + } + } +} + impl<'a, K: 'a, V: 'a, Type> NodeRef, K, V, Type> { /// Exposes the leaf portion of any leaf or internal node in an immutable tree. fn into_leaf(self) -> &'a LeafNode { @@ -461,20 +407,6 @@ impl NodeRef { } } -impl<'a, K, V> NodeRef, K, V, marker::LeafOrInternal> { - /// Unsafely asserts to the compiler the static information that this node is a `Leaf`. - unsafe fn cast_to_leaf_unchecked(self) -> NodeRef, K, V, marker::Leaf> { - debug_assert!(self.height == 0); - NodeRef { height: self.height, node: self.node, _marker: PhantomData } - } - - /// Unsafely asserts to the compiler the static information that this node is an `Internal`. - unsafe fn cast_to_internal_unchecked(self) -> NodeRef, K, V, marker::Internal> { - debug_assert!(self.height > 0); - NodeRef { height: self.height, node: self.node, _marker: PhantomData } - } -} - impl<'a, K, V, Type> NodeRef, K, V, Type> { /// Temporarily takes out another, mutable reference to the same node. Beware, as /// this method is very dangerous, doubly so since it may not immediately appear @@ -577,6 +509,22 @@ impl<'a, K: 'a, V: 'a, Type> NodeRef, K, V, Type> { } } +impl<'a, K, V> NodeRef, K, V, marker::Internal> { + /// # Safety + /// Every item returned by `range` is a valid edge index for the node. + unsafe fn correct_childrens_parent_links>(&mut self, range: R) { + for i in range { + debug_assert!(i <= self.len()); + unsafe { Handle::new_edge(self.reborrow_mut(), i) }.correct_parent_link(); + } + } + + fn correct_all_childrens_parent_links(&mut self) { + let len = self.len(); + unsafe { self.correct_childrens_parent_links(0..=len) }; + } +} + impl<'a, K: 'a, V: 'a> NodeRef, K, V, marker::LeafOrInternal> { /// Sets the node's link to its parent edge, /// without invalidating other references to the node. @@ -596,6 +544,71 @@ impl NodeRef { } } +impl NodeRef { + /// Returns a new owned tree, with its own root node that is initially empty. + pub fn new() -> Self { + NodeRef::new_leaf().forget_type() + } + + /// Adds a new internal node with a single edge pointing to the previous root node, + /// make that new node the root node, and return it. This increases the height by 1 + /// and is the opposite of `pop_internal_level`. + pub fn push_internal_level(&mut self) -> NodeRef, K, V, marker::Internal> { + super::mem::take_mut(self, |old_root| NodeRef::new_internal(old_root).forget_type()); + + // `self.borrow_mut()`, except that we just forgot we're internal now: + NodeRef { height: self.height, node: self.node, _marker: PhantomData } + } + + /// Removes the internal root node, using its first child as the new root node. + /// As it is intended only to be called when the root node has only one child, + /// no cleanup is done on any of the keys, values and other children. + /// This decreases the height by 1 and is the opposite of `push_internal_level`. + /// + /// Requires exclusive access to the `Root` object but not to the root node; + /// it will not invalidate other handles or references to the root node. + /// + /// Panics if there is no internal level, i.e., if the root node is a leaf. + pub fn pop_internal_level(&mut self) { + assert!(self.height > 0); + + let top = self.node; + + // SAFETY: we asserted to be internal. + let internal_self = unsafe { self.borrow_mut().cast_to_internal_unchecked() }; + // SAFETY: we borrowed `self` exclusively and its borrow type is exclusive. + let internal_node = unsafe { &mut *NodeRef::as_internal_ptr(&internal_self) }; + // SAFETY: the first edge is always initialized. + self.node = unsafe { internal_node.edges[0].assume_init_read() }; + self.height -= 1; + self.clear_parent_link(); + + unsafe { + Global.deallocate(top.cast(), Layout::new::>()); + } + } +} + +impl NodeRef { + /// Mutably borrows the owned root node. Unlike `reborrow_mut`, this is safe + /// because the return value cannot be used to destroy the root, and there + /// cannot be other references to the tree. + pub fn borrow_mut(&mut self) -> NodeRef, K, V, Type> { + NodeRef { height: self.height, node: self.node, _marker: PhantomData } + } + + /// Slightly mutably borrows the owned root node. + pub fn borrow_valmut(&mut self) -> NodeRef, K, V, Type> { + NodeRef { height: self.height, node: self.node, _marker: PhantomData } + } + + /// Irreversibly transitions to a reference that permits traversal and offers + /// destructive methods and little else. + pub fn into_dying(self) -> NodeRef { + NodeRef { height: self.height, node: self.node, _marker: PhantomData } + } +} + impl<'a, K: 'a, V: 'a> NodeRef, K, V, marker::Leaf> { /// Adds a key-value pair to the end of the node. pub fn push(&mut self, key: K, val: V) { @@ -610,22 +623,6 @@ impl<'a, K: 'a, V: 'a> NodeRef, K, V, marker::Leaf> { } } -impl<'a, K, V> NodeRef, K, V, marker::Internal> { - /// # Safety - /// Every item returned by `range` is a valid edge index for the node. - unsafe fn correct_childrens_parent_links>(&mut self, range: R) { - for i in range { - debug_assert!(i <= self.len()); - unsafe { Handle::new_edge(self.reborrow_mut(), i) }.correct_parent_link(); - } - } - - fn correct_all_childrens_parent_links(&mut self) { - let len = self.len(); - unsafe { self.correct_childrens_parent_links(0..=len) }; - } -} - impl<'a, K: 'a, V: 'a> NodeRef, K, V, marker::Internal> { /// Adds a key-value pair, and an edge to go to the right of that pair, /// to the end of the node. @@ -645,6 +642,20 @@ impl<'a, K: 'a, V: 'a> NodeRef, K, V, marker::Internal> { } } +impl NodeRef { + /// Removes any static information asserting that this node is a `Leaf` node. + pub fn forget_type(self) -> NodeRef { + NodeRef { height: self.height, node: self.node, _marker: PhantomData } + } +} + +impl NodeRef { + /// Removes any static information asserting that this node is an `Internal` node. + pub fn forget_type(self) -> NodeRef { + NodeRef { height: self.height, node: self.node, _marker: PhantomData } + } +} + impl NodeRef { /// Checks whether a node is an `Internal` node or a `Leaf` node. pub fn force( @@ -669,6 +680,20 @@ impl NodeRef { } } +impl<'a, K, V> NodeRef, K, V, marker::LeafOrInternal> { + /// Unsafely asserts to the compiler the static information that this node is a `Leaf`. + unsafe fn cast_to_leaf_unchecked(self) -> NodeRef, K, V, marker::Leaf> { + debug_assert!(self.height == 0); + NodeRef { height: self.height, node: self.node, _marker: PhantomData } + } + + /// Unsafely asserts to the compiler the static information that this node is an `Internal`. + unsafe fn cast_to_internal_unchecked(self) -> NodeRef, K, V, marker::Internal> { + debug_assert!(self.height > 0); + NodeRef { height: self.height, node: self.node, _marker: PhantomData } + } +} + /// A reference to a specific key-value pair or edge within a node. The `Node` parameter /// must be a `NodeRef`, while the `Type` can either be `KV` (signifying a handle on a key-value /// pair) or `Edge` (signifying a handle on an edge). @@ -722,19 +747,6 @@ impl Handle, mar } } -impl NodeRef { - /// Could be a public implementation of PartialEq, but only used in this module. - fn eq(&self, other: &Self) -> bool { - let Self { node, height, _marker } = self; - if node.eq(&other.node) { - debug_assert_eq!(*height, other.height); - true - } else { - false - } - } -} - impl PartialEq for Handle, HandleType> { @@ -754,16 +766,6 @@ impl } } -impl<'a, K, V, Type> Handle, K, V, marker::LeafOrInternal>, Type> { - /// Unsafely asserts to the compiler the static information that the handle's node is a `Leaf`. - pub unsafe fn cast_to_leaf_unchecked( - self, - ) -> Handle, K, V, marker::Leaf>, Type> { - let node = unsafe { self.node.cast_to_leaf_unchecked() }; - Handle { node, idx: self.idx, _marker: PhantomData } - } -} - impl<'a, K, V, NodeType, HandleType> Handle, K, V, NodeType>, HandleType> { /// Temporarily takes out another, mutable handle on the same location. Beware, as /// this method is very dangerous, doubly so since it may not immediately appear @@ -1466,20 +1468,6 @@ impl<'a, K: 'a, V: 'a> BalancingContext<'a, K, V> { } } -impl NodeRef { - /// Removes any static information asserting that this node is a `Leaf` node. - pub fn forget_type(self) -> NodeRef { - NodeRef { height: self.height, node: self.node, _marker: PhantomData } - } -} - -impl NodeRef { - /// Removes any static information asserting that this node is an `Internal` node. - pub fn forget_type(self) -> NodeRef { - NodeRef { height: self.height, node: self.node, _marker: PhantomData } - } -} - impl Handle, marker::Edge> { pub fn forget_node_type( self, @@ -1531,6 +1519,16 @@ impl Handle Handle, K, V, marker::LeafOrInternal>, Type> { + /// Unsafely asserts to the compiler the static information that the handle's node is a `Leaf`. + pub unsafe fn cast_to_leaf_unchecked( + self, + ) -> Handle, K, V, marker::Leaf>, Type> { + let node = unsafe { self.node.cast_to_leaf_unchecked() }; + Handle { node, idx: self.idx, _marker: PhantomData } + } +} + impl<'a, K, V> Handle, K, V, marker::LeafOrInternal>, marker::Edge> { /// Move the suffix after `self` from one node to another one. `right` must be empty. /// The first edge of `right` remains unchanged. From aef1e35edc11b3e0ecf7f77bc70c197062023476 Mon Sep 17 00:00:00 2001 From: est31 Date: Tue, 30 Jun 2020 18:58:15 +0200 Subject: [PATCH 06/62] Emit unused externs --- compiler/rustc_errors/src/emitter.rs | 3 +++ compiler/rustc_errors/src/json.rs | 19 +++++++++++++++++++ compiler/rustc_errors/src/lib.rs | 8 ++++++++ compiler/rustc_metadata/src/creader.rs | 4 ++++ 4 files changed, 34 insertions(+) diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs index 9b6f67166bda..dbb71d52e499 100644 --- a/compiler/rustc_errors/src/emitter.rs +++ b/compiler/rustc_errors/src/emitter.rs @@ -195,6 +195,9 @@ pub trait Emitter { fn emit_future_breakage_report(&mut self, _diags: Vec<(FutureBreakage, Diagnostic)>) {} + /// Emit list of unused externs + fn emit_unused_externs(&mut self, _unused_externs: &[&str]) {} + /// Checks if should show explanations about "rustc --explain" fn should_show_explain(&self) -> bool { true diff --git a/compiler/rustc_errors/src/json.rs b/compiler/rustc_errors/src/json.rs index c27b39a9d62f..a1ab98f766ef 100644 --- a/compiler/rustc_errors/src/json.rs +++ b/compiler/rustc_errors/src/json.rs @@ -159,6 +159,19 @@ impl Emitter for JsonEmitter { } } + fn emit_unused_externs(&mut self, unused_externs: &[&str]) { + let data = UnusedExterns { unused_extern_names: unused_externs }; + let result = if self.pretty { + writeln!(&mut self.dst, "{}", as_pretty_json(&data)) + } else { + writeln!(&mut self.dst, "{}", as_json(&data)) + } + .and_then(|_| self.dst.flush()); + if let Err(e) = result { + panic!("failed to print unused externs: {:?}", e); + } + } + fn source_map(&self) -> Option<&Lrc> { Some(&self.sm) } @@ -322,6 +335,12 @@ struct FutureIncompatReport { future_incompat_report: Vec, } +#[derive(Encodable)] +struct UnusedExterns<'a, 'b> { + /// List of unused externs by their names. + unused_extern_names: &'a [&'b str], +} + impl Diagnostic { fn from_errors_diagnostic(diag: &crate::Diagnostic, je: &JsonEmitter) -> Diagnostic { let sugg = diag.suggestions.iter().map(|sugg| Diagnostic { diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index a0be7442d597..5720e98abc8c 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -767,6 +767,10 @@ impl Handler { self.inner.borrow_mut().emitter.emit_future_breakage_report(diags) } + pub fn emit_unused_externs(&self, unused_externs: &[&str]) { + self.inner.borrow_mut().emit_unused_externs(unused_externs) + } + pub fn delay_as_bug(&self, diagnostic: Diagnostic) { self.inner.borrow_mut().delay_as_bug(diagnostic) } @@ -841,6 +845,10 @@ impl HandlerInner { self.emitter.emit_artifact_notification(path, artifact_type); } + fn emit_unused_externs(&mut self, unused_externs: &[&str]) { + self.emitter.emit_unused_externs(unused_externs); + } + fn treat_err_as_bug(&self) -> bool { self.flags.treat_err_as_bug.map_or(false, |c| self.err_count() >= c.get()) } diff --git a/compiler/rustc_metadata/src/creader.rs b/compiler/rustc_metadata/src/creader.rs index b5506acf7352..3f2d312e61b7 100644 --- a/compiler/rustc_metadata/src/creader.rs +++ b/compiler/rustc_metadata/src/creader.rs @@ -893,6 +893,7 @@ impl<'a> CrateLoader<'a> { fn report_unused_deps(&mut self, krate: &ast::Crate) { // Make a point span rather than covering the whole file let span = krate.span.shrink_to_lo(); + let mut unused_externs = Vec::new(); // Complain about anything left over for (name, entry) in self.sess.opts.externs.iter() { if let ExternLocation::FoundInLibrarySearchDirectories = entry.location { @@ -917,6 +918,7 @@ impl<'a> CrateLoader<'a> { ) } }; + unused_externs.push(name as &str); self.sess.parse_sess.buffer_lint_with_diagnostic( lint::builtin::UNUSED_CRATE_DEPENDENCIES, span, @@ -929,6 +931,8 @@ impl<'a> CrateLoader<'a> { diag, ); } + // FIXME: add gating + self.sess.parse_sess.span_diagnostic.emit_unused_externs(&unused_externs); } pub fn postprocess(&mut self, krate: &ast::Crate) { From 3f2ca47a79911d422fd47ee2a23dd08a9fa42aa9 Mon Sep 17 00:00:00 2001 From: est31 Date: Tue, 30 Jun 2020 20:17:07 +0200 Subject: [PATCH 07/62] Gate the printing on --json=unused-externs --- compiler/rustc_metadata/src/creader.rs | 5 +++-- compiler/rustc_session/src/config.rs | 18 +++++++++++++++--- compiler/rustc_session/src/options.rs | 3 +++ src/librustdoc/config.rs | 2 +- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/compiler/rustc_metadata/src/creader.rs b/compiler/rustc_metadata/src/creader.rs index 3f2d312e61b7..7b34374032c9 100644 --- a/compiler/rustc_metadata/src/creader.rs +++ b/compiler/rustc_metadata/src/creader.rs @@ -931,8 +931,9 @@ impl<'a> CrateLoader<'a> { diag, ); } - // FIXME: add gating - self.sess.parse_sess.span_diagnostic.emit_unused_externs(&unused_externs); + if self.sess.opts.json_unused_externs { + self.sess.parse_sess.span_diagnostic.emit_unused_externs(&unused_externs); + } } pub fn postprocess(&mut self, krate: &ast::Crate) { diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index f25828e21618..a66201953d61 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -734,6 +734,7 @@ impl Default for Options { remap_path_prefix: Vec::new(), edition: DEFAULT_EDITION, json_artifact_notifications: false, + json_unused_externs: false, pretty: None, } } @@ -1254,11 +1255,12 @@ pub fn parse_color(matches: &getopts::Matches) -> ColorConfig { /// /// The first value returned is how to render JSON diagnostics, and the second /// is whether or not artifact notifications are enabled. -pub fn parse_json(matches: &getopts::Matches) -> (HumanReadableErrorType, bool) { +pub fn parse_json(matches: &getopts::Matches) -> (HumanReadableErrorType, bool, bool) { let mut json_rendered: fn(ColorConfig) -> HumanReadableErrorType = HumanReadableErrorType::Default; let mut json_color = ColorConfig::Never; let mut json_artifact_notifications = false; + let mut json_unused_externs = false; for option in matches.opt_strs("json") { // For now conservatively forbid `--color` with `--json` since `--json` // won't actually be emitting any colors and anything colorized is @@ -1275,6 +1277,7 @@ pub fn parse_json(matches: &getopts::Matches) -> (HumanReadableErrorType, bool) "diagnostic-short" => json_rendered = HumanReadableErrorType::Short, "diagnostic-rendered-ansi" => json_color = ColorConfig::Always, "artifacts" => json_artifact_notifications = true, + "unused-externs" => json_unused_externs = true, s => early_error( ErrorOutputType::default(), &format!("unknown `--json` option `{}`", s), @@ -1282,7 +1285,7 @@ pub fn parse_json(matches: &getopts::Matches) -> (HumanReadableErrorType, bool) } } } - (json_rendered(json_color), json_artifact_notifications) + (json_rendered(json_color), json_artifact_notifications, json_unused_externs) } /// Parses the `--error-format` flag. @@ -1860,7 +1863,7 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options { let edition = parse_crate_edition(matches); - let (json_rendered, json_artifact_notifications) = parse_json(matches); + let (json_rendered, json_artifact_notifications, json_unused_externs) = parse_json(matches); let error_format = parse_error_format(matches, color, json_rendered); @@ -1873,6 +1876,14 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options { let mut debugging_opts = build_debugging_options(matches, error_format); check_debug_option_stability(&debugging_opts, error_format, json_rendered); + if !debugging_opts.unstable_options && json_unused_externs { + early_error( + error_format, + "the `-Z unstable-options` flag must also be passed to enable \ + the flag `--json=unused-externs`", + ); + } + let output_types = parse_output_types(&debugging_opts, matches, error_format); let mut cg = build_codegen_options(matches, error_format); @@ -2050,6 +2061,7 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options { remap_path_prefix, edition, json_artifact_notifications, + json_unused_externs, pretty, } } diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 79bbad8307ba..cfe29d40b746 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -147,6 +147,9 @@ top_level_options!( // by the compiler. json_artifact_notifications: bool [TRACKED], + // `true` if we're emitting a JSON blob containing the unused externs + json_unused_externs: bool [UNTRACKED], + pretty: Option [UNTRACKED], } ); diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index ecb6378f31fb..5d6d5aaec140 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -323,7 +323,7 @@ impl Options { } let color = config::parse_color(&matches); - let (json_rendered, _artifacts) = config::parse_json(&matches); + let (json_rendered, ..) = config::parse_json(&matches); let error_format = config::parse_error_format(&matches, color, json_rendered); let codegen_options = build_codegen_options(matches, error_format); From 2d5200605f18717efcb5483cfd2aece167cab7ce Mon Sep 17 00:00:00 2001 From: est31 Date: Sun, 5 Jul 2020 19:35:46 +0200 Subject: [PATCH 08/62] Make parse_json return JsonConfig --- compiler/rustc_session/src/config.rs | 19 ++++++++++++++++--- src/librustdoc/config.rs | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index a66201953d61..433b87aa3c68 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -1251,11 +1251,18 @@ pub fn parse_color(matches: &getopts::Matches) -> ColorConfig { } } +/// Possible json config files +pub struct JsonConfig { + pub json_rendered: HumanReadableErrorType, + pub json_artifact_notifications: bool, + pub json_unused_externs: bool, +} + /// Parse the `--json` flag. /// /// The first value returned is how to render JSON diagnostics, and the second /// is whether or not artifact notifications are enabled. -pub fn parse_json(matches: &getopts::Matches) -> (HumanReadableErrorType, bool, bool) { +pub fn parse_json(matches: &getopts::Matches) -> JsonConfig { let mut json_rendered: fn(ColorConfig) -> HumanReadableErrorType = HumanReadableErrorType::Default; let mut json_color = ColorConfig::Never; @@ -1285,7 +1292,12 @@ pub fn parse_json(matches: &getopts::Matches) -> (HumanReadableErrorType, bool, } } } - (json_rendered(json_color), json_artifact_notifications, json_unused_externs) + + JsonConfig { + json_rendered: json_rendered(json_color), + json_artifact_notifications, + json_unused_externs, + } } /// Parses the `--error-format` flag. @@ -1863,7 +1875,8 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options { let edition = parse_crate_edition(matches); - let (json_rendered, json_artifact_notifications, json_unused_externs) = parse_json(matches); + let JsonConfig { json_rendered, json_artifact_notifications, json_unused_externs } = + parse_json(matches); let error_format = parse_error_format(matches, color, json_rendered); diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index 5d6d5aaec140..112fe230916f 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -323,7 +323,7 @@ impl Options { } let color = config::parse_color(&matches); - let (json_rendered, ..) = config::parse_json(&matches); + let config::JsonConfig { json_rendered, .. } = config::parse_json(&matches); let error_format = config::parse_error_format(&matches, color, json_rendered); let codegen_options = build_codegen_options(matches, error_format); From 13371b59ee918445ede03cebb741539db807e0e7 Mon Sep 17 00:00:00 2001 From: est31 Date: Sat, 1 Aug 2020 12:57:35 +0200 Subject: [PATCH 09/62] Make doctests collect and emit the unused externs --- compiler/rustc_session/src/config.rs | 4 ++ src/librustdoc/config.rs | 6 +- src/librustdoc/doctest.rs | 85 ++++++++++++++++++++++++++-- 3 files changed, 88 insertions(+), 7 deletions(-) diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index 433b87aa3c68..2965fe8e1e8b 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -485,6 +485,10 @@ impl Externs { pub fn iter(&self) -> BTreeMapIter<'_, String, ExternEntry> { self.0.iter() } + + pub fn len(&self) -> usize { + self.0.len() + } } impl ExternEntry { diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index 112fe230916f..61035684ef3c 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -153,6 +153,8 @@ crate struct Options { /// If this option is set to `true`, rustdoc will only run checks and not generate /// documentation. crate run_check: bool, + /// Whether doctests should emit unused externs + crate json_unused_externs: bool, } impl fmt::Debug for Options { @@ -323,7 +325,8 @@ impl Options { } let color = config::parse_color(&matches); - let config::JsonConfig { json_rendered, .. } = config::parse_json(&matches); + let config::JsonConfig { json_rendered, json_unused_externs, .. } = + config::parse_json(&matches); let error_format = config::parse_error_format(&matches, color, json_rendered); let codegen_options = build_codegen_options(matches, error_format); @@ -644,6 +647,7 @@ impl Options { }, crate_name, output_format, + json_unused_externs, }) } diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index 27ce064669d2..50cdf46ce4f4 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -1,5 +1,5 @@ use rustc_ast as ast; -use rustc_data_structures::fx::FxHashMap; +use rustc_data_structures::fx::{FxHashMap, FxHashSet}; use rustc_data_structures::sync::Lrc; use rustc_errors::{ColorConfig, ErrorReported}; use rustc_hir as hir; @@ -23,6 +23,8 @@ use std::panic; use std::path::PathBuf; use std::process::{self, Command, Stdio}; use std::str; +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::sync::{Arc, Mutex}; use crate::clean::Attributes; use crate::config::Options; @@ -103,8 +105,10 @@ crate fn run(options: Options) -> Result<(), ErrorReported> { let mut test_args = options.test_args.clone(); let display_warnings = options.display_warnings; + let externs = options.externs.clone(); + let json_unused_externs = options.json_unused_externs; - let tests = interface::run_compiler(config, |compiler| { + let res = interface::run_compiler(config, |compiler| { compiler.enter(|queries| { let lower_to_hir = queries.lower_to_hir()?; @@ -147,12 +151,15 @@ crate fn run(options: Options) -> Result<(), ErrorReported> { }); compiler.session().abort_if_errors(); - let ret: Result<_, ErrorReported> = Ok(collector.tests); + let unused_extern_reports = collector.unused_extern_reports.clone(); + let compiling_test_count = collector.compiling_test_count.load(Ordering::SeqCst); + let ret: Result<_, ErrorReported> = + Ok((collector.tests, unused_extern_reports, compiling_test_count)); ret }) }); - let tests = match tests { - Ok(tests) => tests, + let (tests, unused_extern_reports, compiling_test_count) = match res { + Ok(res) => res, Err(ErrorReported) => return Err(ErrorReported), }; @@ -164,6 +171,29 @@ crate fn run(options: Options) -> Result<(), ErrorReported> { Some(testing::Options::new().display_output(display_warnings)), ); + // Collect and warn about unused externs, but only if we've gotten + // reports for each doctest + if json_unused_externs { + let unused_extern_reports: Vec<_> = + std::mem::take(&mut unused_extern_reports.lock().unwrap()); + if unused_extern_reports.len() == compiling_test_count { + let extern_names = externs.iter().map(|(name, _)| name).collect::>(); + let mut unused_extern_names = unused_extern_reports + .iter() + .map(|uexts| uexts.unused_extern_names.iter().collect::>()) + .fold(extern_names, |uextsa, uextsb| { + uextsa.intersection(&uextsb).map(|v| *v).collect::>() + }) + .iter() + .map(|v| (*v).clone()) + .collect::>(); + unused_extern_names.sort(); + let unused_extern_json = + serde_json::to_string(&UnusedExterns { unused_extern_names }).unwrap(); + eprintln!("{}", unused_extern_json); + } + } + Ok(()) } @@ -233,6 +263,12 @@ impl DirState { } } +#[derive(serde::Serialize, serde::Deserialize)] +struct UnusedExterns { + /// List of unused externs by their names. + unused_extern_names: Vec, +} + fn run_test( test: &str, cratename: &str, @@ -251,6 +287,7 @@ fn run_test( outdir: DirState, path: PathBuf, test_id: &str, + report_unused_externs: impl Fn(UnusedExterns), ) -> Result<(), TestFailure> { let (test, line_offset, supports_color) = make_test(test, Some(cratename), as_test_harness, opts, edition, Some(test_id)); @@ -276,6 +313,11 @@ fn run_test( if as_test_harness { compiler.arg("--test"); } + if options.json_unused_externs && !compile_fail { + compiler.arg("--error-format=json"); + compiler.arg("--json").arg("unused-externs"); + compiler.arg("-Z").arg("unstable-options"); + } for lib_str in &options.lib_strs { compiler.arg("-L").arg(&lib_str); } @@ -335,7 +377,26 @@ fn run_test( eprint!("{}", self.0); } } - let out = str::from_utf8(&output.stderr).unwrap(); + let mut out_lines = str::from_utf8(&output.stderr) + .unwrap() + .lines() + .filter(|l| { + if let Ok(uext) = serde_json::from_str::(l) { + report_unused_externs(uext); + false + } else { + true + } + }) + .collect::>(); + + // Add a \n to the end to properly terminate the last line, + // but only if there was output to be printed + if out_lines.len() > 0 { + out_lines.push(""); + } + + let out = out_lines.join("\n"); let _bomb = Bomb(&out); match (output.status.success(), compile_fail) { (true, true) => { @@ -719,6 +780,8 @@ crate struct Collector { source_map: Option>, filename: Option, visited_tests: FxHashMap<(String, usize), usize>, + unused_extern_reports: Arc>>, + compiling_test_count: AtomicUsize, } impl Collector { @@ -743,6 +806,8 @@ impl Collector { source_map, filename, visited_tests: FxHashMap::default(), + unused_extern_reports: Default::default(), + compiling_test_count: AtomicUsize::new(0), } } @@ -789,6 +854,10 @@ impl Tester for Collector { let runtool_args = self.options.runtool_args.clone(); let target = self.options.target.clone(); let target_str = target.to_string(); + let unused_externs = self.unused_extern_reports.clone(); + if !config.compile_fail { + self.compiling_test_count.fetch_add(1, Ordering::SeqCst); + } // FIXME(#44940): if doctests ever support path remapping, then this filename // needs to be the result of `SourceMap::span_to_unmapped_path`. @@ -844,6 +913,9 @@ impl Tester for Collector { test_type: testing::TestType::DocTest, }, testfn: testing::DynTestFn(box move || { + let report_unused_externs = |uext| { + unused_externs.lock().unwrap().push(uext); + }; let res = run_test( &test, &cratename, @@ -862,6 +934,7 @@ impl Tester for Collector { outdir, path, &test_id, + report_unused_externs, ); if let Err(err) = res { From 3a62eb74db63f1b49d5e00c32192498abaf1640f Mon Sep 17 00:00:00 2001 From: est31 Date: Mon, 10 Aug 2020 01:57:35 +0200 Subject: [PATCH 10/62] Emit the lint level of the unused-crate-dependencies Also, turn off the lint when the unused dependencies json flag is specified so that cargo doesn't have to supress the lint --- compiler/rustc_errors/src/emitter.rs | 2 +- compiler/rustc_errors/src/json.rs | 10 ++++--- compiler/rustc_errors/src/lib.rs | 8 +++--- compiler/rustc_interface/src/passes.rs | 7 +++++ compiler/rustc_metadata/src/creader.rs | 36 ++++++++++++++++++++------ src/librustdoc/doctest.rs | 22 ++++++++++++++-- 6 files changed, 66 insertions(+), 19 deletions(-) diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs index dbb71d52e499..2b6dec905f14 100644 --- a/compiler/rustc_errors/src/emitter.rs +++ b/compiler/rustc_errors/src/emitter.rs @@ -196,7 +196,7 @@ pub trait Emitter { fn emit_future_breakage_report(&mut self, _diags: Vec<(FutureBreakage, Diagnostic)>) {} /// Emit list of unused externs - fn emit_unused_externs(&mut self, _unused_externs: &[&str]) {} + fn emit_unused_externs(&mut self, _lint_level: &str, _unused_externs: &[&str]) {} /// Checks if should show explanations about "rustc --explain" fn should_show_explain(&self) -> bool { diff --git a/compiler/rustc_errors/src/json.rs b/compiler/rustc_errors/src/json.rs index a1ab98f766ef..8511b51e3bff 100644 --- a/compiler/rustc_errors/src/json.rs +++ b/compiler/rustc_errors/src/json.rs @@ -159,8 +159,8 @@ impl Emitter for JsonEmitter { } } - fn emit_unused_externs(&mut self, unused_externs: &[&str]) { - let data = UnusedExterns { unused_extern_names: unused_externs }; + fn emit_unused_externs(&mut self, lint_level: &str, unused_externs: &[&str]) { + let data = UnusedExterns { lint_level, unused_extern_names: unused_externs }; let result = if self.pretty { writeln!(&mut self.dst, "{}", as_pretty_json(&data)) } else { @@ -336,9 +336,11 @@ struct FutureIncompatReport { } #[derive(Encodable)] -struct UnusedExterns<'a, 'b> { +struct UnusedExterns<'a, 'b, 'c> { + /// The severity level of the unused dependencies lint + lint_level: &'a str, /// List of unused externs by their names. - unused_extern_names: &'a [&'b str], + unused_extern_names: &'b [&'c str], } impl Diagnostic { diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index 5720e98abc8c..533c32b32c62 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -767,8 +767,8 @@ impl Handler { self.inner.borrow_mut().emitter.emit_future_breakage_report(diags) } - pub fn emit_unused_externs(&self, unused_externs: &[&str]) { - self.inner.borrow_mut().emit_unused_externs(unused_externs) + pub fn emit_unused_externs(&self, lint_level: &str, unused_externs: &[&str]) { + self.inner.borrow_mut().emit_unused_externs(lint_level, unused_externs) } pub fn delay_as_bug(&self, diagnostic: Diagnostic) { @@ -845,8 +845,8 @@ impl HandlerInner { self.emitter.emit_artifact_notification(path, artifact_type); } - fn emit_unused_externs(&mut self, unused_externs: &[&str]) { - self.emitter.emit_unused_externs(unused_externs); + fn emit_unused_externs(&mut self, lint_level: &str, unused_externs: &[&str]) { + self.emitter.emit_unused_externs(lint_level, unused_externs); } fn treat_err_as_bug(&self) -> bool { diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index 5217066bbefd..717f4d5a3ba6 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -17,6 +17,7 @@ use rustc_hir::definitions::Definitions; use rustc_hir::Crate; use rustc_index::vec::IndexVec; use rustc_lint::LintStore; +use rustc_metadata::creader::CStore; use rustc_middle::arena::Arena; use rustc_middle::dep_graph::DepGraph; use rustc_middle::middle; @@ -836,6 +837,12 @@ fn analysis(tcx: TyCtxt<'_>, cnum: CrateNum) -> Result<()> { }); sess.time("looking_for_derive_registrar", || proc_macro_decls::find(tcx)); + + let cstore = tcx + .cstore_as_any() + .downcast_ref::() + .expect("`tcx.cstore` is not a `CStore`"); + cstore.report_unused_deps(tcx); }, { par_iter(&tcx.hir().krate().modules).for_each(|(&module, _)| { diff --git a/compiler/rustc_metadata/src/creader.rs b/compiler/rustc_metadata/src/creader.rs index 7b34374032c9..9e3f121378cb 100644 --- a/compiler/rustc_metadata/src/creader.rs +++ b/compiler/rustc_metadata/src/creader.rs @@ -46,6 +46,9 @@ pub struct CStore { /// This map is used to verify we get no hash conflicts between /// `StableCrateId` values. stable_crate_ids: FxHashMap, + + /// Unused externs of the crate + unused_externs: Vec, } pub struct CrateLoader<'a> { @@ -190,6 +193,21 @@ impl CStore { crate fn has_global_allocator(&self) -> bool { self.has_global_allocator } + + pub fn report_unused_deps(&self, tcx: TyCtxt<'_>) { + let level = tcx + .lint_level_at_node(lint::builtin::UNUSED_CRATE_DEPENDENCIES, rustc_hir::CRATE_HIR_ID) + .0; + if level != lint::Level::Allow && tcx.sess.opts.json_unused_externs { + let unused_externs = + self.unused_externs.iter().map(|ident| ident.to_ident_string()).collect::>(); + let unused_externs = unused_externs.iter().map(String::as_str).collect::>(); + tcx.sess + .parse_sess + .span_diagnostic + .emit_unused_externs(level.as_str(), &unused_externs); + } + } } impl<'a> CrateLoader<'a> { @@ -217,6 +235,7 @@ impl<'a> CrateLoader<'a> { allocator_kind: None, has_global_allocator: false, stable_crate_ids, + unused_externs: Vec::new(), }, used_extern_options: Default::default(), } @@ -893,18 +912,23 @@ impl<'a> CrateLoader<'a> { fn report_unused_deps(&mut self, krate: &ast::Crate) { // Make a point span rather than covering the whole file let span = krate.span.shrink_to_lo(); - let mut unused_externs = Vec::new(); // Complain about anything left over for (name, entry) in self.sess.opts.externs.iter() { if let ExternLocation::FoundInLibrarySearchDirectories = entry.location { // Don't worry about pathless `--extern foo` sysroot references continue; } - if self.used_extern_options.contains(&Symbol::intern(name)) { + let name_interned = Symbol::intern(name); + if self.used_extern_options.contains(&name_interned) { continue; } // Got a real unused --extern + if self.sess.opts.json_unused_externs { + self.cstore.unused_externs.push(name_interned); + continue; + } + let diag = match self.sess.opts.extern_dep_specs.get(name) { Some(loc) => BuiltinLintDiagnostics::ExternDepSpec(name.clone(), loc.into()), None => { @@ -918,7 +942,6 @@ impl<'a> CrateLoader<'a> { ) } }; - unused_externs.push(name as &str); self.sess.parse_sess.buffer_lint_with_diagnostic( lint::builtin::UNUSED_CRATE_DEPENDENCIES, span, @@ -931,9 +954,6 @@ impl<'a> CrateLoader<'a> { diag, ); } - if self.sess.opts.json_unused_externs { - self.sess.parse_sess.span_diagnostic.emit_unused_externs(&unused_externs); - } } pub fn postprocess(&mut self, krate: &ast::Crate) { @@ -941,9 +961,9 @@ impl<'a> CrateLoader<'a> { self.inject_allocator_crate(krate); self.inject_panic_runtime(krate); - info!("{:?}", CrateDump(&self.cstore)); - self.report_unused_deps(krate); + + info!("{:?}", CrateDump(&self.cstore)); } pub fn process_extern_crate( diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index 50cdf46ce4f4..116b3aad61eb 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -188,8 +188,23 @@ crate fn run(options: Options) -> Result<(), ErrorReported> { .map(|v| (*v).clone()) .collect::>(); unused_extern_names.sort(); - let unused_extern_json = - serde_json::to_string(&UnusedExterns { unused_extern_names }).unwrap(); + // Take the most severe lint level + let lint_level = unused_extern_reports + .iter() + .map(|uexts| uexts.lint_level.as_str()) + .max_by_key(|v| match *v { + "warn" => 1, + "deny" => 2, + "forbid" => 3, + // The allow lint level is not expected, + // as if allow is specified, no message + // is to be emitted. + v => unreachable!("Invalid lint level '{}'", v), + }) + .unwrap_or("warn") + .to_string(); + let uext = UnusedExterns { lint_level, unused_extern_names }; + let unused_extern_json = serde_json::to_string(&uext).unwrap(); eprintln!("{}", unused_extern_json); } } @@ -265,6 +280,8 @@ impl DirState { #[derive(serde::Serialize, serde::Deserialize)] struct UnusedExterns { + /// Lint level of the unused_crate_dependencies lint + lint_level: String, /// List of unused externs by their names. unused_extern_names: Vec, } @@ -317,6 +334,7 @@ fn run_test( compiler.arg("--error-format=json"); compiler.arg("--json").arg("unused-externs"); compiler.arg("-Z").arg("unstable-options"); + compiler.arg("-W").arg("unused_crate_dependencies"); } for lib_str in &options.lib_strs { compiler.arg("-L").arg(&lib_str); From d8c9a287036f72bf078f868f8fe635b7a7fde32c Mon Sep 17 00:00:00 2001 From: est31 Date: Wed, 12 Aug 2020 03:45:16 +0200 Subject: [PATCH 11/62] Fix the tests --- compiler/rustc_metadata/src/creader.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_metadata/src/creader.rs b/compiler/rustc_metadata/src/creader.rs index 9e3f121378cb..5634467eeb7f 100644 --- a/compiler/rustc_metadata/src/creader.rs +++ b/compiler/rustc_metadata/src/creader.rs @@ -195,10 +195,16 @@ impl CStore { } pub fn report_unused_deps(&self, tcx: TyCtxt<'_>) { + // We put the check for the option before the lint_level_at_node call + // because the call mutates internal state and introducing it + // leads to some ui tests failing. + if !tcx.sess.opts.json_unused_externs { + return; + } let level = tcx .lint_level_at_node(lint::builtin::UNUSED_CRATE_DEPENDENCIES, rustc_hir::CRATE_HIR_ID) .0; - if level != lint::Level::Allow && tcx.sess.opts.json_unused_externs { + if level != lint::Level::Allow { let unused_externs = self.unused_externs.iter().map(|ident| ident.to_ident_string()).collect::>(); let unused_externs = unused_externs.iter().map(String::as_str).collect::>(); From d018ef180d9bc4e852457fd83fda0bec8452baf6 Mon Sep 17 00:00:00 2001 From: est31 Date: Tue, 2 Mar 2021 03:07:13 +0100 Subject: [PATCH 12/62] Add notes to keep the UnusedExterns structs synced up --- compiler/rustc_errors/src/json.rs | 4 ++++ src/librustdoc/doctest.rs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/compiler/rustc_errors/src/json.rs b/compiler/rustc_errors/src/json.rs index 8511b51e3bff..3753ca580e70 100644 --- a/compiler/rustc_errors/src/json.rs +++ b/compiler/rustc_errors/src/json.rs @@ -335,6 +335,10 @@ struct FutureIncompatReport { future_incompat_report: Vec, } +// NOTE: Keep this in sync with the equivalent structs in rustdoc's +// doctest component (as well as cargo). +// We could unify this struct the one in rustdoc but they have different +// ownership semantics, so doing so would create wasteful allocations. #[derive(Encodable)] struct UnusedExterns<'a, 'b, 'c> { /// The severity level of the unused dependencies lint diff --git a/src/librustdoc/doctest.rs b/src/librustdoc/doctest.rs index 116b3aad61eb..f7a6ccfc7d1f 100644 --- a/src/librustdoc/doctest.rs +++ b/src/librustdoc/doctest.rs @@ -278,6 +278,10 @@ impl DirState { } } +// NOTE: Keep this in sync with the equivalent structs in rustc +// and cargo. +// We could unify this struct the one in rustc but they have different +// ownership semantics, so doing so would create wasteful allocations. #[derive(serde::Serialize, serde::Deserialize)] struct UnusedExterns { /// Lint level of the unused_crate_dependencies lint From 1ec905766d0c8b76ecef22d1948fe87a490da3fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mi=C4=85sko?= Date: Wed, 24 Feb 2021 00:00:00 +0000 Subject: [PATCH 13/62] Use FromStr trait for number option parsing Replace `parse_uint` with generic `parse_number` based on `FromStr`. Use it for parsing inlining threshold to avoid casting later. --- compiler/rustc_codegen_llvm/src/back/write.rs | 2 +- compiler/rustc_codegen_ssa/src/back/write.rs | 2 +- compiler/rustc_session/src/config.rs | 1 + compiler/rustc_session/src/options.rs | 28 +++++++++---------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/compiler/rustc_codegen_llvm/src/back/write.rs b/compiler/rustc_codegen_llvm/src/back/write.rs index c224da7885bd..36e22f260a79 100644 --- a/compiler/rustc_codegen_llvm/src/back/write.rs +++ b/compiler/rustc_codegen_llvm/src/back/write.rs @@ -1044,7 +1044,7 @@ pub unsafe fn with_llvm_pmb( // thresholds copied from clang. match (opt_level, opt_size, inline_threshold) { (.., Some(t)) => { - llvm::LLVMPassManagerBuilderUseInlinerWithThreshold(builder, t as u32); + llvm::LLVMPassManagerBuilderUseInlinerWithThreshold(builder, t); } (llvm::CodeGenOptLevel::Aggressive, ..) => { llvm::LLVMPassManagerBuilderUseInlinerWithThreshold(builder, 275); diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index 7b8ce157fc2b..9afb0ccd7068 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -106,7 +106,7 @@ pub struct ModuleConfig { pub vectorize_loop: bool, pub vectorize_slp: bool, pub merge_functions: bool, - pub inline_threshold: Option, + pub inline_threshold: Option, pub new_llvm_pass_manager: bool, pub emit_lifetime_markers: bool, } diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index f25828e21618..12ada53c2fa9 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -2367,6 +2367,7 @@ crate mod dep_tracking { impl_dep_tracking_hash_via_hash!(PathBuf); impl_dep_tracking_hash_via_hash!(lint::Level); impl_dep_tracking_hash_via_hash!(Option); + impl_dep_tracking_hash_via_hash!(Option); impl_dep_tracking_hash_via_hash!(Option); impl_dep_tracking_hash_via_hash!(Option); impl_dep_tracking_hash_via_hash!(Option); diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 79bbad8307ba..67af17bafcc0 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -248,9 +248,9 @@ macro_rules! options { pub const parse_list: &str = "a space-separated list of strings"; pub const parse_opt_list: &str = parse_list; pub const parse_opt_comma_list: &str = "a comma-separated list of strings"; - pub const parse_uint: &str = "a number"; - pub const parse_opt_uint: &str = parse_uint; - pub const parse_threads: &str = parse_uint; + pub const parse_number: &str = "a number"; + pub const parse_opt_number: &str = parse_number; + pub const parse_threads: &str = parse_number; pub const parse_passes: &str = "a space-separated list of passes, or `all`"; pub const parse_panic_strategy: &str = "either `unwind` or `abort`"; pub const parse_relro_level: &str = "one of: `full`, `partial`, or `off`"; @@ -413,16 +413,16 @@ macro_rules! options { } } - /// Use this for any uint option that has a static default. - fn parse_uint(slot: &mut usize, v: Option<&str>) -> bool { + /// Use this for any numeric option that has a static default. + fn parse_number(slot: &mut T, v: Option<&str>) -> bool { match v.and_then(|s| s.parse().ok()) { Some(i) => { *slot = i; true }, None => false } } - /// Use this for any uint option that lacks a static default. - fn parse_opt_uint(slot: &mut Option, v: Option<&str>) -> bool { + /// Use this for any numeric option that lacks a static default. + fn parse_opt_number(slot: &mut Option, v: Option<&str>) -> bool { match v { Some(s) => { *slot = s.parse().ok(); slot.is_some() } None => false @@ -748,13 +748,13 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options, "this option is deprecated and does nothing"), code_model: Option = (None, parse_code_model, [TRACKED], "choose the code model to use (`rustc --print code-models` for details)"), - codegen_units: Option = (None, parse_opt_uint, [UNTRACKED], + codegen_units: Option = (None, parse_opt_number, [UNTRACKED], "divide crate into N units to optimize in parallel"), control_flow_guard: CFGuard = (CFGuard::Disabled, parse_cfguard, [TRACKED], "use Windows Control Flow Guard (default: no)"), debug_assertions: Option = (None, parse_opt_bool, [TRACKED], "explicitly enable the `cfg(debug_assertions)` directive"), - debuginfo: usize = (0, parse_uint, [TRACKED], + debuginfo: usize = (0, parse_number, [TRACKED], "debug info emission level (0 = no debug info, 1 = line tables only, \ 2 = full debug info with variable and type information; default: 0)"), default_linker_libraries: bool = (false, parse_bool, [UNTRACKED], @@ -769,7 +769,7 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options, "force use of unwind tables"), incremental: Option = (None, parse_opt_string, [UNTRACKED], "enable incremental compilation"), - inline_threshold: Option = (None, parse_opt_uint, [TRACKED], + inline_threshold: Option = (None, parse_opt_number, [TRACKED], "set the threshold for inlining a function"), link_arg: (/* redirected to link_args */) = ((), parse_string_push, [UNTRACKED], "a single extra argument to append to the linker invocation (can be used several times)"), @@ -959,9 +959,9 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, "verify incr. comp. hashes of green query instances (default: no)"), inline_mir: Option = (None, parse_opt_bool, [TRACKED], "enable MIR inlining (default: no)"), - inline_mir_threshold: Option = (None, parse_opt_uint, [TRACKED], + inline_mir_threshold: Option = (None, parse_opt_number, [TRACKED], "a default MIR inlining threshold (default: 50)"), - inline_mir_hint_threshold: Option = (None, parse_opt_uint, [TRACKED], + inline_mir_hint_threshold: Option = (None, parse_opt_number, [TRACKED], "inlining threshold for functions with inline hint (default: 100)"), inline_in_all_cgus: Option = (None, parse_opt_bool, [TRACKED], "control whether `#[inline]` functions are in all CGUs"), @@ -999,7 +999,7 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, mir_emit_retag: bool = (false, parse_bool, [TRACKED], "emit Retagging MIR statements, interpreted e.g., by miri; implies -Zmir-opt-level=0 \ (default: no)"), - mir_opt_level: Option = (None, parse_opt_uint, [TRACKED], + mir_opt_level: Option = (None, parse_opt_number, [TRACKED], "MIR optimization level (0-4; default: 1 in non optimized builds and 2 in optimized builds)"), mutable_noalias: bool = (false, parse_bool, [TRACKED], "emit noalias metadata for mutable references (default: no)"), @@ -1120,7 +1120,7 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, "which mangling version to use for symbol names ('legacy' (default) or 'v0')"), teach: bool = (false, parse_bool, [TRACKED], "show extended diagnostic help (default: no)"), - terminal_width: Option = (None, parse_opt_uint, [UNTRACKED], + terminal_width: Option = (None, parse_opt_number, [UNTRACKED], "set the current terminal width"), tune_cpu: Option = (None, parse_opt_string, [TRACKED], "select processor to schedule for (`rustc --print target-cpus` for details)"), From a421cfed74a10a46a082f747448992ea603559ce Mon Sep 17 00:00:00 2001 From: Yusuke Tanaka Date: Sat, 6 Feb 2021 23:41:42 +0900 Subject: [PATCH 14/62] Add regression test to ensure `#[allow(unstable_name_collisions)]` works --- src/test/ui/inference/issue-81522.rs | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/test/ui/inference/issue-81522.rs diff --git a/src/test/ui/inference/issue-81522.rs b/src/test/ui/inference/issue-81522.rs new file mode 100644 index 000000000000..902f8fdde58e --- /dev/null +++ b/src/test/ui/inference/issue-81522.rs @@ -0,0 +1,31 @@ +// Regression test for #81522. +// Ensures that `#[allow(unstable_name_collisions)]` appended to things other than function +// suppresses the corresponding diagnostics emitted from inside them. +// But note that this attribute doesn't work for macro invocations if it is appended directly. + +// aux-build:inference_unstable_iterator.rs +// aux-build:inference_unstable_itertools.rs +// run-pass + +extern crate inference_unstable_iterator; +extern crate inference_unstable_itertools; + +#[allow(unused_imports)] +use inference_unstable_iterator::IpuIterator; +use inference_unstable_itertools::IpuItertools; + +fn main() { + // expression statement + #[allow(unstable_name_collisions)] + 'x'.ipu_flatten(); + + // let statement + #[allow(unstable_name_collisions)] + let _ = 'x'.ipu_flatten(); + + // block expression + #[allow(unstable_name_collisions)] + { + 'x'.ipu_flatten(); + } +} From 120e5bdac00f9066491e34401d381b107aea06d6 Mon Sep 17 00:00:00 2001 From: Yusuke Tanaka Date: Tue, 9 Feb 2021 20:49:08 +0900 Subject: [PATCH 15/62] Pass HirId of expr in question instead of function body --- .../rustc_typeck/src/check/method/probe.rs | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/compiler/rustc_typeck/src/check/method/probe.rs b/compiler/rustc_typeck/src/check/method/probe.rs index 0742549f8904..7142be9c09ed 100644 --- a/compiler/rustc_typeck/src/check/method/probe.rs +++ b/compiler/rustc_typeck/src/check/method/probe.rs @@ -83,6 +83,8 @@ struct ProbeContext<'a, 'tcx> { unsatisfied_predicates: Vec<(ty::Predicate<'tcx>, Option>)>, is_suggestion: IsSuggestion, + + scope_expr_id: hir::HirId, } impl<'a, 'tcx> Deref for ProbeContext<'a, 'tcx> { @@ -285,7 +287,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self_ty, scope_expr_id, ProbeScope::AllTraits, - |probe_cx| probe_cx.pick(), + |probe_cx| probe_cx.pick(scope_expr_id), ) .ok() .map(|pick| pick.item) @@ -317,7 +319,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self_ty, scope_expr_id, scope, - |probe_cx| probe_cx.pick(), + |probe_cx| probe_cx.pick(scope_expr_id), ) } @@ -448,6 +450,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { orig_values, steps.steps, is_suggestion, + scope_expr_id, ); probe_cx.assemble_inherent_candidates(); @@ -547,6 +550,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { orig_steps_var_values: OriginalQueryValues<'tcx>, steps: Lrc>>, is_suggestion: IsSuggestion, + scope_expr_id: hir::HirId, ) -> ProbeContext<'a, 'tcx> { ProbeContext { fcx, @@ -564,6 +568,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { private_candidate: None, unsatisfied_predicates: Vec::new(), is_suggestion, + scope_expr_id, } } @@ -1031,7 +1036,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { /////////////////////////////////////////////////////////////////////////// // THE ACTUAL SEARCH - fn pick(mut self) -> PickResult<'tcx> { + fn pick(mut self, scope_expr_id: hir::HirId) -> PickResult<'tcx> { assert!(self.method_name.is_some()); if let Some(r) = self.pick_core() { @@ -1077,7 +1082,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { if let Some((kind, def_id)) = private_candidate { return Err(MethodError::PrivateMatch(kind, def_id, out_of_scope_traits)); } - let lev_candidate = self.probe_for_lev_candidate()?; + let lev_candidate = self.probe_for_lev_candidate(scope_expr_id)?; Err(MethodError::NoMatch(NoMatchData::new( static_candidates, @@ -1312,7 +1317,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { ) { self.tcx.struct_span_lint_hir( lint::builtin::UNSTABLE_NAME_COLLISIONS, - self.fcx.body_id, + self.scope_expr_id, self.span, |lint| { let def_kind = stable_pick.item.kind.as_def_kind(); @@ -1580,7 +1585,10 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { /// Similarly to `probe_for_return_type`, this method attempts to find the best matching /// candidate method where the method name may have been misspelt. Similarly to other /// Levenshtein based suggestions, we provide at most one such suggestion. - fn probe_for_lev_candidate(&mut self) -> Result, MethodError<'tcx>> { + fn probe_for_lev_candidate( + &mut self, + scope_expr_id: hir::HirId, + ) -> Result, MethodError<'tcx>> { debug!("probing for method names similar to {:?}", self.method_name); let steps = self.steps.clone(); @@ -1594,6 +1602,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { self.orig_steps_var_values.clone(), steps, IsSuggestion(true), + scope_expr_id, ); pcx.allow_similar_names = true; pcx.assemble_inherent_candidates(); From 06b3636f4ed23c1ad0ed18ecc1408147ec862c1a Mon Sep 17 00:00:00 2001 From: Yusuke Tanaka Date: Sat, 27 Feb 2021 20:55:00 +0900 Subject: [PATCH 16/62] Remove unnecessary passing of scope_expr_id --- compiler/rustc_typeck/src/check/method/probe.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/compiler/rustc_typeck/src/check/method/probe.rs b/compiler/rustc_typeck/src/check/method/probe.rs index 7142be9c09ed..8bf7a5f52236 100644 --- a/compiler/rustc_typeck/src/check/method/probe.rs +++ b/compiler/rustc_typeck/src/check/method/probe.rs @@ -287,7 +287,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self_ty, scope_expr_id, ProbeScope::AllTraits, - |probe_cx| probe_cx.pick(scope_expr_id), + |probe_cx| probe_cx.pick(), ) .ok() .map(|pick| pick.item) @@ -319,7 +319,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self_ty, scope_expr_id, scope, - |probe_cx| probe_cx.pick(scope_expr_id), + |probe_cx| probe_cx.pick(), ) } @@ -1036,7 +1036,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { /////////////////////////////////////////////////////////////////////////// // THE ACTUAL SEARCH - fn pick(mut self, scope_expr_id: hir::HirId) -> PickResult<'tcx> { + fn pick(mut self) -> PickResult<'tcx> { assert!(self.method_name.is_some()); if let Some(r) = self.pick_core() { @@ -1082,7 +1082,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { if let Some((kind, def_id)) = private_candidate { return Err(MethodError::PrivateMatch(kind, def_id, out_of_scope_traits)); } - let lev_candidate = self.probe_for_lev_candidate(scope_expr_id)?; + let lev_candidate = self.probe_for_lev_candidate()?; Err(MethodError::NoMatch(NoMatchData::new( static_candidates, @@ -1585,10 +1585,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { /// Similarly to `probe_for_return_type`, this method attempts to find the best matching /// candidate method where the method name may have been misspelt. Similarly to other /// Levenshtein based suggestions, we provide at most one such suggestion. - fn probe_for_lev_candidate( - &mut self, - scope_expr_id: hir::HirId, - ) -> Result, MethodError<'tcx>> { + fn probe_for_lev_candidate(&mut self) -> Result, MethodError<'tcx>> { debug!("probing for method names similar to {:?}", self.method_name); let steps = self.steps.clone(); @@ -1602,7 +1599,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { self.orig_steps_var_values.clone(), steps, IsSuggestion(true), - scope_expr_id, + self.scope_expr_id, ); pcx.allow_similar_names = true; pcx.assemble_inherent_candidates(); From 4f73d2153c4a8c71e5fa9c03b6b9f3af39491319 Mon Sep 17 00:00:00 2001 From: Alan Somers Date: Fri, 26 Mar 2021 15:25:48 -0600 Subject: [PATCH 17/62] Fix compiletest on FreeBSD Recent FreeBSD gdb packages have a different format for the version string. --- src/tools/compiletest/src/main.rs | 3 ++- src/tools/compiletest/src/tests.rs | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs index 1d4b5e1247de..480916018619 100644 --- a/src/tools/compiletest/src/main.rs +++ b/src/tools/compiletest/src/main.rs @@ -909,7 +909,8 @@ fn extract_gdb_version(full_version_line: &str) -> Option { // This particular form is documented in the GNU coding standards: // https://www.gnu.org/prep/standards/html_node/_002d_002dversion.html#g_t_002d_002dversion - let mut splits = full_version_line.rsplit(' '); + let unbracketed_part = full_version_line.split('[').next().unwrap(); + let mut splits = unbracketed_part.trim_end().rsplit(' '); let version_string = splits.next().unwrap(); let mut splits = version_string.split('.'); diff --git a/src/tools/compiletest/src/tests.rs b/src/tools/compiletest/src/tests.rs index ea9bc1c1a5b7..ce75cb2878be 100644 --- a/src/tools/compiletest/src/tests.rs +++ b/src/tools/compiletest/src/tests.rs @@ -39,6 +39,9 @@ fn test_extract_gdb_version() { 7012000: "GNU gdb (GDB) 7.12", 7012000: "GNU gdb (GDB) 7.12.20161027-git", 7012050: "GNU gdb (GDB) 7.12.50.20161027-git", + + 9002000: "GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2", + 10001000: "GNU gdb (GDB) 10.1 [GDB v10.1 for FreeBSD]", } } From 29eb6860a8104f01ad4bac2b5560d9d66af14a99 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Wed, 31 Mar 2021 10:27:01 -0400 Subject: [PATCH 18/62] Give a better error when --theme is not a CSS file Before: ``` error: invalid argument: "bacon.toml" ``` After: ``` error: invalid argument: "bacon.toml" | = help: arguments to --theme must be CSS files ``` --- src/librustdoc/config.rs | 4 +++- src/test/rustdoc-ui/invalid-theme-name.rs | 3 +++ src/test/rustdoc-ui/invalid-theme-name.stderr | 4 ++++ src/tools/compiletest/src/runtest.rs | 3 +-- 4 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 src/test/rustdoc-ui/invalid-theme-name.rs create mode 100644 src/test/rustdoc-ui/invalid-theme-name.stderr diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index ecb6378f31fb..471ac8f6cad2 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -439,7 +439,9 @@ impl Options { return Err(1); } if theme_file.extension() != Some(OsStr::new("css")) { - diag.struct_err(&format!("invalid argument: \"{}\"", theme_s)).emit(); + diag.struct_err(&format!("invalid argument: \"{}\"", theme_s)) + .help("arguments to --theme must have a .css extension") + .emit(); return Err(1); } let (success, ret) = theme::test_theme_against(&theme_file, &paths, &diag); diff --git a/src/test/rustdoc-ui/invalid-theme-name.rs b/src/test/rustdoc-ui/invalid-theme-name.rs new file mode 100644 index 000000000000..c22ebf02718e --- /dev/null +++ b/src/test/rustdoc-ui/invalid-theme-name.rs @@ -0,0 +1,3 @@ +// compile-flags:--theme {{src-base}}/invalid-theme-name.rs +// error-pattern: invalid argument +// error-pattern: must have a .css extension diff --git a/src/test/rustdoc-ui/invalid-theme-name.stderr b/src/test/rustdoc-ui/invalid-theme-name.stderr new file mode 100644 index 000000000000..80204442dbec --- /dev/null +++ b/src/test/rustdoc-ui/invalid-theme-name.stderr @@ -0,0 +1,4 @@ +error: invalid argument: "$DIR/invalid-theme-name.rs" + | + = help: arguments to --theme must have a .css extension + diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 7aa3d4ab09e4..91d4e3a26a92 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -1909,8 +1909,7 @@ impl<'test> TestCx<'test> { } else { Command::new(&self.config.rustdoc_path.clone().expect("no rustdoc built yet")) }; - // FIXME Why is -L here? - rustc.arg(input_file); //.arg("-L").arg(&self.config.build_base); + rustc.arg(input_file); // Use a single thread for efficiency and a deterministic error message order rustc.arg("-Zthreads=1"); From 6530b3243a773a7e6d0bcf4f617fb74b18d8d1ea Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Wed, 31 Mar 2021 12:43:21 -0700 Subject: [PATCH 19/62] rustdoc: use Array.prototype.filter instead of open-coding it --- src/librustdoc/html/static/main.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index da2952bbebdb..52c3ff68d915 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -1338,17 +1338,11 @@ function hideThemeButtonState() { var valGenerics = extractGenerics(val); var paths = valLower.split("::"); - var j; - for (j = 0, len = paths.length; j < len; ++j) { - if (paths[j] === "") { - paths.splice(j, 1); - j -= 1; - } - } + paths = paths.filter(function(segment) { return segment !== ""; }); val = paths[paths.length - 1]; var contains = paths.slice(0, paths.length > 1 ? paths.length - 1 : 1); - var lev; + var lev, j; for (j = 0; j < nSearchWords; ++j) { ty = searchIndex[j]; if (!ty || (filterCrates !== undefined && ty.crate !== filterCrates)) { From 227f5ed679ed0ad997b6530df842d55980c8c90e Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Thu, 1 Apr 2021 10:56:11 -0700 Subject: [PATCH 20/62] rustdoc: Separate filter-empty-string out into its own function --- src/librustdoc/html/static/main.js | 13 +++++++++++-- src/tools/rustdoc-js/tester.js | 3 ++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 52c3ff68d915..947c92982257 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -219,6 +219,15 @@ function hideThemeButtonState() { var titleBeforeSearch = document.title; var searchTitle = null; + function removeEmptyStringsFromArray(x) { + for (var i = 0, len = x.length; i < len; ++i) { + if (x[i] === "") { + x.splice(i, 1); + i -= 1; + } + } + } + function clearInputTimeout() { if (searchTimeout !== null) { clearTimeout(searchTimeout); @@ -756,7 +765,7 @@ function hideThemeButtonState() { results = {}, results_in_args = {}, results_returned = {}, split = valLower.split("::"); - split = split.filter(function(segment) { return segment !== ""; }); + removeEmptyStringsFromArray(split); function transformResults(results, isType) { var out = []; @@ -1338,7 +1347,7 @@ function hideThemeButtonState() { var valGenerics = extractGenerics(val); var paths = valLower.split("::"); - paths = paths.filter(function(segment) { return segment !== ""; }); + removeEmptyStringsFromArray(paths); val = paths[paths.length - 1]; var contains = paths.slice(0, paths.length > 1 ? paths.length - 1 : 1); diff --git a/src/tools/rustdoc-js/tester.js b/src/tools/rustdoc-js/tester.js index c21277de3351..a551a97bda55 100644 --- a/src/tools/rustdoc-js/tester.js +++ b/src/tools/rustdoc-js/tester.js @@ -264,7 +264,8 @@ function loadMainJsAndIndex(mainJs, searchIndex, storageJs, crate) { // execQuery last parameter is built in buildIndex. // buildIndex requires the hashmap from search-index. var functionsToLoad = ["buildHrefAndPath", "pathSplitter", "levenshtein", "validateResult", - "handleAliases", "getQuery", "buildIndex", "execQuery", "execSearch"]; + "handleAliases", "getQuery", "buildIndex", "execQuery", "execSearch", + "removeEmptyStringsFromArray"]; ALIASES = {}; finalJS += 'window = { "currentCrate": "' + crate + '", rootPath: "../" };\n'; From 617e13548fded5d8b1deafc73c60db8677dc4886 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Mon, 15 Mar 2021 15:44:07 -0700 Subject: [PATCH 21/62] rustdoc: highlight macros more efficiently Instead of producing `assert_eq!`, just produce `assert_eq!`. --- src/librustdoc/html/highlight.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs index 7e50d72e60f7..3a4319d5d9aa 100644 --- a/src/librustdoc/html/highlight.rs +++ b/src/librustdoc/html/highlight.rs @@ -189,7 +189,9 @@ impl<'a> Classifier<'a> { // leading identifier. TokenKind::Bang if self.in_macro => { self.in_macro = false; - Class::Macro + sink(Highlight::Token { text, class: None }); + sink(Highlight::ExitSpan); + return; } // Assume that '&' or '*' is the reference or dereference operator @@ -298,7 +300,9 @@ impl<'a> Classifier<'a> { }, TokenKind::Ident | TokenKind::RawIdent if lookahead == Some(TokenKind::Bang) => { self.in_macro = true; - Class::Macro + sink(Highlight::EnterSpan { class: Class::Macro }); + sink(Highlight::Token { text, class: None }); + return; } TokenKind::Ident => match text { "ref" | "mut" => Class::RefKeyWord, From 2fb1fb7634b79d93d48749ee1f84d4ba552b186f Mon Sep 17 00:00:00 2001 From: Roxane Date: Thu, 25 Mar 2021 23:03:12 -0400 Subject: [PATCH 22/62] Fix diagnostic issue when using FakeReads in closures --- compiler/rustc_middle/src/mir/mod.rs | 16 ++++++++-- .../diagnostics/explain_borrow.rs | 2 +- .../src/borrow_check/diagnostics/mod.rs | 22 ++++++++++++-- .../src/build/expr/as_rvalue.rs | 30 ++++++++----------- .../rustc_mir_build/src/build/matches/mod.rs | 6 ++-- compiler/rustc_typeck/src/expr_use_visitor.rs | 21 +++++++++++-- ..._of_reborrow.SimplifyCfg-initial.after.mir | 28 ++++++++--------- ...row_and_cast.SimplifyCfg-initial.after.mir | 6 ++-- ...ignment.main.SimplifyCfg-initial.after.mir | 4 +-- ....match_tuple.SimplifyCfg-initial.after.mir | 2 +- ...e_38669.main.SimplifyCfg-initial.after.mir | 2 +- .../mir-opt/issue_49232.main.mir_map.0.mir | 4 +-- .../issue_72181.main.mir_map.0.32bit.mir | 2 +- .../issue_72181.main.mir_map.0.64bit.mir | 2 +- .../mir-opt/issue_72181_1.f.mir_map.0.mir | 2 +- .../mir-opt/issue_72181_1.main.mir_map.0.mir | 2 +- ....main.SimplifyCfg-promote-consts.after.mir | 2 +- ...fg-initial.after-ElaborateDrops.after.diff | 2 +- ...s.full_tested_match.PromoteTemps.after.mir | 2 +- ...full_tested_match2.PromoteTemps.before.mir | 2 +- ...h_false_edges.main.PromoteTemps.before.mir | 2 +- ...ch_test.main.SimplifyCfg-initial.after.mir | 6 ++-- ...egion_subtyping_basic.main.nll.0.32bit.mir | 6 ++-- ...egion_subtyping_basic.main.nll.0.64bit.mir | 6 ++-- ...receiver_ptr_mutability.main.mir_map.0.mir | 4 +-- ...tch_guard.CleanupNonCodegenStatements.diff | 2 +- ...imple_match.match_bool.mir_map.0.32bit.mir | 2 +- ...imple_match.match_bool.mir_map.0.64bit.mir | 2 +- .../mir-opt/storage_ranges.main.nll.0.mir | 6 ++-- ...ove_out.move_out_by_subslice.mir_map.0.mir | 2 +- ...y_move_out.move_out_from_end.mir_map.0.mir | 2 +- 31 files changed, 119 insertions(+), 80 deletions(-) diff --git a/compiler/rustc_middle/src/mir/mod.rs b/compiler/rustc_middle/src/mir/mod.rs index b2cf1aab112b..1f7e12db47a0 100644 --- a/compiler/rustc_middle/src/mir/mod.rs +++ b/compiler/rustc_middle/src/mir/mod.rs @@ -1452,7 +1452,7 @@ pub struct Statement<'tcx> { // `Statement` is used a lot. Make sure it doesn't unintentionally get bigger. #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] -static_assert_size!(Statement<'_>, 32); +static_assert_size!(Statement<'_>, 40); impl Statement<'_> { /// Changes a statement to a nop. This is both faster than deleting instructions and avoids @@ -1575,7 +1575,12 @@ pub enum FakeReadCause { /// `let x: !; match x {}` doesn't generate any read of x so we need to /// generate a read of x to check that it is initialized and safe. - ForMatchedPlace, + /// + /// If a closure pattern matches a Place starting with an Upvar, then we introduce a + /// FakeRead for that Place outside the closure, in such a case this option would be + /// Some(closure_def_id). + /// Otherwise, the value of the optional DefId will be None. + ForMatchedPlace(Option), /// A fake read of the RefWithinGuard version of a bind-by-value variable /// in a match guard to ensure that it's value hasn't change by the time @@ -1594,7 +1599,12 @@ pub enum FakeReadCause { /// but in some cases it can affect the borrow checker, as in #53695. /// Therefore, we insert a "fake read" here to ensure that we get /// appropriate errors. - ForLet, + /// + /// If a closure pattern matches a Place starting with an Upvar, then we introduce a + /// FakeRead for that Place outside the closure, in such a case this option would be + /// Some(closure_def_id). + /// Otherwise, the value of the optional DefId will be None. + ForLet(Option), /// If we have an index expression like /// diff --git a/compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs b/compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs index 06e3f4b91f61..4ab0fe082598 100644 --- a/compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs +++ b/compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs @@ -515,7 +515,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { let block = &self.body.basic_blocks()[location.block]; let kind = if let Some(&Statement { - kind: StatementKind::FakeRead(FakeReadCause::ForLet, _), + kind: StatementKind::FakeRead(FakeReadCause::ForLet(_), _), .. }) = block.statements.get(location.statement_index) { diff --git a/compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs b/compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs index 6ea0ba0a8e1b..6a457487348e 100644 --- a/compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs +++ b/compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs @@ -7,8 +7,8 @@ use rustc_hir::def_id::DefId; use rustc_hir::lang_items::LangItemGroup; use rustc_hir::GeneratorKind; use rustc_middle::mir::{ - AggregateKind, Constant, Field, Local, LocalInfo, LocalKind, Location, Operand, Place, - PlaceRef, ProjectionElem, Rvalue, Statement, StatementKind, Terminator, TerminatorKind, + AggregateKind, Constant, FakeReadCause, Field, Local, LocalInfo, LocalKind, Location, Operand, + Place, PlaceRef, ProjectionElem, Rvalue, Statement, StatementKind, Terminator, TerminatorKind, }; use rustc_middle::ty::print::Print; use rustc_middle::ty::{self, DefIdTree, Instance, Ty, TyCtxt}; @@ -795,6 +795,24 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { } } + // StatementKind::FakeRead only contains a def_id if they are introduced as a result + // of pattern matching within a closure. + if let StatementKind::FakeRead(cause, box ref place) = stmt.kind { + match cause { + FakeReadCause::ForMatchedPlace(Some(closure_def_id)) + | FakeReadCause::ForLet(Some(closure_def_id)) => { + debug!("move_spans: def_id={:?} place={:?}", closure_def_id, place); + let places = &[Operand::Move(*place)]; + if let Some((args_span, generator_kind, var_span)) = + self.closure_span(closure_def_id, moved_place, places) + { + return ClosureUse { generator_kind, args_span, var_span }; + } + } + _ => {} + } + } + let normal_ret = if moved_place.projection.iter().any(|p| matches!(p, ProjectionElem::Downcast(..))) { PatUse(stmt.source_info.span) diff --git a/compiler/rustc_mir_build/src/build/expr/as_rvalue.rs b/compiler/rustc_mir_build/src/build/expr/as_rvalue.rs index 7f24a41b00bb..822fbd91c947 100644 --- a/compiler/rustc_mir_build/src/build/expr/as_rvalue.rs +++ b/compiler/rustc_mir_build/src/build/expr/as_rvalue.rs @@ -179,24 +179,20 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { // match x { _ => () } // fake read of `x` // }; // ``` - // FIXME(RFC2229): Remove feature gate once diagnostics are improved - if this.tcx.features().capture_disjoint_fields { - for (thir_place, cause, hir_id) in fake_reads.into_iter() { - let place_builder = - unpack!(block = this.as_place_builder(block, thir_place)); + for (thir_place, cause, hir_id) in fake_reads.into_iter() { + let place_builder = unpack!(block = this.as_place_builder(block, thir_place)); - if let Ok(place_builder_resolved) = - place_builder.try_upvars_resolved(this.tcx, this.typeck_results) - { - let mir_place = - place_builder_resolved.into_place(this.tcx, this.typeck_results); - this.cfg.push_fake_read( - block, - this.source_info(this.tcx.hir().span(*hir_id)), - *cause, - mir_place, - ); - } + if let Ok(place_builder_resolved) = + place_builder.try_upvars_resolved(this.tcx, this.typeck_results) + { + let mir_place = + place_builder_resolved.into_place(this.tcx, this.typeck_results); + this.cfg.push_fake_read( + block, + this.source_info(this.tcx.hir().span(*hir_id)), + *cause, + mir_place, + ); } } diff --git a/compiler/rustc_mir_build/src/build/matches/mod.rs b/compiler/rustc_mir_build/src/build/matches/mod.rs index 73fd3f0feb59..0e422dc3c637 100644 --- a/compiler/rustc_mir_build/src/build/matches/mod.rs +++ b/compiler/rustc_mir_build/src/build/matches/mod.rs @@ -139,7 +139,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { // uninhabited value. If we get never patterns, those will check that // the place is initialized, and so this read would only be used to // check safety. - let cause_matched_place = FakeReadCause::ForMatchedPlace; + let cause_matched_place = FakeReadCause::ForMatchedPlace(None); let source_info = self.source_info(scrutinee_span); if let Ok(scrutinee_builder) = @@ -400,7 +400,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { // Inject a fake read, see comments on `FakeReadCause::ForLet`. let source_info = self.source_info(irrefutable_pat.span); - self.cfg.push_fake_read(block, source_info, FakeReadCause::ForLet, place); + self.cfg.push_fake_read(block, source_info, FakeReadCause::ForLet(None), place); self.schedule_drop_for_binding(var, irrefutable_pat.span, OutsideGuard); block.unit() @@ -435,7 +435,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { // Inject a fake read, see comments on `FakeReadCause::ForLet`. let pattern_source_info = self.source_info(irrefutable_pat.span); - let cause_let = FakeReadCause::ForLet; + let cause_let = FakeReadCause::ForLet(None); self.cfg.push_fake_read(block, pattern_source_info, cause_let, place); let ty_source_info = self.source_info(user_ty_span); diff --git a/compiler/rustc_typeck/src/expr_use_visitor.rs b/compiler/rustc_typeck/src/expr_use_visitor.rs index ab286bacd818..02510cb6a44c 100644 --- a/compiler/rustc_typeck/src/expr_use_visitor.rs +++ b/compiler/rustc_typeck/src/expr_use_visitor.rs @@ -280,9 +280,14 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx> { if needs_to_be_read { self.borrow_expr(&discr, ty::ImmBorrow); } else { + let closure_def_id = match discr_place.place.base { + PlaceBase::Upvar(upvar_id) => Some(upvar_id.closure_expr_id.to_def_id()), + _ => None, + }; + self.delegate.fake_read( discr_place.place.clone(), - FakeReadCause::ForMatchedPlace, + FakeReadCause::ForMatchedPlace(closure_def_id), discr_place.hir_id, ); @@ -578,9 +583,14 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx> { } fn walk_arm(&mut self, discr_place: &PlaceWithHirId<'tcx>, arm: &hir::Arm<'_>) { + let closure_def_id = match discr_place.place.base { + PlaceBase::Upvar(upvar_id) => Some(upvar_id.closure_expr_id.to_def_id()), + _ => None, + }; + self.delegate.fake_read( discr_place.place.clone(), - FakeReadCause::ForMatchedPlace, + FakeReadCause::ForMatchedPlace(closure_def_id), discr_place.hir_id, ); self.walk_pat(discr_place, &arm.pat); @@ -595,9 +605,14 @@ impl<'a, 'tcx> ExprUseVisitor<'a, 'tcx> { /// Walks a pat that occurs in isolation (i.e., top-level of fn argument or /// let binding, and *not* a match arm or nested pat.) fn walk_irrefutable_pat(&mut self, discr_place: &PlaceWithHirId<'tcx>, pat: &hir::Pat<'_>) { + let closure_def_id = match discr_place.place.base { + PlaceBase::Upvar(upvar_id) => Some(upvar_id.closure_expr_id.to_def_id()), + _ => None, + }; + self.delegate.fake_read( discr_place.place.clone(), - FakeReadCause::ForLet, + FakeReadCause::ForLet(closure_def_id), discr_place.hir_id, ); self.walk_pat(discr_place, pat); diff --git a/src/test/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir b/src/test/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir index a95681126205..9fa478f8a826 100644 --- a/src/test/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir +++ b/src/test/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir @@ -130,12 +130,12 @@ fn address_of_reborrow() -> () { StorageLive(_2); // scope 0 at $DIR/address-of.rs:4:14: 4:21 _2 = [const 0_i32; 10]; // scope 0 at $DIR/address-of.rs:4:14: 4:21 _1 = &_2; // scope 0 at $DIR/address-of.rs:4:13: 4:21 - FakeRead(ForLet, _1); // scope 0 at $DIR/address-of.rs:4:9: 4:10 + FakeRead(ForLet(None), _1); // scope 0 at $DIR/address-of.rs:4:9: 4:10 StorageLive(_3); // scope 1 at $DIR/address-of.rs:5:9: 5:14 StorageLive(_4); // scope 1 at $DIR/address-of.rs:5:22: 5:29 _4 = [const 0_i32; 10]; // scope 1 at $DIR/address-of.rs:5:22: 5:29 _3 = &mut _4; // scope 1 at $DIR/address-of.rs:5:17: 5:29 - FakeRead(ForLet, _3); // scope 1 at $DIR/address-of.rs:5:9: 5:14 + FakeRead(ForLet(None), _3); // scope 1 at $DIR/address-of.rs:5:9: 5:14 StorageLive(_5); // scope 2 at $DIR/address-of.rs:7:5: 7:18 StorageLive(_6); // scope 2 at $DIR/address-of.rs:7:5: 7:18 _6 = &raw const (*_1); // scope 2 at $DIR/address-of.rs:7:5: 7:6 @@ -170,25 +170,25 @@ fn address_of_reborrow() -> () { StorageDead(_13); // scope 2 at $DIR/address-of.rs:11:20: 11:21 StorageLive(_15); // scope 2 at $DIR/address-of.rs:13:9: 13:10 _15 = &raw const (*_1); // scope 2 at $DIR/address-of.rs:13:23: 13:24 - FakeRead(ForLet, _15); // scope 2 at $DIR/address-of.rs:13:9: 13:10 + FakeRead(ForLet(None), _15); // scope 2 at $DIR/address-of.rs:13:9: 13:10 AscribeUserType(_15, o, UserTypeProjection { base: UserType(3), projs: [] }); // scope 2 at $DIR/address-of.rs:13:12: 13:20 StorageLive(_16); // scope 3 at $DIR/address-of.rs:14:9: 14:10 _16 = &raw const (*_1); // scope 3 at $DIR/address-of.rs:14:31: 14:32 - FakeRead(ForLet, _16); // scope 3 at $DIR/address-of.rs:14:9: 14:10 + FakeRead(ForLet(None), _16); // scope 3 at $DIR/address-of.rs:14:9: 14:10 AscribeUserType(_16, o, UserTypeProjection { base: UserType(5), projs: [] }); // scope 3 at $DIR/address-of.rs:14:12: 14:28 StorageLive(_17); // scope 4 at $DIR/address-of.rs:15:9: 15:10 StorageLive(_18); // scope 4 at $DIR/address-of.rs:15:30: 15:31 _18 = &raw const (*_1); // scope 4 at $DIR/address-of.rs:15:30: 15:31 _17 = move _18 as *const dyn std::marker::Send (Pointer(Unsize)); // scope 4 at $DIR/address-of.rs:15:30: 15:31 StorageDead(_18); // scope 4 at $DIR/address-of.rs:15:30: 15:31 - FakeRead(ForLet, _17); // scope 4 at $DIR/address-of.rs:15:9: 15:10 + FakeRead(ForLet(None), _17); // scope 4 at $DIR/address-of.rs:15:9: 15:10 AscribeUserType(_17, o, UserTypeProjection { base: UserType(7), projs: [] }); // scope 4 at $DIR/address-of.rs:15:12: 15:27 StorageLive(_19); // scope 5 at $DIR/address-of.rs:16:9: 16:10 StorageLive(_20); // scope 5 at $DIR/address-of.rs:16:27: 16:28 _20 = &raw const (*_1); // scope 5 at $DIR/address-of.rs:16:27: 16:28 _19 = move _20 as *const [i32] (Pointer(Unsize)); // scope 5 at $DIR/address-of.rs:16:27: 16:28 StorageDead(_20); // scope 5 at $DIR/address-of.rs:16:27: 16:28 - FakeRead(ForLet, _19); // scope 5 at $DIR/address-of.rs:16:9: 16:10 + FakeRead(ForLet(None), _19); // scope 5 at $DIR/address-of.rs:16:9: 16:10 AscribeUserType(_19, o, UserTypeProjection { base: UserType(9), projs: [] }); // scope 5 at $DIR/address-of.rs:16:12: 16:24 StorageLive(_21); // scope 6 at $DIR/address-of.rs:18:5: 18:18 StorageLive(_22); // scope 6 at $DIR/address-of.rs:18:5: 18:18 @@ -218,25 +218,25 @@ fn address_of_reborrow() -> () { StorageDead(_27); // scope 6 at $DIR/address-of.rs:21:22: 21:23 StorageLive(_29); // scope 6 at $DIR/address-of.rs:23:9: 23:10 _29 = &raw const (*_3); // scope 6 at $DIR/address-of.rs:23:23: 23:24 - FakeRead(ForLet, _29); // scope 6 at $DIR/address-of.rs:23:9: 23:10 + FakeRead(ForLet(None), _29); // scope 6 at $DIR/address-of.rs:23:9: 23:10 AscribeUserType(_29, o, UserTypeProjection { base: UserType(13), projs: [] }); // scope 6 at $DIR/address-of.rs:23:12: 23:20 StorageLive(_30); // scope 7 at $DIR/address-of.rs:24:9: 24:10 _30 = &raw const (*_3); // scope 7 at $DIR/address-of.rs:24:31: 24:32 - FakeRead(ForLet, _30); // scope 7 at $DIR/address-of.rs:24:9: 24:10 + FakeRead(ForLet(None), _30); // scope 7 at $DIR/address-of.rs:24:9: 24:10 AscribeUserType(_30, o, UserTypeProjection { base: UserType(15), projs: [] }); // scope 7 at $DIR/address-of.rs:24:12: 24:28 StorageLive(_31); // scope 8 at $DIR/address-of.rs:25:9: 25:10 StorageLive(_32); // scope 8 at $DIR/address-of.rs:25:30: 25:31 _32 = &raw const (*_3); // scope 8 at $DIR/address-of.rs:25:30: 25:31 _31 = move _32 as *const dyn std::marker::Send (Pointer(Unsize)); // scope 8 at $DIR/address-of.rs:25:30: 25:31 StorageDead(_32); // scope 8 at $DIR/address-of.rs:25:30: 25:31 - FakeRead(ForLet, _31); // scope 8 at $DIR/address-of.rs:25:9: 25:10 + FakeRead(ForLet(None), _31); // scope 8 at $DIR/address-of.rs:25:9: 25:10 AscribeUserType(_31, o, UserTypeProjection { base: UserType(17), projs: [] }); // scope 8 at $DIR/address-of.rs:25:12: 25:27 StorageLive(_33); // scope 9 at $DIR/address-of.rs:26:9: 26:10 StorageLive(_34); // scope 9 at $DIR/address-of.rs:26:27: 26:28 _34 = &raw const (*_3); // scope 9 at $DIR/address-of.rs:26:27: 26:28 _33 = move _34 as *const [i32] (Pointer(Unsize)); // scope 9 at $DIR/address-of.rs:26:27: 26:28 StorageDead(_34); // scope 9 at $DIR/address-of.rs:26:27: 26:28 - FakeRead(ForLet, _33); // scope 9 at $DIR/address-of.rs:26:9: 26:10 + FakeRead(ForLet(None), _33); // scope 9 at $DIR/address-of.rs:26:9: 26:10 AscribeUserType(_33, o, UserTypeProjection { base: UserType(19), projs: [] }); // scope 9 at $DIR/address-of.rs:26:12: 26:24 StorageLive(_35); // scope 10 at $DIR/address-of.rs:28:5: 28:16 StorageLive(_36); // scope 10 at $DIR/address-of.rs:28:5: 28:16 @@ -266,25 +266,25 @@ fn address_of_reborrow() -> () { StorageDead(_41); // scope 10 at $DIR/address-of.rs:31:20: 31:21 StorageLive(_43); // scope 10 at $DIR/address-of.rs:33:9: 33:10 _43 = &raw mut (*_3); // scope 10 at $DIR/address-of.rs:33:21: 33:22 - FakeRead(ForLet, _43); // scope 10 at $DIR/address-of.rs:33:9: 33:10 + FakeRead(ForLet(None), _43); // scope 10 at $DIR/address-of.rs:33:9: 33:10 AscribeUserType(_43, o, UserTypeProjection { base: UserType(23), projs: [] }); // scope 10 at $DIR/address-of.rs:33:12: 33:18 StorageLive(_44); // scope 11 at $DIR/address-of.rs:34:9: 34:10 _44 = &raw mut (*_3); // scope 11 at $DIR/address-of.rs:34:29: 34:30 - FakeRead(ForLet, _44); // scope 11 at $DIR/address-of.rs:34:9: 34:10 + FakeRead(ForLet(None), _44); // scope 11 at $DIR/address-of.rs:34:9: 34:10 AscribeUserType(_44, o, UserTypeProjection { base: UserType(25), projs: [] }); // scope 11 at $DIR/address-of.rs:34:12: 34:26 StorageLive(_45); // scope 12 at $DIR/address-of.rs:35:9: 35:10 StorageLive(_46); // scope 12 at $DIR/address-of.rs:35:28: 35:29 _46 = &raw mut (*_3); // scope 12 at $DIR/address-of.rs:35:28: 35:29 _45 = move _46 as *mut dyn std::marker::Send (Pointer(Unsize)); // scope 12 at $DIR/address-of.rs:35:28: 35:29 StorageDead(_46); // scope 12 at $DIR/address-of.rs:35:28: 35:29 - FakeRead(ForLet, _45); // scope 12 at $DIR/address-of.rs:35:9: 35:10 + FakeRead(ForLet(None), _45); // scope 12 at $DIR/address-of.rs:35:9: 35:10 AscribeUserType(_45, o, UserTypeProjection { base: UserType(27), projs: [] }); // scope 12 at $DIR/address-of.rs:35:12: 35:25 StorageLive(_47); // scope 13 at $DIR/address-of.rs:36:9: 36:10 StorageLive(_48); // scope 13 at $DIR/address-of.rs:36:25: 36:26 _48 = &raw mut (*_3); // scope 13 at $DIR/address-of.rs:36:25: 36:26 _47 = move _48 as *mut [i32] (Pointer(Unsize)); // scope 13 at $DIR/address-of.rs:36:25: 36:26 StorageDead(_48); // scope 13 at $DIR/address-of.rs:36:25: 36:26 - FakeRead(ForLet, _47); // scope 13 at $DIR/address-of.rs:36:9: 36:10 + FakeRead(ForLet(None), _47); // scope 13 at $DIR/address-of.rs:36:9: 36:10 AscribeUserType(_47, o, UserTypeProjection { base: UserType(29), projs: [] }); // scope 13 at $DIR/address-of.rs:36:12: 36:22 _0 = const (); // scope 0 at $DIR/address-of.rs:3:26: 37:2 StorageDead(_47); // scope 13 at $DIR/address-of.rs:37:1: 37:2 diff --git a/src/test/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir b/src/test/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir index e058b0aaa8f0..195f3e2e65c6 100644 --- a/src/test/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir +++ b/src/test/mir-opt/address_of.borrow_and_cast.SimplifyCfg-initial.after.mir @@ -24,19 +24,19 @@ fn borrow_and_cast(_1: i32) -> () { StorageLive(_3); // scope 0 at $DIR/address-of.rs:42:13: 42:15 _3 = &_1; // scope 0 at $DIR/address-of.rs:42:13: 42:15 _2 = &raw const (*_3); // scope 0 at $DIR/address-of.rs:42:13: 42:15 - FakeRead(ForLet, _2); // scope 0 at $DIR/address-of.rs:42:9: 42:10 + FakeRead(ForLet(None), _2); // scope 0 at $DIR/address-of.rs:42:9: 42:10 StorageDead(_3); // scope 0 at $DIR/address-of.rs:42:29: 42:30 StorageLive(_4); // scope 1 at $DIR/address-of.rs:43:9: 43:10 StorageLive(_5); // scope 1 at $DIR/address-of.rs:43:13: 43:19 _5 = &mut _1; // scope 1 at $DIR/address-of.rs:43:13: 43:19 _4 = &raw const (*_5); // scope 1 at $DIR/address-of.rs:43:13: 43:19 - FakeRead(ForLet, _4); // scope 1 at $DIR/address-of.rs:43:9: 43:10 + FakeRead(ForLet(None), _4); // scope 1 at $DIR/address-of.rs:43:9: 43:10 StorageDead(_5); // scope 1 at $DIR/address-of.rs:43:33: 43:34 StorageLive(_6); // scope 2 at $DIR/address-of.rs:44:9: 44:10 StorageLive(_7); // scope 2 at $DIR/address-of.rs:44:13: 44:19 _7 = &mut _1; // scope 2 at $DIR/address-of.rs:44:13: 44:19 _6 = &raw mut (*_7); // scope 2 at $DIR/address-of.rs:44:13: 44:19 - FakeRead(ForLet, _6); // scope 2 at $DIR/address-of.rs:44:9: 44:10 + FakeRead(ForLet(None), _6); // scope 2 at $DIR/address-of.rs:44:9: 44:10 StorageDead(_7); // scope 2 at $DIR/address-of.rs:44:31: 44:32 _0 = const (); // scope 0 at $DIR/address-of.rs:41:32: 45:2 StorageDead(_6); // scope 2 at $DIR/address-of.rs:45:1: 45:2 diff --git a/src/test/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir b/src/test/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir index 7e0ca3dea4b7..e751b825c050 100644 --- a/src/test/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir +++ b/src/test/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir @@ -28,7 +28,7 @@ fn main() -> () { bb0: { StorageLive(_1); // scope 0 at $DIR/basic_assignment.rs:11:9: 11:17 _1 = const false; // scope 0 at $DIR/basic_assignment.rs:11:20: 11:25 - FakeRead(ForLet, _1); // scope 0 at $DIR/basic_assignment.rs:11:9: 11:17 + FakeRead(ForLet(None), _1); // scope 0 at $DIR/basic_assignment.rs:11:9: 11:17 StorageLive(_2); // scope 1 at $DIR/basic_assignment.rs:12:9: 12:17 StorageLive(_3); // scope 2 at $DIR/basic_assignment.rs:16:16: 16:24 _3 = _1; // scope 2 at $DIR/basic_assignment.rs:16:16: 16:24 @@ -36,7 +36,7 @@ fn main() -> () { StorageDead(_3); // scope 2 at $DIR/basic_assignment.rs:16:23: 16:24 StorageLive(_4); // scope 2 at $DIR/basic_assignment.rs:18:9: 18:15 _4 = Option::>::None; // scope 2 at $DIR/basic_assignment.rs:18:36: 18:40 - FakeRead(ForLet, _4); // scope 2 at $DIR/basic_assignment.rs:18:9: 18:15 + FakeRead(ForLet(None), _4); // scope 2 at $DIR/basic_assignment.rs:18:9: 18:15 AscribeUserType(_4, o, UserTypeProjection { base: UserType(1), projs: [] }); // scope 2 at $DIR/basic_assignment.rs:18:17: 18:33 StorageLive(_5); // scope 3 at $DIR/basic_assignment.rs:19:9: 19:15 StorageLive(_6); // scope 4 at $DIR/basic_assignment.rs:23:14: 23:20 diff --git a/src/test/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir b/src/test/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir index aa4f996c4b46..93507879a6f8 100644 --- a/src/test/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir +++ b/src/test/mir-opt/exponential_or.match_tuple.SimplifyCfg-initial.after.mir @@ -18,7 +18,7 @@ fn match_tuple(_1: (u32, bool, Option, u32)) -> u32 { } bb0: { - FakeRead(ForMatchedPlace, _1); // scope 0 at $DIR/exponential-or.rs:5:11: 5:12 + FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/exponential-or.rs:5:11: 5:12 switchInt((_1.0: u32)) -> [1_u32: bb2, 4_u32: bb2, otherwise: bb1]; // scope 0 at $DIR/exponential-or.rs:6:15: 6:16 } diff --git a/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir b/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir index e9e5a101a64a..8355b2d195e1 100644 --- a/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir +++ b/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir @@ -14,7 +14,7 @@ fn main() -> () { bb0: { StorageLive(_1); // scope 0 at $DIR/issue-38669.rs:5:9: 5:25 _1 = const false; // scope 0 at $DIR/issue-38669.rs:5:28: 5:33 - FakeRead(ForLet, _1); // scope 0 at $DIR/issue-38669.rs:5:9: 5:25 + FakeRead(ForLet(None), _1); // scope 0 at $DIR/issue-38669.rs:5:9: 5:25 goto -> bb1; // scope 1 at $DIR/issue-38669.rs:6:5: 11:6 } diff --git a/src/test/mir-opt/issue_49232.main.mir_map.0.mir b/src/test/mir-opt/issue_49232.main.mir_map.0.mir index 79f5495c7882..06fbbda3d9e2 100644 --- a/src/test/mir-opt/issue_49232.main.mir_map.0.mir +++ b/src/test/mir-opt/issue_49232.main.mir_map.0.mir @@ -24,7 +24,7 @@ fn main() -> () { StorageLive(_2); // scope 0 at $DIR/issue-49232.rs:7:13: 7:19 StorageLive(_3); // scope 0 at $DIR/issue-49232.rs:8:19: 8:23 _3 = const true; // scope 0 at $DIR/issue-49232.rs:8:19: 8:23 - FakeRead(ForMatchedPlace, _3); // scope 0 at $DIR/issue-49232.rs:8:19: 8:23 + FakeRead(ForMatchedPlace(None), _3); // scope 0 at $DIR/issue-49232.rs:8:19: 8:23 switchInt(_3) -> [false: bb3, otherwise: bb4]; // scope 0 at $DIR/issue-49232.rs:9:17: 9:22 } @@ -51,7 +51,7 @@ fn main() -> () { } bb8: { - FakeRead(ForLet, _2); // scope 0 at $DIR/issue-49232.rs:7:13: 7:19 + FakeRead(ForLet(None), _2); // scope 0 at $DIR/issue-49232.rs:7:13: 7:19 StorageDead(_3); // scope 0 at $DIR/issue-49232.rs:12:10: 12:11 StorageLive(_5); // scope 1 at $DIR/issue-49232.rs:13:9: 13:22 StorageLive(_6); // scope 1 at $DIR/issue-49232.rs:13:14: 13:21 diff --git a/src/test/mir-opt/issue_72181.main.mir_map.0.32bit.mir b/src/test/mir-opt/issue_72181.main.mir_map.0.32bit.mir index cf66a501e35e..2e6783b7f3c9 100644 --- a/src/test/mir-opt/issue_72181.main.mir_map.0.32bit.mir +++ b/src/test/mir-opt/issue_72181.main.mir_map.0.32bit.mir @@ -38,7 +38,7 @@ fn main() -> () { _2 = [move _3, move _4]; // scope 1 at $DIR/issue-72181.rs:26:13: 26:43 StorageDead(_4); // scope 1 at $DIR/issue-72181.rs:26:42: 26:43 StorageDead(_3); // scope 1 at $DIR/issue-72181.rs:26:42: 26:43 - FakeRead(ForLet, _2); // scope 1 at $DIR/issue-72181.rs:26:9: 26:10 + FakeRead(ForLet(None), _2); // scope 1 at $DIR/issue-72181.rs:26:9: 26:10 StorageLive(_5); // scope 2 at $DIR/issue-72181.rs:27:13: 27:30 StorageLive(_6); // scope 4 at $DIR/issue-72181.rs:27:24: 27:25 _6 = const 0_usize; // scope 4 at $DIR/issue-72181.rs:27:24: 27:25 diff --git a/src/test/mir-opt/issue_72181.main.mir_map.0.64bit.mir b/src/test/mir-opt/issue_72181.main.mir_map.0.64bit.mir index cf66a501e35e..2e6783b7f3c9 100644 --- a/src/test/mir-opt/issue_72181.main.mir_map.0.64bit.mir +++ b/src/test/mir-opt/issue_72181.main.mir_map.0.64bit.mir @@ -38,7 +38,7 @@ fn main() -> () { _2 = [move _3, move _4]; // scope 1 at $DIR/issue-72181.rs:26:13: 26:43 StorageDead(_4); // scope 1 at $DIR/issue-72181.rs:26:42: 26:43 StorageDead(_3); // scope 1 at $DIR/issue-72181.rs:26:42: 26:43 - FakeRead(ForLet, _2); // scope 1 at $DIR/issue-72181.rs:26:9: 26:10 + FakeRead(ForLet(None), _2); // scope 1 at $DIR/issue-72181.rs:26:9: 26:10 StorageLive(_5); // scope 2 at $DIR/issue-72181.rs:27:13: 27:30 StorageLive(_6); // scope 4 at $DIR/issue-72181.rs:27:24: 27:25 _6 = const 0_usize; // scope 4 at $DIR/issue-72181.rs:27:24: 27:25 diff --git a/src/test/mir-opt/issue_72181_1.f.mir_map.0.mir b/src/test/mir-opt/issue_72181_1.f.mir_map.0.mir index 7571d7bb94f9..7def08ece220 100644 --- a/src/test/mir-opt/issue_72181_1.f.mir_map.0.mir +++ b/src/test/mir-opt/issue_72181_1.f.mir_map.0.mir @@ -9,7 +9,7 @@ fn f(_1: Void) -> ! { bb0: { StorageLive(_2); // scope 0 at $DIR/issue-72181-1.rs:10:20: 12:2 StorageLive(_3); // scope 0 at $DIR/issue-72181-1.rs:11:5: 11:15 - FakeRead(ForMatchedPlace, _1); // scope 0 at $DIR/issue-72181-1.rs:11:11: 11:12 + FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/issue-72181-1.rs:11:11: 11:12 unreachable; // scope 0 at $DIR/issue-72181-1.rs:11:11: 11:12 } diff --git a/src/test/mir-opt/issue_72181_1.main.mir_map.0.mir b/src/test/mir-opt/issue_72181_1.main.mir_map.0.mir index 1fd91c2056bf..3c26b20c35e2 100644 --- a/src/test/mir-opt/issue_72181_1.main.mir_map.0.mir +++ b/src/test/mir-opt/issue_72181_1.main.mir_map.0.mir @@ -29,7 +29,7 @@ fn main() -> () { bb1: { StorageDead(_3); // scope 2 at $DIR/issue-72181-1.rs:17:43: 17:44 - FakeRead(ForLet, _2); // scope 0 at $DIR/issue-72181-1.rs:16:9: 16:10 + FakeRead(ForLet(None), _2); // scope 0 at $DIR/issue-72181-1.rs:16:9: 16:10 AscribeUserType(_2, o, UserTypeProjection { base: UserType(1), projs: [] }); // scope 0 at $DIR/issue-72181-1.rs:16:12: 16:16 StorageLive(_4); // scope 1 at $DIR/issue-72181-1.rs:20:5: 20:9 StorageLive(_5); // scope 1 at $DIR/issue-72181-1.rs:20:7: 20:8 diff --git a/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir b/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir index f109937dbf93..99c7ac8d5b70 100644 --- a/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir +++ b/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir @@ -41,7 +41,7 @@ fn main() -> () { bb4: { StorageLive(_6); // scope 0 at $DIR/loop_test.rs:14:13: 14:14 _6 = const 1_i32; // scope 0 at $DIR/loop_test.rs:14:17: 14:18 - FakeRead(ForLet, _6); // scope 0 at $DIR/loop_test.rs:14:13: 14:14 + FakeRead(ForLet(None), _6); // scope 0 at $DIR/loop_test.rs:14:13: 14:14 StorageDead(_6); // scope 0 at $DIR/loop_test.rs:16:5: 16:6 goto -> bb3; // scope 0 at $DIR/loop_test.rs:1:1: 1:1 } diff --git a/src/test/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff b/src/test/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff index 95beab2ec9af..3395cbfbdfb3 100644 --- a/src/test/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff +++ b/src/test/mir-opt/match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff @@ -31,7 +31,7 @@ } bb0: { -- FakeRead(ForMatchedPlace, _2); // scope 0 at $DIR/match-arm-scopes.rs:14:11: 14:16 +- FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match-arm-scopes.rs:14:11: 14:16 - switchInt((_2.0: bool)) -> [false: bb1, otherwise: bb2]; // scope 0 at $DIR/match-arm-scopes.rs:15:10: 15:15 + switchInt((_2.0: bool)) -> [false: bb5, otherwise: bb1]; // scope 0 at $DIR/match-arm-scopes.rs:15:10: 15:15 } diff --git a/src/test/mir-opt/match_false_edges.full_tested_match.PromoteTemps.after.mir b/src/test/mir-opt/match_false_edges.full_tested_match.PromoteTemps.after.mir index 1921b9359412..5af242376c93 100644 --- a/src/test/mir-opt/match_false_edges.full_tested_match.PromoteTemps.after.mir +++ b/src/test/mir-opt/match_false_edges.full_tested_match.PromoteTemps.after.mir @@ -27,7 +27,7 @@ fn full_tested_match() -> () { StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:15:13: 19:6 StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27 _2 = Option::::Some(const 42_i32); // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27 - FakeRead(ForMatchedPlace, _2); // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27 + FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_false_edges.rs:15:19: 15:27 _3 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:16:9: 16:16 switchInt(move _3) -> [0_isize: bb1, 1_isize: bb2, otherwise: bb4]; // scope 0 at $DIR/match_false_edges.rs:16:9: 16:16 } diff --git a/src/test/mir-opt/match_false_edges.full_tested_match2.PromoteTemps.before.mir b/src/test/mir-opt/match_false_edges.full_tested_match2.PromoteTemps.before.mir index c7b1cce061bc..a4ebf8a02466 100644 --- a/src/test/mir-opt/match_false_edges.full_tested_match2.PromoteTemps.before.mir +++ b/src/test/mir-opt/match_false_edges.full_tested_match2.PromoteTemps.before.mir @@ -26,7 +26,7 @@ fn full_tested_match2() -> () { StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:26:13: 30:6 StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27 _2 = Option::::Some(const 42_i32); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27 - FakeRead(ForMatchedPlace, _2); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27 + FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27 _3 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:27:9: 27:16 switchInt(move _3) -> [0_isize: bb1, 1_isize: bb2, otherwise: bb4]; // scope 0 at $DIR/match_false_edges.rs:27:9: 27:16 } diff --git a/src/test/mir-opt/match_false_edges.main.PromoteTemps.before.mir b/src/test/mir-opt/match_false_edges.main.PromoteTemps.before.mir index 9b8ce2c1ed04..5de52b324f43 100644 --- a/src/test/mir-opt/match_false_edges.main.PromoteTemps.before.mir +++ b/src/test/mir-opt/match_false_edges.main.PromoteTemps.before.mir @@ -37,7 +37,7 @@ fn main() -> () { StorageLive(_1); // scope 0 at $DIR/match_false_edges.rs:35:13: 40:6 StorageLive(_2); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26 _2 = Option::::Some(const 1_i32); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26 - FakeRead(ForMatchedPlace, _2); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26 + FakeRead(ForMatchedPlace(None), _2); // scope 0 at $DIR/match_false_edges.rs:35:19: 35:26 _4 = discriminant(_2); // scope 0 at $DIR/match_false_edges.rs:36:9: 36:17 switchInt(move _4) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/match_false_edges.rs:36:9: 36:17 } diff --git a/src/test/mir-opt/match_test.main.SimplifyCfg-initial.after.mir b/src/test/mir-opt/match_test.main.SimplifyCfg-initial.after.mir index e3bc4f80f27f..5bb910947ca2 100644 --- a/src/test/mir-opt/match_test.main.SimplifyCfg-initial.after.mir +++ b/src/test/mir-opt/match_test.main.SimplifyCfg-initial.after.mir @@ -21,12 +21,12 @@ fn main() -> () { bb0: { StorageLive(_1); // scope 0 at $DIR/match_test.rs:7:9: 7:10 _1 = const 3_i32; // scope 0 at $DIR/match_test.rs:7:13: 7:14 - FakeRead(ForLet, _1); // scope 0 at $DIR/match_test.rs:7:9: 7:10 + FakeRead(ForLet(None), _1); // scope 0 at $DIR/match_test.rs:7:9: 7:10 StorageLive(_2); // scope 1 at $DIR/match_test.rs:8:9: 8:10 _2 = const true; // scope 1 at $DIR/match_test.rs:8:13: 8:17 - FakeRead(ForLet, _2); // scope 1 at $DIR/match_test.rs:8:9: 8:10 + FakeRead(ForLet(None), _2); // scope 1 at $DIR/match_test.rs:8:9: 8:10 StorageLive(_3); // scope 2 at $DIR/match_test.rs:12:5: 17:6 - FakeRead(ForMatchedPlace, _1); // scope 2 at $DIR/match_test.rs:12:11: 12:12 + FakeRead(ForMatchedPlace(None), _1); // scope 2 at $DIR/match_test.rs:12:11: 12:12 _6 = Le(const 0_i32, _1); // scope 2 at $DIR/match_test.rs:13:9: 13:14 switchInt(move _6) -> [false: bb4, otherwise: bb1]; // scope 2 at $DIR/match_test.rs:13:9: 13:14 } diff --git a/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir b/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir index 8c939d5fc3da..39e6cee11b4c 100644 --- a/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir +++ b/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir @@ -46,7 +46,7 @@ fn main() -> () { bb0: { StorageLive(_1); // bb0[0]: scope 0 at $DIR/region-subtyping-basic.rs:17:9: 17:14 _1 = [const Const(Value(Scalar(0x00000001)): usize), const Const(Value(Scalar(0x00000002)): usize), const Const(Value(Scalar(0x00000003)): usize)]; // bb0[1]: scope 0 at $DIR/region-subtyping-basic.rs:17:17: 17:26 - FakeRead(ForLet, _1); // bb0[2]: scope 0 at $DIR/region-subtyping-basic.rs:17:9: 17:14 + FakeRead(ForLet(None), _1); // bb0[2]: scope 0 at $DIR/region-subtyping-basic.rs:17:9: 17:14 StorageLive(_2); // bb0[3]: scope 1 at $DIR/region-subtyping-basic.rs:18:9: 18:10 StorageLive(_3); // bb0[4]: scope 1 at $DIR/region-subtyping-basic.rs:18:16: 18:17 _3 = const Const(Value(Scalar(0x00000000)): usize); // bb0[5]: scope 1 at $DIR/region-subtyping-basic.rs:18:16: 18:17 @@ -57,10 +57,10 @@ fn main() -> () { bb1: { _2 = &'_#3r _1[_3]; // bb1[0]: scope 1 at $DIR/region-subtyping-basic.rs:18:13: 18:18 - FakeRead(ForLet, _2); // bb1[1]: scope 1 at $DIR/region-subtyping-basic.rs:18:9: 18:10 + FakeRead(ForLet(None), _2); // bb1[1]: scope 1 at $DIR/region-subtyping-basic.rs:18:9: 18:10 StorageLive(_6); // bb1[2]: scope 2 at $DIR/region-subtyping-basic.rs:19:9: 19:10 _6 = _2; // bb1[3]: scope 2 at $DIR/region-subtyping-basic.rs:19:13: 19:14 - FakeRead(ForLet, _6); // bb1[4]: scope 2 at $DIR/region-subtyping-basic.rs:19:9: 19:10 + FakeRead(ForLet(None), _6); // bb1[4]: scope 2 at $DIR/region-subtyping-basic.rs:19:9: 19:10 StorageLive(_7); // bb1[5]: scope 3 at $DIR/region-subtyping-basic.rs:20:8: 20:12 _7 = const Const(Value(Scalar(0x01)): bool); // bb1[6]: scope 3 at $DIR/region-subtyping-basic.rs:20:8: 20:12 switchInt(move _7) -> [Const(Value(Scalar(0x00)): bool): bb3, otherwise: bb2]; // bb1[7]: scope 3 at $DIR/region-subtyping-basic.rs:20:5: 24:6 diff --git a/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir b/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir index 00704baa6c19..6021b6529f91 100644 --- a/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir +++ b/src/test/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir @@ -46,7 +46,7 @@ fn main() -> () { bb0: { StorageLive(_1); // bb0[0]: scope 0 at $DIR/region-subtyping-basic.rs:17:9: 17:14 _1 = [const Const(Value(Scalar(0x0000000000000001)): usize), const Const(Value(Scalar(0x0000000000000002)): usize), const Const(Value(Scalar(0x0000000000000003)): usize)]; // bb0[1]: scope 0 at $DIR/region-subtyping-basic.rs:17:17: 17:26 - FakeRead(ForLet, _1); // bb0[2]: scope 0 at $DIR/region-subtyping-basic.rs:17:9: 17:14 + FakeRead(ForLet(None), _1); // bb0[2]: scope 0 at $DIR/region-subtyping-basic.rs:17:9: 17:14 StorageLive(_2); // bb0[3]: scope 1 at $DIR/region-subtyping-basic.rs:18:9: 18:10 StorageLive(_3); // bb0[4]: scope 1 at $DIR/region-subtyping-basic.rs:18:16: 18:17 _3 = const Const(Value(Scalar(0x0000000000000000)): usize); // bb0[5]: scope 1 at $DIR/region-subtyping-basic.rs:18:16: 18:17 @@ -57,10 +57,10 @@ fn main() -> () { bb1: { _2 = &'_#3r _1[_3]; // bb1[0]: scope 1 at $DIR/region-subtyping-basic.rs:18:13: 18:18 - FakeRead(ForLet, _2); // bb1[1]: scope 1 at $DIR/region-subtyping-basic.rs:18:9: 18:10 + FakeRead(ForLet(None), _2); // bb1[1]: scope 1 at $DIR/region-subtyping-basic.rs:18:9: 18:10 StorageLive(_6); // bb1[2]: scope 2 at $DIR/region-subtyping-basic.rs:19:9: 19:10 _6 = _2; // bb1[3]: scope 2 at $DIR/region-subtyping-basic.rs:19:13: 19:14 - FakeRead(ForLet, _6); // bb1[4]: scope 2 at $DIR/region-subtyping-basic.rs:19:9: 19:10 + FakeRead(ForLet(None), _6); // bb1[4]: scope 2 at $DIR/region-subtyping-basic.rs:19:9: 19:10 StorageLive(_7); // bb1[5]: scope 3 at $DIR/region-subtyping-basic.rs:20:8: 20:12 _7 = const Const(Value(Scalar(0x01)): bool); // bb1[6]: scope 3 at $DIR/region-subtyping-basic.rs:20:8: 20:12 switchInt(move _7) -> [Const(Value(Scalar(0x00)): bool): bb3, otherwise: bb2]; // bb1[7]: scope 3 at $DIR/region-subtyping-basic.rs:20:5: 24:6 diff --git a/src/test/mir-opt/receiver_ptr_mutability.main.mir_map.0.mir b/src/test/mir-opt/receiver_ptr_mutability.main.mir_map.0.mir index d2d96ff468df..f54c8f8ab4a2 100644 --- a/src/test/mir-opt/receiver_ptr_mutability.main.mir_map.0.mir +++ b/src/test/mir-opt/receiver_ptr_mutability.main.mir_map.0.mir @@ -36,7 +36,7 @@ fn main() -> () { } bb1: { - FakeRead(ForLet, _1); // scope 0 at $DIR/receiver-ptr-mutability.rs:14:9: 14:12 + FakeRead(ForLet(None), _1); // scope 0 at $DIR/receiver-ptr-mutability.rs:14:9: 14:12 AscribeUserType(_1, o, UserTypeProjection { base: UserType(1), projs: [] }); // scope 0 at $DIR/receiver-ptr-mutability.rs:14:14: 14:23 StorageLive(_2); // scope 1 at $DIR/receiver-ptr-mutability.rs:15:5: 15:12 StorageLive(_3); // scope 1 at $DIR/receiver-ptr-mutability.rs:15:5: 15:8 @@ -63,7 +63,7 @@ fn main() -> () { _7 = &_8; // scope 1 at $DIR/receiver-ptr-mutability.rs:18:35: 18:41 _6 = &_7; // scope 1 at $DIR/receiver-ptr-mutability.rs:18:34: 18:41 _5 = &(*_6); // scope 1 at $DIR/receiver-ptr-mutability.rs:18:34: 18:41 - FakeRead(ForLet, _5); // scope 1 at $DIR/receiver-ptr-mutability.rs:18:9: 18:16 + FakeRead(ForLet(None), _5); // scope 1 at $DIR/receiver-ptr-mutability.rs:18:9: 18:16 AscribeUserType(_5, o, UserTypeProjection { base: UserType(3), projs: [] }); // scope 1 at $DIR/receiver-ptr-mutability.rs:18:18: 18:31 StorageDead(_6); // scope 1 at $DIR/receiver-ptr-mutability.rs:18:41: 18:42 StorageLive(_10); // scope 2 at $DIR/receiver-ptr-mutability.rs:19:5: 19:16 diff --git a/src/test/mir-opt/remove_fake_borrows.match_guard.CleanupNonCodegenStatements.diff b/src/test/mir-opt/remove_fake_borrows.match_guard.CleanupNonCodegenStatements.diff index 47027311b475..4aa388fc67bd 100644 --- a/src/test/mir-opt/remove_fake_borrows.match_guard.CleanupNonCodegenStatements.diff +++ b/src/test/mir-opt/remove_fake_borrows.match_guard.CleanupNonCodegenStatements.diff @@ -13,7 +13,7 @@ let mut _8: bool; // in scope 0 at $DIR/remove_fake_borrows.rs:8:20: 8:21 bb0: { -- FakeRead(ForMatchedPlace, _1); // scope 0 at $DIR/remove_fake_borrows.rs:7:11: 7:12 +- FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/remove_fake_borrows.rs:7:11: 7:12 + nop; // scope 0 at $DIR/remove_fake_borrows.rs:7:11: 7:12 _3 = discriminant(_1); // scope 0 at $DIR/remove_fake_borrows.rs:8:9: 8:16 switchInt(move _3) -> [1_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/remove_fake_borrows.rs:8:9: 8:16 diff --git a/src/test/mir-opt/simple_match.match_bool.mir_map.0.32bit.mir b/src/test/mir-opt/simple_match.match_bool.mir_map.0.32bit.mir index 5bcb20ca72a3..841cca7c381f 100644 --- a/src/test/mir-opt/simple_match.match_bool.mir_map.0.32bit.mir +++ b/src/test/mir-opt/simple_match.match_bool.mir_map.0.32bit.mir @@ -5,7 +5,7 @@ fn match_bool(_1: bool) -> usize { let mut _0: usize; // return place in scope 0 at $DIR/simple-match.rs:5:27: 5:32 bb0: { - FakeRead(ForMatchedPlace, _1); // scope 0 at $DIR/simple-match.rs:6:11: 6:12 + FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/simple-match.rs:6:11: 6:12 switchInt(_1) -> [false: bb2, otherwise: bb1]; // scope 0 at $DIR/simple-match.rs:7:9: 7:13 } diff --git a/src/test/mir-opt/simple_match.match_bool.mir_map.0.64bit.mir b/src/test/mir-opt/simple_match.match_bool.mir_map.0.64bit.mir index 5bcb20ca72a3..841cca7c381f 100644 --- a/src/test/mir-opt/simple_match.match_bool.mir_map.0.64bit.mir +++ b/src/test/mir-opt/simple_match.match_bool.mir_map.0.64bit.mir @@ -5,7 +5,7 @@ fn match_bool(_1: bool) -> usize { let mut _0: usize; // return place in scope 0 at $DIR/simple-match.rs:5:27: 5:32 bb0: { - FakeRead(ForMatchedPlace, _1); // scope 0 at $DIR/simple-match.rs:6:11: 6:12 + FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/simple-match.rs:6:11: 6:12 switchInt(_1) -> [false: bb2, otherwise: bb1]; // scope 0 at $DIR/simple-match.rs:7:9: 7:13 } diff --git a/src/test/mir-opt/storage_ranges.main.nll.0.mir b/src/test/mir-opt/storage_ranges.main.nll.0.mir index 6fa83d3de625..e02580135af3 100644 --- a/src/test/mir-opt/storage_ranges.main.nll.0.mir +++ b/src/test/mir-opt/storage_ranges.main.nll.0.mir @@ -39,7 +39,7 @@ fn main() -> () { bb0: { StorageLive(_1); // scope 0 at $DIR/storage_ranges.rs:4:9: 4:10 _1 = const 0_i32; // scope 0 at $DIR/storage_ranges.rs:4:13: 4:14 - FakeRead(ForLet, _1); // scope 0 at $DIR/storage_ranges.rs:4:9: 4:10 + FakeRead(ForLet(None), _1); // scope 0 at $DIR/storage_ranges.rs:4:9: 4:10 StorageLive(_2); // scope 1 at $DIR/storage_ranges.rs:5:5: 7:6 StorageLive(_3); // scope 1 at $DIR/storage_ranges.rs:6:13: 6:14 StorageLive(_4); // scope 1 at $DIR/storage_ranges.rs:6:18: 6:25 @@ -48,14 +48,14 @@ fn main() -> () { _4 = Option::::Some(move _5); // scope 1 at $DIR/storage_ranges.rs:6:18: 6:25 StorageDead(_5); // scope 1 at $DIR/storage_ranges.rs:6:24: 6:25 _3 = &_4; // scope 1 at $DIR/storage_ranges.rs:6:17: 6:25 - FakeRead(ForLet, _3); // scope 1 at $DIR/storage_ranges.rs:6:13: 6:14 + FakeRead(ForLet(None), _3); // scope 1 at $DIR/storage_ranges.rs:6:13: 6:14 _2 = const (); // scope 1 at $DIR/storage_ranges.rs:5:5: 7:6 StorageDead(_4); // scope 1 at $DIR/storage_ranges.rs:7:5: 7:6 StorageDead(_3); // scope 1 at $DIR/storage_ranges.rs:7:5: 7:6 StorageDead(_2); // scope 1 at $DIR/storage_ranges.rs:7:5: 7:6 StorageLive(_6); // scope 1 at $DIR/storage_ranges.rs:8:9: 8:10 _6 = const 1_i32; // scope 1 at $DIR/storage_ranges.rs:8:13: 8:14 - FakeRead(ForLet, _6); // scope 1 at $DIR/storage_ranges.rs:8:9: 8:10 + FakeRead(ForLet(None), _6); // scope 1 at $DIR/storage_ranges.rs:8:9: 8:10 _0 = const (); // scope 0 at $DIR/storage_ranges.rs:3:11: 9:2 StorageDead(_6); // scope 1 at $DIR/storage_ranges.rs:9:1: 9:2 StorageDead(_1); // scope 0 at $DIR/storage_ranges.rs:9:1: 9:2 diff --git a/src/test/mir-opt/uniform_array_move_out.move_out_by_subslice.mir_map.0.mir b/src/test/mir-opt/uniform_array_move_out.move_out_by_subslice.mir_map.0.mir index d18f6308ded8..7f81d9fc482f 100644 --- a/src/test/mir-opt/uniform_array_move_out.move_out_by_subslice.mir_map.0.mir +++ b/src/test/mir-opt/uniform_array_move_out.move_out_by_subslice.mir_map.0.mir @@ -48,7 +48,7 @@ fn move_out_by_subslice() -> () { bb4: { StorageDead(_2); // scope 0 at $DIR/uniform_array_move_out.rs:11:26: 11:27 - FakeRead(ForLet, _1); // scope 0 at $DIR/uniform_array_move_out.rs:11:9: 11:10 + FakeRead(ForLet(None), _1); // scope 0 at $DIR/uniform_array_move_out.rs:11:9: 11:10 StorageLive(_6); // scope 1 at $DIR/uniform_array_move_out.rs:12:10: 12:17 _6 = move _1[0..2]; // scope 1 at $DIR/uniform_array_move_out.rs:12:10: 12:17 _0 = const (); // scope 0 at $DIR/uniform_array_move_out.rs:10:27: 13:2 diff --git a/src/test/mir-opt/uniform_array_move_out.move_out_from_end.mir_map.0.mir b/src/test/mir-opt/uniform_array_move_out.move_out_from_end.mir_map.0.mir index eda8e5fd3afe..62ab494c0662 100644 --- a/src/test/mir-opt/uniform_array_move_out.move_out_from_end.mir_map.0.mir +++ b/src/test/mir-opt/uniform_array_move_out.move_out_from_end.mir_map.0.mir @@ -48,7 +48,7 @@ fn move_out_from_end() -> () { bb4: { StorageDead(_2); // scope 0 at $DIR/uniform_array_move_out.rs:5:26: 5:27 - FakeRead(ForLet, _1); // scope 0 at $DIR/uniform_array_move_out.rs:5:9: 5:10 + FakeRead(ForLet(None), _1); // scope 0 at $DIR/uniform_array_move_out.rs:5:9: 5:10 StorageLive(_6); // scope 1 at $DIR/uniform_array_move_out.rs:6:14: 6:16 _6 = move _1[1 of 2]; // scope 1 at $DIR/uniform_array_move_out.rs:6:14: 6:16 _0 = const (); // scope 0 at $DIR/uniform_array_move_out.rs:4:24: 7:2 From 0a97eee8df1f4a3182cd92786258ee5cf2baa43f Mon Sep 17 00:00:00 2001 From: Roxane Date: Mon, 29 Mar 2021 22:48:44 -0400 Subject: [PATCH 23/62] Reduce size of statements --- compiler/rustc_middle/src/mir/mod.rs | 8 +++++--- compiler/rustc_middle/src/mir/visit.rs | 2 +- .../src/borrow_check/diagnostics/conflict_errors.rs | 2 +- .../src/borrow_check/diagnostics/explain_borrow.rs | 2 +- compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs | 2 +- compiler/rustc_mir/src/borrow_check/invalidation.rs | 2 +- compiler/rustc_mir/src/borrow_check/mod.rs | 2 +- compiler/rustc_mir/src/dataflow/move_paths/builder.rs | 4 ++-- compiler/rustc_mir/src/transform/coverage/spans.rs | 4 ++-- compiler/rustc_mir_build/src/build/cfg.rs | 2 +- 10 files changed, 16 insertions(+), 14 deletions(-) diff --git a/compiler/rustc_middle/src/mir/mod.rs b/compiler/rustc_middle/src/mir/mod.rs index 1f7e12db47a0..a7e9fc468b4f 100644 --- a/compiler/rustc_middle/src/mir/mod.rs +++ b/compiler/rustc_middle/src/mir/mod.rs @@ -1452,7 +1452,7 @@ pub struct Statement<'tcx> { // `Statement` is used a lot. Make sure it doesn't unintentionally get bigger. #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] -static_assert_size!(Statement<'_>, 40); +static_assert_size!(Statement<'_>, 32); impl Statement<'_> { /// Changes a statement to a nop. This is both faster than deleting instructions and avoids @@ -1482,7 +1482,7 @@ pub enum StatementKind<'tcx> { /// /// Note that this also is emitted for regular `let` bindings to ensure that locals that are /// never accessed still get some sanity checks for, e.g., `let x: ! = ..;` - FakeRead(FakeReadCause, Box>), + FakeRead(Box<(FakeReadCause, Place<'tcx>)>), /// Write the discriminant for a variant to the enum Place. SetDiscriminant { place: Box>, variant_index: VariantIdx }, @@ -1628,7 +1628,9 @@ impl Debug for Statement<'_> { use self::StatementKind::*; match self.kind { Assign(box (ref place, ref rv)) => write!(fmt, "{:?} = {:?}", place, rv), - FakeRead(ref cause, ref place) => write!(fmt, "FakeRead({:?}, {:?})", cause, place), + FakeRead(box (ref cause, ref place)) => { + write!(fmt, "FakeRead({:?}, {:?})", cause, place) + } Retag(ref kind, ref place) => write!( fmt, "Retag({}{:?})", diff --git a/compiler/rustc_middle/src/mir/visit.rs b/compiler/rustc_middle/src/mir/visit.rs index 32b4cd665d03..fd504f8c5d5a 100644 --- a/compiler/rustc_middle/src/mir/visit.rs +++ b/compiler/rustc_middle/src/mir/visit.rs @@ -380,7 +380,7 @@ macro_rules! make_mir_visitor { ) => { self.visit_assign(place, rvalue, location); } - StatementKind::FakeRead(_, place) => { + StatementKind::FakeRead(box (_, place)) => { self.visit_place( place, PlaceContext::NonMutatingUse(NonMutatingUseContext::Inspect), diff --git a/compiler/rustc_mir/src/borrow_check/diagnostics/conflict_errors.rs b/compiler/rustc_mir/src/borrow_check/diagnostics/conflict_errors.rs index eb942b195b25..d5deec820889 100644 --- a/compiler/rustc_mir/src/borrow_check/diagnostics/conflict_errors.rs +++ b/compiler/rustc_mir/src/borrow_check/diagnostics/conflict_errors.rs @@ -1728,7 +1728,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { impl<'tcx> Visitor<'tcx> for FakeReadCauseFinder<'tcx> { fn visit_statement(&mut self, statement: &Statement<'tcx>, _: Location) { match statement { - Statement { kind: StatementKind::FakeRead(cause, box place), .. } + Statement { kind: StatementKind::FakeRead(box (cause, place)), .. } if *place == self.place => { self.cause = Some(*cause); diff --git a/compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs b/compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs index 4ab0fe082598..2a388b8a72bb 100644 --- a/compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs +++ b/compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs @@ -515,7 +515,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { let block = &self.body.basic_blocks()[location.block]; let kind = if let Some(&Statement { - kind: StatementKind::FakeRead(FakeReadCause::ForLet(_), _), + kind: StatementKind::FakeRead(box (FakeReadCause::ForLet(_), _)), .. }) = block.statements.get(location.statement_index) { diff --git a/compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs b/compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs index 6a457487348e..577d7d53814e 100644 --- a/compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs +++ b/compiler/rustc_mir/src/borrow_check/diagnostics/mod.rs @@ -797,7 +797,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { // StatementKind::FakeRead only contains a def_id if they are introduced as a result // of pattern matching within a closure. - if let StatementKind::FakeRead(cause, box ref place) = stmt.kind { + if let StatementKind::FakeRead(box (cause, ref place)) = stmt.kind { match cause { FakeReadCause::ForMatchedPlace(Some(closure_def_id)) | FakeReadCause::ForLet(Some(closure_def_id)) => { diff --git a/compiler/rustc_mir/src/borrow_check/invalidation.rs b/compiler/rustc_mir/src/borrow_check/invalidation.rs index 1055e30a3a44..9374741f8374 100644 --- a/compiler/rustc_mir/src/borrow_check/invalidation.rs +++ b/compiler/rustc_mir/src/borrow_check/invalidation.rs @@ -63,7 +63,7 @@ impl<'cx, 'tcx> Visitor<'tcx> for InvalidationGenerator<'cx, 'tcx> { self.mutate_place(location, *lhs, Shallow(None), JustWrite); } - StatementKind::FakeRead(_, _) => { + StatementKind::FakeRead(box (_, _)) => { // Only relevant for initialized/liveness/safety checks. } StatementKind::SetDiscriminant { place, variant_index: _ } => { diff --git a/compiler/rustc_mir/src/borrow_check/mod.rs b/compiler/rustc_mir/src/borrow_check/mod.rs index 583f73d5775d..71db6abde435 100644 --- a/compiler/rustc_mir/src/borrow_check/mod.rs +++ b/compiler/rustc_mir/src/borrow_check/mod.rs @@ -574,7 +574,7 @@ impl<'cx, 'tcx> dataflow::ResultsVisitor<'cx, 'tcx> for MirBorrowckCtxt<'cx, 'tc self.mutate_place(location, (*lhs, span), Shallow(None), JustWrite, flow_state); } - StatementKind::FakeRead(_, box ref place) => { + StatementKind::FakeRead(box (_, ref place)) => { // Read for match doesn't access any memory and is used to // assert that a place is safe and live. So we don't have to // do any checks here. diff --git a/compiler/rustc_mir/src/dataflow/move_paths/builder.rs b/compiler/rustc_mir/src/dataflow/move_paths/builder.rs index 52b6e9f3753b..538d8921869c 100644 --- a/compiler/rustc_mir/src/dataflow/move_paths/builder.rs +++ b/compiler/rustc_mir/src/dataflow/move_paths/builder.rs @@ -293,8 +293,8 @@ impl<'b, 'a, 'tcx> Gatherer<'b, 'a, 'tcx> { } self.gather_rvalue(rval); } - StatementKind::FakeRead(_, place) => { - self.create_move_path(**place); + StatementKind::FakeRead(box (_, place)) => { + self.create_move_path(*place); } StatementKind::LlvmInlineAsm(ref asm) => { for (output, kind) in iter::zip(&*asm.outputs, &asm.asm.outputs) { diff --git a/compiler/rustc_mir/src/transform/coverage/spans.rs b/compiler/rustc_mir/src/transform/coverage/spans.rs index e7097ce86190..324d826b375c 100644 --- a/compiler/rustc_mir/src/transform/coverage/spans.rs +++ b/compiler/rustc_mir/src/transform/coverage/spans.rs @@ -683,10 +683,10 @@ pub(super) fn filtered_statement_span( // and `_1` is the `Place` for `somenum`. // // If and when the Issue is resolved, remove this special case match pattern: - StatementKind::FakeRead(cause, _) if cause == FakeReadCause::ForGuardBinding => None, + StatementKind::FakeRead(box (cause, _)) if cause == FakeReadCause::ForGuardBinding => None, // Retain spans from all other statements - StatementKind::FakeRead(_, _) // Not including `ForGuardBinding` + StatementKind::FakeRead(box (_, _)) // Not including `ForGuardBinding` | StatementKind::CopyNonOverlapping(..) | StatementKind::Assign(_) | StatementKind::SetDiscriminant { .. } diff --git a/compiler/rustc_mir_build/src/build/cfg.rs b/compiler/rustc_mir_build/src/build/cfg.rs index e562e52f8410..fd4a783d12a0 100644 --- a/compiler/rustc_mir_build/src/build/cfg.rs +++ b/compiler/rustc_mir_build/src/build/cfg.rs @@ -80,7 +80,7 @@ impl<'tcx> CFG<'tcx> { cause: FakeReadCause, place: Place<'tcx>, ) { - let kind = StatementKind::FakeRead(cause, box place); + let kind = StatementKind::FakeRead(box (cause, place)); let stmt = Statement { source_info, kind }; self.push(block, stmt); } From c29dc120e5e43a4757d8f7f20db35c61767fe987 Mon Sep 17 00:00:00 2001 From: Roxane Date: Tue, 30 Mar 2021 00:30:20 -0400 Subject: [PATCH 24/62] fix clippy error --- src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs b/src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs index 1391f7505e27..dac4d93499dc 100644 --- a/src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs +++ b/src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs @@ -212,7 +212,7 @@ fn check_statement(tcx: TyCtxt<'tcx>, body: &Body<'tcx>, def_id: DefId, statemen check_rvalue(tcx, body, def_id, rval, span) } - StatementKind::FakeRead(_, place) | + StatementKind::FakeRead(box (_, place)) => check_place(tcx, *place, span, body), // just an assignment StatementKind::SetDiscriminant { place, .. } => check_place(tcx, **place, span, body), From f64038f9833f1940f64276fcab9bd53f21f9443b Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Fri, 2 Apr 2021 17:46:12 -0700 Subject: [PATCH 25/62] rustdoc: update macro highlight tests --- src/librustdoc/html/highlight/fixtures/dos_line.html | 2 +- src/librustdoc/html/highlight/fixtures/sample.html | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/librustdoc/html/highlight/fixtures/dos_line.html b/src/librustdoc/html/highlight/fixtures/dos_line.html index 4400f85681d8..1c8dbffe78c2 100644 --- a/src/librustdoc/html/highlight/fixtures/dos_line.html +++ b/src/librustdoc/html/highlight/fixtures/dos_line.html @@ -1,3 +1,3 @@ pub fn foo() { -println!("foo"); +println!("foo"); } diff --git a/src/librustdoc/html/highlight/fixtures/sample.html b/src/librustdoc/html/highlight/fixtures/sample.html index d937246f4665..4966e0ac6bbd 100644 --- a/src/librustdoc/html/highlight/fixtures/sample.html +++ b/src/librustdoc/html/highlight/fixtures/sample.html @@ -17,11 +17,11 @@ let _ = &foo; let _ = &&foo; let _ = *foo; - mac!(foo, &mut bar); - assert!(self.length < N && index <= self.length); + mac!(foo, &mut bar); + assert!(self.length < N && index <= self.length); } -macro_rules! bar { +macro_rules! bar { ($foo:tt) => {}; } From 8eed8ed9675b264cbacc3e589950368000b2664d Mon Sep 17 00:00:00 2001 From: liudingming Date: Sun, 4 Apr 2021 00:05:17 +0800 Subject: [PATCH 26/62] Move log's short part to first --- compiler/rustc_typeck/src/check/expr.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_typeck/src/check/expr.rs b/compiler/rustc_typeck/src/check/expr.rs index 30d60514063d..67714b714c9d 100644 --- a/compiler/rustc_typeck/src/check/expr.rs +++ b/compiler/rustc_typeck/src/check/expr.rs @@ -161,7 +161,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { expr: &'tcx hir::Expr<'tcx>, expected: Expectation<'tcx>, ) -> Ty<'tcx> { - debug!(">> type-checking: expr={:?} expected={:?}", expr, expected); + debug!(">> type-checking: expected={:?}, expr={:?} ", expected, expr); // True if `expr` is a `Try::from_ok(())` that is a result of desugaring a try block // without the final expr (e.g. `try { return; }`). We don't want to generate an @@ -224,7 +224,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { expr: &'tcx hir::Expr<'tcx>, expected: Expectation<'tcx>, ) -> Ty<'tcx> { - debug!("check_expr_kind(expr={:?}, expected={:?})", expr, expected); + debug!("check_expr_kind(expected={:?}, expr={:?})", expected, expr); let tcx = self.tcx; match expr.kind { From a4a6bdd33771ef4cf87fd1ffc6895ec7060ff898 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sat, 3 Apr 2021 19:25:11 +0200 Subject: [PATCH 27/62] addr_of_mut: add example for creating a pointer to uninit data --- library/core/src/mem/maybe_uninit.rs | 2 ++ library/core/src/ptr/mod.rs | 27 ++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/library/core/src/mem/maybe_uninit.rs b/library/core/src/mem/maybe_uninit.rs index 337f0e847bb5..64342de6341b 100644 --- a/library/core/src/mem/maybe_uninit.rs +++ b/library/core/src/mem/maybe_uninit.rs @@ -190,6 +190,8 @@ use crate::ptr; /// let ptr = uninit.as_mut_ptr(); /// /// // Initializing the `name` field +/// // Using `write` instead of assignment via `=` to not call `drop` on the +/// // old, uninitialized value. /// unsafe { addr_of_mut!((*ptr).name).write("Bob".to_string()); } /// /// // Initializing the `list` field diff --git a/library/core/src/ptr/mod.rs b/library/core/src/ptr/mod.rs index 6412bd41a8c0..f8b124f581cc 100644 --- a/library/core/src/ptr/mod.rs +++ b/library/core/src/ptr/mod.rs @@ -1540,6 +1540,12 @@ fnptr_impls_args! { A, B, C, D, E, F, G, H, I, J, K, L } /// let raw_f2 = ptr::addr_of!(packed.f2); /// assert_eq!(unsafe { raw_f2.read_unaligned() }, 2); /// ``` +/// +/// See [`addr_of_mut`] for how to create a pointer to ininitialized data. +/// Doing that with `addr_of` would not make much sense since one could only +/// read the data, and that would be Undefined Behavior. +/// +/// [`addr_of_mut`]: macro.addr_of_mut.html #[stable(feature = "raw_ref_macros", since = "1.51.0")] #[rustc_macro_transparency = "semitransparent"] #[allow_internal_unstable(raw_ref_op)] @@ -1556,7 +1562,9 @@ pub macro addr_of($place:expr) { /// as all other references. This macro can create a raw pointer *without* creating /// a reference first. /// -/// # Example +/// # Examples +/// +/// **Creating a pointer to unaligned data:** /// /// ``` /// use std::ptr; @@ -1573,6 +1581,23 @@ pub macro addr_of($place:expr) { /// unsafe { raw_f2.write_unaligned(42); } /// assert_eq!({packed.f2}, 42); // `{...}` forces copying the field instead of creating a reference. /// ``` +/// +/// **Creating a pointer to uninitialized data:** +/// +/// ```rust +/// use std::{ptr, mem::MaybeUninit}; +/// +/// struct Demo { +/// field: bool, +/// } +/// +/// let mut uninit = MaybeUninit::::uninit(); +/// // `&uninit.as_mut().field` would create a reference to an uninitialized `bool`, +/// // and thus be Undefined Behavior! +/// let f1_ptr = unsafe { ptr::addr_of_mut!((*uninit.as_mut_ptr()).field) }; +/// unsafe { f1_ptr.write(true); } +/// let init = unsafe { uninit.assume_init() }; +/// ``` #[stable(feature = "raw_ref_macros", since = "1.51.0")] #[rustc_macro_transparency = "semitransparent"] #[allow_internal_unstable(raw_ref_op)] From b93137a24e0de539293a99f6bfce9855cf13679d Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sat, 3 Apr 2021 19:26:54 +0200 Subject: [PATCH 28/62] explain that even addr_of cannot deref a NULL ptr --- library/core/src/ptr/mod.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/library/core/src/ptr/mod.rs b/library/core/src/ptr/mod.rs index f8b124f581cc..ba14b1abdb2e 100644 --- a/library/core/src/ptr/mod.rs +++ b/library/core/src/ptr/mod.rs @@ -1524,6 +1524,10 @@ fnptr_impls_args! { A, B, C, D, E, F, G, H, I, J, K, L } /// as all other references. This macro can create a raw pointer *without* creating /// a reference first. /// +/// Note, however, that the `expr` in `addr_of!(expr)` is still subject to all +/// the usual rules. In particular, `addr_of!(*ptr::null())` is Undefined +/// Behavior because it dereferences a NULL pointer. +/// /// # Example /// /// ``` @@ -1562,6 +1566,10 @@ pub macro addr_of($place:expr) { /// as all other references. This macro can create a raw pointer *without* creating /// a reference first. /// +/// Note, however, that the `expr` in `addr_of_mut!(expr)` is still subject to all +/// the usual rules. In particular, `addr_of_mut!(*ptr::null_mut())` is Undefined +/// Behavior because it dereferences a NULL pointer. +/// /// # Examples /// /// **Creating a pointer to unaligned data:** From 3982ac22497efda2bddf261021e88aa37b55e47b Mon Sep 17 00:00:00 2001 From: liudingming Date: Sun, 4 Apr 2021 01:40:47 +0800 Subject: [PATCH 29/62] Optimize out unneeded type resolving --- compiler/rustc_typeck/src/check/expectation.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_typeck/src/check/expectation.rs b/compiler/rustc_typeck/src/check/expectation.rs index 22be10a731f9..e9e810344776 100644 --- a/compiler/rustc_typeck/src/check/expectation.rs +++ b/compiler/rustc_typeck/src/check/expectation.rs @@ -104,8 +104,8 @@ impl<'a, 'tcx> Expectation<'tcx> { /// for the program to type-check). `only_has_type` will return /// such a constraint, if it exists. pub(super) fn only_has_type(self, fcx: &FnCtxt<'a, 'tcx>) -> Option> { - match self.resolve(fcx) { - ExpectHasType(ty) => Some(ty), + match self { + ExpectHasType(ty) => Some(fcx.resolve_vars_if_possible(ty)), NoExpectation | ExpectCastableToType(_) | ExpectRvalueLikeUnsized(_) | IsLast(_) => { None } From 5839bff0bac6063147c8905388713a787577208f Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Sat, 3 Apr 2021 20:20:18 +0300 Subject: [PATCH 30/62] Remove attribute `#[link_args]` --- compiler/rustc_codegen_ssa/src/back/link.rs | 11 +--- compiler/rustc_codegen_ssa/src/base.rs | 1 - compiler/rustc_codegen_ssa/src/lib.rs | 1 - compiler/rustc_feature/src/active.rs | 3 - compiler/rustc_feature/src/builtin_attrs.rs | 5 -- compiler/rustc_feature/src/removed.rs | 4 ++ compiler/rustc_metadata/src/lib.rs | 1 - compiler/rustc_metadata/src/link_args.rs | 57 ------------------- .../src/rmeta/decoder/cstore_impl.rs | 5 -- compiler/rustc_middle/src/query/mod.rs | 5 -- library/std/src/lib.rs | 1 - .../src/language-features/link-args.md | 32 ----------- src/test/incremental/hashes/extern_mods.rs | 16 ------ .../link-args-order/Makefile | 2 +- .../link-args-order/empty.rs | 5 -- .../feature-gates/feature-gate-link_args.rs | 17 ------ .../feature-gate-link_args.stderr | 30 ---------- src/test/ui/issues/issue-15487.rs | 13 ----- src/test/ui/linkage-attr/invalid-link-args.rs | 14 ----- .../no_std_main_recursion.rs | 4 +- .../clippy/tests/ui/empty_loop_no_std.rs | 4 +- 21 files changed, 12 insertions(+), 219 deletions(-) delete mode 100644 compiler/rustc_metadata/src/link_args.rs delete mode 100644 src/doc/unstable-book/src/language-features/link-args.md delete mode 100644 src/test/ui/feature-gates/feature-gate-link_args.rs delete mode 100644 src/test/ui/feature-gates/feature-gate-link_args.stderr delete mode 100644 src/test/ui/issues/issue-15487.rs delete mode 100644 src/test/ui/linkage-attr/invalid-link-args.rs diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 217b8f43229a..ea75943d6f31 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -1411,15 +1411,10 @@ fn add_link_script(cmd: &mut dyn Linker, sess: &Session, tmpdir: &Path, crate_ty } } -/// Add arbitrary "user defined" args defined from command line and by `#[link_args]` attributes. +/// Add arbitrary "user defined" args defined from command line. /// FIXME: Determine where exactly these args need to be inserted. -fn add_user_defined_link_args( - cmd: &mut dyn Linker, - sess: &Session, - codegen_results: &CodegenResults, -) { +fn add_user_defined_link_args(cmd: &mut dyn Linker, sess: &Session) { cmd.args(&sess.opts.cg.link_args); - cmd.args(&*codegen_results.crate_info.link_args); } /// Add arbitrary "late link" args defined by the target spec. @@ -1761,7 +1756,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>( add_rpath_args(cmd, sess, codegen_results, out_filename); // OBJECT-FILES-MAYBE, CUSTOMIZATION-POINT - add_user_defined_link_args(cmd, sess, codegen_results); + add_user_defined_link_args(cmd, sess); // NO-OPT-OUT, OBJECT-FILES-NO, AUDIT-ORDER cmd.finalize(); diff --git a/compiler/rustc_codegen_ssa/src/base.rs b/compiler/rustc_codegen_ssa/src/base.rs index 08e31c3b37f3..318eed76acf2 100644 --- a/compiler/rustc_codegen_ssa/src/base.rs +++ b/compiler/rustc_codegen_ssa/src/base.rs @@ -754,7 +754,6 @@ impl CrateInfo { is_no_builtins: Default::default(), native_libraries: Default::default(), used_libraries: tcx.native_libraries(LOCAL_CRATE).iter().map(Into::into).collect(), - link_args: tcx.link_args(LOCAL_CRATE), crate_name: Default::default(), used_crates_dynamic: cstore::used_crates(tcx, LinkagePreference::RequireDynamic), used_crates_static: cstore::used_crates(tcx, LinkagePreference::RequireStatic), diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs index 56b4ef793831..f0f45b067b35 100644 --- a/compiler/rustc_codegen_ssa/src/lib.rs +++ b/compiler/rustc_codegen_ssa/src/lib.rs @@ -139,7 +139,6 @@ pub struct CrateInfo { pub native_libraries: FxHashMap>, pub crate_name: FxHashMap, pub used_libraries: Vec, - pub link_args: Lrc>, pub used_crate_source: FxHashMap>, pub used_crates_static: Vec<(CrateNum, LibSource)>, pub used_crates_dynamic: Vec<(CrateNum, LibSource)>, diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs index 040260f5cf5a..abbeb9554e3a 100644 --- a/compiler/rustc_feature/src/active.rs +++ b/compiler/rustc_feature/src/active.rs @@ -258,9 +258,6 @@ declare_features! ( // feature-group-start: actual feature gates // ------------------------------------------------------------------------- - /// Allows using the `#[link_args]` attribute. - (active, link_args, "1.0.0", Some(29596), None), - /// Allows defining identifiers beyond ASCII. (active, non_ascii_idents, "1.0.0", Some(55467), None), diff --git a/compiler/rustc_feature/src/builtin_attrs.rs b/compiler/rustc_feature/src/builtin_attrs.rs index 072062dd615d..7df9b3f0a796 100644 --- a/compiler/rustc_feature/src/builtin_attrs.rs +++ b/compiler/rustc_feature/src/builtin_attrs.rs @@ -279,11 +279,6 @@ pub const BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[ // Linking: gated!(naked, AssumedUsed, template!(Word), naked_functions, experimental!(naked)), - gated!( - link_args, Normal, template!(NameValueStr: "args"), - "the `link_args` attribute is experimental and not portable across platforms, \ - it is recommended to use `#[link(name = \"foo\")] instead", - ), gated!( link_ordinal, AssumedUsed, template!(List: "ordinal"), raw_dylib, experimental!(link_ordinal) diff --git a/compiler/rustc_feature/src/removed.rs b/compiler/rustc_feature/src/removed.rs index 8ba67a00f8d8..e14915766166 100644 --- a/compiler/rustc_feature/src/removed.rs +++ b/compiler/rustc_feature/src/removed.rs @@ -128,6 +128,10 @@ declare_features! ( /// Allows comparing raw pointers during const eval. (removed, const_compare_raw_pointers, "1.46.0", Some(53020), None, Some("cannot be allowed in const eval in any meaningful way")), + /// Allows using the `#[link_args]` attribute. + (removed, link_args, "1.53.0", Some(29596), None, + Some("removed in favor of using `-C link-arg=ARG` on command line, \ + which is available from cargo build scripts with `cargo:rustc-link-arg` now")), // ------------------------------------------------------------------------- // feature-group-end: removed features diff --git a/compiler/rustc_metadata/src/lib.rs b/compiler/rustc_metadata/src/lib.rs index fe93f4230e95..c4d9e3f77f07 100644 --- a/compiler/rustc_metadata/src/lib.rs +++ b/compiler/rustc_metadata/src/lib.rs @@ -26,7 +26,6 @@ pub use rmeta::{provide, provide_extern}; mod dependency_format; mod foreign_modules; -mod link_args; mod native_libs; mod rmeta; diff --git a/compiler/rustc_metadata/src/link_args.rs b/compiler/rustc_metadata/src/link_args.rs deleted file mode 100644 index 9e1ac33368c7..000000000000 --- a/compiler/rustc_metadata/src/link_args.rs +++ /dev/null @@ -1,57 +0,0 @@ -use rustc_hir as hir; -use rustc_hir::itemlikevisit::ItemLikeVisitor; -use rustc_middle::ty::TyCtxt; -use rustc_span::symbol::{sym, Symbol}; -use rustc_target::spec::abi::Abi; - -crate fn collect(tcx: TyCtxt<'_>) -> Vec { - let mut collector = Collector { tcx, args: Vec::new() }; - tcx.hir().krate().visit_all_item_likes(&mut collector); - - for attr in tcx.hir().attrs(hir::CRATE_HIR_ID).iter() { - if attr.has_name(sym::link_args) { - if let Some(linkarg) = attr.value_str() { - collector.add_link_args(linkarg); - } - } - } - - collector.args -} - -struct Collector<'tcx> { - tcx: TyCtxt<'tcx>, - args: Vec, -} - -impl<'tcx> ItemLikeVisitor<'tcx> for Collector<'tcx> { - fn visit_item(&mut self, it: &'tcx hir::Item<'tcx>) { - let abi = match it.kind { - hir::ItemKind::ForeignMod { abi, .. } => abi, - _ => return, - }; - if abi == Abi::Rust || abi == Abi::RustIntrinsic || abi == Abi::PlatformIntrinsic { - return; - } - - // First, add all of the custom #[link_args] attributes - let sess = &self.tcx.sess; - for m in - self.tcx.hir().attrs(it.hir_id()).iter().filter(|a| sess.check_name(a, sym::link_args)) - { - if let Some(linkarg) = m.value_str() { - self.add_link_args(linkarg); - } - } - } - - fn visit_trait_item(&mut self, _it: &'tcx hir::TraitItem<'tcx>) {} - fn visit_impl_item(&mut self, _it: &'tcx hir::ImplItem<'tcx>) {} - fn visit_foreign_item(&mut self, _it: &'tcx hir::ForeignItem<'tcx>) {} -} - -impl<'tcx> Collector<'tcx> { - fn add_link_args(&mut self, args: Symbol) { - self.args.extend(args.as_str().split(' ').filter(|s| !s.is_empty()).map(|s| s.to_string())) - } -} diff --git a/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs b/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs index e10041a29714..bebee9dac3b7 100644 --- a/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs +++ b/compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs @@ -1,6 +1,5 @@ use crate::creader::{CStore, LoadedMacro}; use crate::foreign_modules; -use crate::link_args; use crate::native_libs; use crate::rmeta::{self, encoder}; @@ -295,10 +294,6 @@ pub fn provide(providers: &mut Providers) { foreign_modules::collect(tcx).into_iter().map(|m| (m.def_id, m)).collect(); Lrc::new(modules) }, - link_args: |tcx, cnum| { - assert_eq!(cnum, LOCAL_CRATE); - Lrc::new(link_args::collect(tcx)) - }, // Returns a map from a sufficiently visible external item (i.e., an // external item that is visible from at least one local module) to a diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs index bf39b1da8f0a..bac69e282a52 100644 --- a/compiler/rustc_middle/src/query/mod.rs +++ b/compiler/rustc_middle/src/query/mod.rs @@ -1253,11 +1253,6 @@ rustc_queries! { desc { |tcx| "native_library_kind({})", tcx.def_path_str(def_id) } } - query link_args(_: CrateNum) -> Lrc> { - eval_always - desc { "looking up link arguments for a crate" } - } - /// Does lifetime resolution, but does not descend into trait items. This /// should only be used for resolving lifetimes of on trait definitions, /// and is used to avoid cycles. Importantly, `resolve_lifetimes` still visits diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs index d5ba2d36346b..147eb65e48ba 100644 --- a/library/std/src/lib.rs +++ b/library/std/src/lib.rs @@ -281,7 +281,6 @@ #![feature(intra_doc_pointers)] #![feature(iter_zip)] #![feature(lang_items)] -#![feature(link_args)] #![feature(linkage)] #![feature(llvm_asm)] #![feature(log_syntax)] diff --git a/src/doc/unstable-book/src/language-features/link-args.md b/src/doc/unstable-book/src/language-features/link-args.md deleted file mode 100644 index da36e1580012..000000000000 --- a/src/doc/unstable-book/src/language-features/link-args.md +++ /dev/null @@ -1,32 +0,0 @@ -# `link_args` - -The tracking issue for this feature is: [#29596] - -[#29596]: https://github.com/rust-lang/rust/issues/29596 - ------------------------- - -You can tell `rustc` how to customize linking, and that is via the `link_args` -attribute. This attribute is applied to `extern` blocks and specifies raw flags -which need to get passed to the linker when producing an artifact. An example -usage would be: - -```rust,no_run -#![feature(link_args)] - -#[link_args = "-foo -bar -baz"] -extern "C" {} -# fn main() {} -``` - -Note that this feature is currently hidden behind the `feature(link_args)` gate -because this is not a sanctioned way of performing linking. Right now `rustc` -shells out to the system linker (`gcc` on most systems, `link.exe` on MSVC), so -it makes sense to provide extra command line arguments, but this will not -always be the case. In the future `rustc` may use LLVM directly to link native -libraries, in which case `link_args` will have no meaning. You can achieve the -same effect as the `link_args` attribute with the `-C link-args` argument to -`rustc`. - -It is highly recommended to *not* use this attribute, and rather use the more -formal `#[link(...)]` attribute on `extern` blocks instead. diff --git a/src/test/incremental/hashes/extern_mods.rs b/src/test/incremental/hashes/extern_mods.rs index 7a923134331a..93e70d3792ce 100644 --- a/src/test/incremental/hashes/extern_mods.rs +++ b/src/test/incremental/hashes/extern_mods.rs @@ -12,7 +12,6 @@ #![allow(warnings)] #![feature(rustc_attrs)] #![feature(unboxed_closures)] -#![feature(link_args)] #![crate_type = "rlib"] // Change function name -------------------------------------------------------- @@ -146,21 +145,6 @@ extern "C" { pub fn add_function2(); } -// Change link-args ------------------------------------------------------------ -#[cfg(cfail1)] -#[link_args = "-foo -bar"] -extern "C" { - pub fn change_link_args(c: i32); -} - -#[cfg(not(cfail1))] -#[rustc_dirty(cfg = "cfail2", except = "hir_owner,hir_owner_nodes")] -#[rustc_clean(cfg = "cfail3")] -#[link_args = "-foo -bar -baz"] -extern "C" { - pub fn change_link_args(c: i32); -} - // Change link-name ------------------------------------------------------------ #[cfg(cfail1)] #[link(name = "foo")] diff --git a/src/test/run-make-fulldeps/link-args-order/Makefile b/src/test/run-make-fulldeps/link-args-order/Makefile index 98c1e0eac3b0..f94e882ccb68 100644 --- a/src/test/run-make-fulldeps/link-args-order/Makefile +++ b/src/test/run-make-fulldeps/link-args-order/Makefile @@ -6,5 +6,5 @@ RUSTC_FLAGS = -C linker-flavor=ld -C link-arg=a -C link-args="b c" -C link-args= RUSTC_FLAGS_PRE = -C linker-flavor=ld -Z pre-link-arg=a -Z pre-link-args="b c" -Z pre-link-args="d e" -Z pre-link-arg=f all: - $(RUSTC) $(RUSTC_FLAGS) empty.rs 2>&1 | $(CGREP) '"a" "b" "c" "d" "e" "f" "g"' + $(RUSTC) $(RUSTC_FLAGS) empty.rs 2>&1 | $(CGREP) '"a" "b" "c" "d" "e" "f"' $(RUSTC) $(RUSTC_FLAGS_PRE) empty.rs 2>&1 | $(CGREP) '"a" "b" "c" "d" "e" "f"' diff --git a/src/test/run-make-fulldeps/link-args-order/empty.rs b/src/test/run-make-fulldeps/link-args-order/empty.rs index 2439171004b5..f328e4d9d04c 100644 --- a/src/test/run-make-fulldeps/link-args-order/empty.rs +++ b/src/test/run-make-fulldeps/link-args-order/empty.rs @@ -1,6 +1 @@ -#![feature(link_args)] - -#[link_args = "g"] -extern "C" {} - fn main() {} diff --git a/src/test/ui/feature-gates/feature-gate-link_args.rs b/src/test/ui/feature-gates/feature-gate-link_args.rs deleted file mode 100644 index e1c651f46fb4..000000000000 --- a/src/test/ui/feature-gates/feature-gate-link_args.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Test that `#[link_args]` attribute is gated by `link_args` -// feature gate, both when it occurs where expected (atop -// `extern { }` blocks) and where unexpected. - -// sidestep warning (which is correct, but misleading for -// purposes of this test) -#![allow(unused_attributes)] -#![link_args = "-l unexpected_use_as_inner_attr_on_mod"] -//~^ ERROR the `link_args` attribute is experimental - -#[link_args = "-l expected_use_case"] -//~^ ERROR the `link_args` attribute is experimental -extern "C" {} - -#[link_args = "-l unexected_use_on_non_extern_item"] -//~^ ERROR: the `link_args` attribute is experimental -fn main() {} diff --git a/src/test/ui/feature-gates/feature-gate-link_args.stderr b/src/test/ui/feature-gates/feature-gate-link_args.stderr deleted file mode 100644 index ae4918f5c9f5..000000000000 --- a/src/test/ui/feature-gates/feature-gate-link_args.stderr +++ /dev/null @@ -1,30 +0,0 @@ -error[E0658]: the `link_args` attribute is experimental and not portable across platforms, it is recommended to use `#[link(name = "foo")] instead - --> $DIR/feature-gate-link_args.rs:11:1 - | -LL | #[link_args = "-l expected_use_case"] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #29596 for more information - = help: add `#![feature(link_args)]` to the crate attributes to enable - -error[E0658]: the `link_args` attribute is experimental and not portable across platforms, it is recommended to use `#[link(name = "foo")] instead - --> $DIR/feature-gate-link_args.rs:15:1 - | -LL | #[link_args = "-l unexected_use_on_non_extern_item"] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #29596 for more information - = help: add `#![feature(link_args)]` to the crate attributes to enable - -error[E0658]: the `link_args` attribute is experimental and not portable across platforms, it is recommended to use `#[link(name = "foo")] instead - --> $DIR/feature-gate-link_args.rs:8:1 - | -LL | #![link_args = "-l unexpected_use_as_inner_attr_on_mod"] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #29596 for more information - = help: add `#![feature(link_args)]` to the crate attributes to enable - -error: aborting due to 3 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/issues/issue-15487.rs b/src/test/ui/issues/issue-15487.rs deleted file mode 100644 index 34ac53be5bec..000000000000 --- a/src/test/ui/issues/issue-15487.rs +++ /dev/null @@ -1,13 +0,0 @@ -// run-pass -#![allow(unused_attributes)] -// ignore-windows -// ignore-wasm32-bare no libs to link -// ignore-sgx no libs to link -#![feature(link_args)] - -#[link_args = "-lc -lm"] -#[link_args = " -lc"] -#[link_args = "-lc "] -extern "C" {} - -fn main() {} diff --git a/src/test/ui/linkage-attr/invalid-link-args.rs b/src/test/ui/linkage-attr/invalid-link-args.rs deleted file mode 100644 index 7418691d0140..000000000000 --- a/src/test/ui/linkage-attr/invalid-link-args.rs +++ /dev/null @@ -1,14 +0,0 @@ -// build-fail -// dont-check-compiler-stderr -// ignore-msvc due to linker-flavor=ld -// error-pattern:aFdEfSeVEEE -// compile-flags: -C linker-flavor=ld - -/* Make sure invalid link_args are printed to stderr. */ - -#![feature(link_args)] - -#[link_args = "aFdEfSeVEEE"] -extern "C" {} - -fn main() {} diff --git a/src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs b/src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs index 25b1417be976..be4348e2bb71 100644 --- a/src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs +++ b/src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs @@ -1,8 +1,8 @@ +// compile-flags: -Clink-arg=-nostartfiles // ignore-macos // ignore-windows -#![feature(lang_items, link_args, start, libc)] -#![link_args = "-nostartfiles"] +#![feature(lang_items, start, libc)] #![no_std] use core::panic::PanicInfo; diff --git a/src/tools/clippy/tests/ui/empty_loop_no_std.rs b/src/tools/clippy/tests/ui/empty_loop_no_std.rs index 4553d3ec505a..235e0fc51799 100644 --- a/src/tools/clippy/tests/ui/empty_loop_no_std.rs +++ b/src/tools/clippy/tests/ui/empty_loop_no_std.rs @@ -1,9 +1,9 @@ +// compile-flags: -Clink-arg=-nostartfiles // ignore-macos // ignore-windows #![warn(clippy::empty_loop)] -#![feature(lang_items, link_args, start, libc)] -#![link_args = "-nostartfiles"] +#![feature(lang_items, start, libc)] #![no_std] use core::panic::PanicInfo; From 3ea62cb5d19846b44172d861ae231c8c09322800 Mon Sep 17 00:00:00 2001 From: Simon Jakobi Date: Sat, 3 Apr 2021 13:05:11 +0200 Subject: [PATCH 31/62] Remove redundant `ignore-tidy-linelength` annotations This is step 2 towards fixing #77548. In the codegen and codegen-units test suites, the `//` comment markers were kept in order not to affect any source locations. This is because these tests cannot be automatically `--bless`ed. --- .../drop_in_place_intrinsic.rs | 2 +- .../item-collection/function-as-argument.rs | 2 +- .../item-collection/generic-drop-glue.rs | 2 +- .../instantiation-through-vtable.rs | 2 +- .../item-collection/non-generic-closures.rs | 2 +- .../item-collection/non-generic-drop-glue.rs | 2 +- .../trait-method-as-argument.rs | 2 +- .../item-collection/transitive-drop-glue.rs | 2 +- .../item-collection/tuple-drop-glue.rs | 2 +- .../partitioning/extern-drop-glue.rs | 2 +- .../partitioning/extern-generic.rs | 2 +- .../inlining-from-extern-crate.rs | 2 +- .../partitioning/local-drop-glue.rs | 2 +- .../local-inlining-but-not-all.rs | 2 +- .../partitioning/local-inlining.rs | 2 +- .../partitioning/local-transitive-inlining.rs | 2 +- .../methods-are-with-self-type.rs | 2 +- .../partitioning/shared-generics.rs | 2 +- .../partitioning/vtable-through-const.rs | 2 +- src/test/codegen/align-enum.rs | 2 +- src/test/codegen/align-struct.rs | 2 +- src/test/codegen/async-fn-debug-msvc.rs | 2 +- src/test/codegen/async-fn-debug.rs | 2 +- src/test/codegen/c-variadic.rs | 2 +- src/test/codegen/consts.rs | 2 +- src/test/codegen/debug-compile-unit-path.rs | 2 +- src/test/codegen/enum-debug-clike.rs | 2 +- src/test/codegen/enum-debug-niche-2.rs | 2 +- src/test/codegen/function-arguments.rs | 2 +- src/test/codegen/gdb_debug_script_load.rs | 2 +- src/test/codegen/generator-debug-msvc.rs | 2 +- src/test/codegen/generator-debug.rs | 2 +- src/test/codegen/inline-debuginfo.rs | 2 +- src/test/codegen/instrument-mcount.rs | 2 +- .../codegen/issue-44056-macos-tls-align.rs | 2 +- src/test/codegen/packed.rs | 2 +- .../auxiliary/remap_path_prefix_aux.rs | 2 +- .../auxiliary/xcrate-generic.rs | 2 +- src/test/codegen/remap_path_prefix/main.rs | 2 +- src/test/codegen/repeat-trusted-len.rs | 2 +- .../codegen/repr-transparent-aggregates-1.rs | 2 +- .../codegen/repr-transparent-aggregates-2.rs | 2 +- .../codegen/repr-transparent-aggregates-3.rs | 2 +- .../riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs | 2 +- .../codegen/riscv-abi/riscv64-lp64d-abi.rs | 2 +- .../riscv-abi/riscv64-lp64f-lp64d-abi.rs | 2 +- ...intrinsic-generic-arithmetic-saturating.rs | 2 +- .../simd-intrinsic-generic-bitmask.rs | 2 +- .../simd-intrinsic-generic-gather.rs | 2 +- .../simd-intrinsic-generic-scatter.rs | 2 +- .../simd-intrinsic-transmute-array.rs | 2 +- src/test/codegen/stores.rs | 2 +- src/test/codegen/target-cpu-on-functions.rs | 2 +- src/test/codegen/tune-cpu-on-functions.rs | 2 +- src/test/debuginfo/borrowed-enum.rs | 2 - src/test/debuginfo/boxed-struct.rs | 2 - .../by-value-non-immediate-argument.rs | 1 - .../debuginfo/c-style-enum-in-composite.rs | 1 - src/test/debuginfo/c-style-enum.rs | 2 - .../destructured-for-loop-variable.rs | 2 - src/test/debuginfo/evec-in-struct.rs | 2 - .../debuginfo/function-arg-initialization.rs | 1 - .../debuginfo/gdb-pretty-struct-and-enums.rs | 1 - src/test/debuginfo/generator-objects.rs | 2 - .../generic-method-on-generic-struct.rs | 2 - .../debuginfo/generic-struct-style-enum.rs | 1 - src/test/debuginfo/generic-struct.rs | 2 - .../debuginfo/generic-tuple-style-enum.rs | 2 - src/test/debuginfo/issue-57822.rs | 1 - src/test/debuginfo/method-on-enum.rs | 1 - src/test/debuginfo/option-like-enum.rs | 1 - .../packed-struct-with-destructor.rs | 1 - src/test/debuginfo/packed-struct.rs | 1 - src/test/debuginfo/pretty-std-collections.rs | 1 - src/test/debuginfo/simd.rs | 1 - src/test/debuginfo/simple-struct.rs | 2 - src/test/debuginfo/struct-in-enum.rs | 1 - src/test/debuginfo/struct-in-struct.rs | 1 - src/test/debuginfo/struct-style-enum.rs | 2 - src/test/debuginfo/struct-with-destructor.rs | 2 - src/test/debuginfo/tuple-in-struct.rs | 2 - src/test/debuginfo/tuple-struct.rs | 2 - src/test/debuginfo/tuple-style-enum.rs | 2 - src/test/debuginfo/type-names.rs | 1 - src/test/debuginfo/vec-slices.rs | 2 - .../mir-opt/early_otherwise_branch_68867.rs | 1 - ...h.before-SimplifyBranches-final.after.diff | 500 +++++++++--------- ...ch_68867.try_sum.EarlyOtherwiseBranch.diff | 322 +++++------ .../rustdoc-ui/commandline-argfile-missing.rs | 1 - src/test/rustdoc-ui/doc-spotlight.fixed | 1 - src/test/rustdoc-ui/doc-spotlight.rs | 1 - src/test/rustdoc-ui/doc-spotlight.stderr | 2 +- src/test/rustdoc/assoc-item-cast.rs | 1 - src/test/rustdoc/assoc-types.rs | 2 - src/test/rustdoc/async-fn.rs | 1 - src/test/rustdoc/const-display.rs | 2 - src/test/rustdoc/const-generics/add-impl.rs | 2 - src/test/rustdoc/const-generics/const-impl.rs | 2 - src/test/rustdoc/const-generics/type-alias.rs | 1 - src/test/rustdoc/deref-recursive-pathbuf.rs | 2 - src/test/rustdoc/deref-recursive.rs | 2 - src/test/rustdoc/deref-typedef.rs | 2 - src/test/rustdoc/double-quote-escape.rs | 1 - src/test/rustdoc/duplicate-cfg.rs | 2 - src/test/rustdoc/fn-type.rs | 2 - src/test/rustdoc/for-lifetime.rs | 2 - src/test/rustdoc/inline_cross/impl_trait.rs | 1 - .../rustdoc/intra-doc/associated-defaults.rs | 1 - .../rustdoc/intra-doc/associated-items.rs | 1 - .../rustdoc/intra-doc/cross-crate/macro.rs | 1 - .../rustdoc/intra-doc/cross-crate/traits.rs | 1 - .../intra-doc/disambiguators-removed.rs | 1 - .../rustdoc/intra-doc/non-path-primitives.rs | 1 - src/test/rustdoc/intra-doc/prim-assoc.rs | 1 - .../intra-doc/prim-methods-external-core.rs | 1 - .../rustdoc/intra-doc/prim-methods-local.rs | 1 - src/test/rustdoc/intra-doc/prim-methods.rs | 1 - src/test/rustdoc/intra-doc/prim-precedence.rs | 1 - .../intra-doc/primitive-non-default-impl.rs | 1 - src/test/rustdoc/intra-doc/self.rs | 1 - src/test/rustdoc/intra-doc/trait-impl.rs | 1 - src/test/rustdoc/intra-doc/trait-item.rs | 1 - src/test/rustdoc/intra-doc/true-false.rs | 1 - src/test/rustdoc/issue-29503.rs | 2 - src/test/rustdoc/issue-55364.rs | 2 - src/test/rustdoc/issue-75588.rs | 1 - src/test/rustdoc/playground-arg.rs | 1 - src/test/rustdoc/playground.rs | 2 - src/test/rustdoc/primitive-link.rs | 1 - .../rustdoc/raw-ident-eliminate-r-hashtag.rs | 2 - src/test/rustdoc/smart-punct.rs | 2 - src/test/rustdoc/src-links-external.rs | 1 - src/test/rustdoc/struct-field.rs | 1 - src/test/rustdoc/trait-attributes.rs | 1 - .../ambiguous-associated-type2.rs | 2 - .../ambiguous-associated-type2.stderr | 4 +- .../duplicate.full_tait.stderr | 142 ++--- .../duplicate.min_tait.stderr | 140 ++--- .../ui/associated-type-bounds/duplicate.rs | 2 - .../issue-61949-self-return-type.rs | 1 - .../issue-61949-self-return-type.stderr | 2 +- .../ui/borrowck/borrowck-describe-lvalue.rs | 2 - .../borrowck/borrowck-describe-lvalue.stderr | 64 +-- src/test/ui/borrowck/borrowck-union-borrow.rs | 2 - .../ui/borrowck/borrowck-union-borrow.stderr | 24 +- ...ccess-during-reservation.nll_target.stderr | 4 +- ...o-phase-allow-access-during-reservation.rs | 2 - ...ion-sharing-interference.nll_target.stderr | 2 +- ...-phase-reservation-sharing-interference.rs | 2 - src/test/ui/commandline-argfile-missing.rs | 1 - src/test/ui/consts/issue-32829-2.rs | 2 - src/test/ui/consts/issue-32829-2.stderr | 6 +- src/test/ui/consts/offset_ub.rs | 1 - src/test/ui/consts/offset_ub.stderr | 44 +- src/test/ui/deprecation/deprecation-lint.rs | 1 - .../ui/deprecation/deprecation-lint.stderr | 246 ++++----- .../rustc_deprecation-in-future.rs | 2 - .../rustc_deprecation-in-future.stderr | 6 +- src/test/ui/error-codes/E0063.rs | 2 - src/test/ui/error-codes/E0063.stderr | 8 +- src/test/ui/export-fully-qualified.rs | 2 - src/test/ui/export-fully-qualified.stderr | 2 +- src/test/ui/feature-gates/feature-gate-abi.rs | 1 - .../ui/feature-gates/feature-gate-abi.stderr | 152 +++--- .../feature-gate-rustc-attrs-1.rs | 2 - .../feature-gate-rustc-attrs-1.stderr | 6 +- ...sue-43106-gating-of-builtin-attrs-error.rs | 1 - ...43106-gating-of-builtin-attrs-error.stderr | 72 +-- .../issue-43106-gating-of-builtin-attrs.rs | 1 - ...issue-43106-gating-of-builtin-attrs.stderr | 416 +++++++-------- .../ui/impl-trait/bound-normalization-fail.rs | 1 - .../bound-normalization-fail.stderr | 8 +- .../impl-trait/issue-55872-1.full_tait.stderr | 10 +- .../impl-trait/issue-55872-1.min_tait.stderr | 8 +- src/test/ui/impl-trait/issue-55872-1.rs | 1 - .../impl-trait/issue-55872-2.full_tait.stderr | 6 +- .../impl-trait/issue-55872-2.min_tait.stderr | 4 +- src/test/ui/impl-trait/issue-55872-2.rs | 1 - .../impl-trait/issue-55872.full_tait.stderr | 4 +- .../ui/impl-trait/issue-55872.min_tait.stderr | 2 +- src/test/ui/impl-trait/issue-55872.rs | 1 - .../extern-prelude-extern-crate-fail.rs | 2 - .../extern-prelude-extern-crate-fail.stderr | 4 +- src/test/ui/issues/issue-3214.rs | 2 - src/test/ui/issues/issue-3214.stderr | 8 +- src/test/ui/issues/issue-45157.rs | 1 - src/test/ui/issues/issue-45157.stderr | 2 +- src/test/ui/issues/issue-47725.rs | 1 - src/test/ui/issues/issue-47725.stderr | 14 +- src/test/ui/issues/issue-53251.rs | 2 - src/test/ui/issues/issue-53251.stderr | 8 +- src/test/ui/issues/issue-54044.rs | 1 - src/test/ui/issues/issue-54044.stderr | 6 +- src/test/ui/issues/issue-60622.rs | 2 - src/test/ui/issues/issue-60622.stderr | 8 +- .../ui/issues/issue-82833-slice-miscompile.rs | 1 - src/test/ui/kinds-of-primitive-impl.rs | 3 - src/test/ui/kinds-of-primitive-impl.stderr | 6 +- src/test/ui/lint/lint-stability-deprecated.rs | 1 - .../ui/lint/lint-stability-deprecated.stderr | 218 ++++---- src/test/ui/lint/uninitialized-zeroed.rs | 1 - src/test/ui/lint/uninitialized-zeroed.stderr | 98 ++-- .../loops/loops-reject-duplicate-labels-2.rs | 1 - .../loops-reject-duplicate-labels-2.stderr | 16 +- .../ui/loops/loops-reject-duplicate-labels.rs | 1 - .../loops-reject-duplicate-labels.stderr | 16 +- .../macro-or-patterns-back-compat.fixed | 1 - .../macros/macro-or-patterns-back-compat.rs | 1 - .../macro-or-patterns-back-compat.stderr | 10 +- .../methods/method-call-lifetime-args-fail.rs | 2 - .../method-call-lifetime-args-fail.stderr | 108 ++-- src/test/ui/nll/issue-51268.rs | 2 - src/test/ui/nll/issue-51268.stderr | 2 +- src/test/ui/nll/issue-57100.rs | 1 - src/test/ui/nll/issue-57100.stderr | 4 +- .../ui/non-ice-error-on-worker-io-fail.rs | 1 - .../ui/panic-runtime/two-panic-runtimes.rs | 1 - .../unwind-tables-panic-required.rs | 1 - .../unwind-tables-target-required.rs | 1 - src/test/ui/parser/duplicate-visibility.rs | 2 - .../ui/parser/duplicate-visibility.stderr | 2 +- .../issue-66357-unexpected-unreachable.rs | 2 - .../issue-66357-unexpected-unreachable.stderr | 4 +- src/test/ui/parser/unicode-quote-chars.rs | 2 - src/test/ui/parser/unicode-quote-chars.stderr | 6 +- .../usefulness/refutable-pattern-errors.rs | 2 - .../refutable-pattern-errors.stderr | 4 +- .../privacy/associated-item-privacy-trait.rs | 2 - .../associated-item-privacy-trait.stderr | 60 +-- src/test/ui/proc-macro/meta-macro-hygiene.rs | 1 - .../ui/proc-macro/meta-macro-hygiene.stdout | 3 +- src/test/ui/regions/regions-enum-not-wf.rs | 2 - .../ui/regions/regions-enum-not-wf.stderr | 6 +- .../regions-enum-not-wf.rs | 2 - .../regions-enum-not-wf.stderr | 6 +- ...intrinsic-generic-arithmetic-saturating.rs | 1 - ...insic-generic-arithmetic-saturating.stderr | 4 +- .../simd-type-generic-monomorphisation.rs | 1 - src/test/ui/simd/simd-type.rs | 1 - src/test/ui/simd/simd-type.stderr | 12 +- src/test/ui/single-primitive-inherent-impl.rs | 2 - .../ui/single-primitive-inherent-impl.stderr | 2 +- .../generics-default-stability-where.rs | 1 - .../generics-default-stability-where.stderr | 2 +- .../generics-default-stability.rs | 1 - .../generics-default-stability.stderr | 142 ++--- .../structure-constructor-type-mismatch.rs | 2 - ...structure-constructor-type-mismatch.stderr | 30 +- src/test/ui/symbol-names/impl1.legacy.stderr | 24 +- src/test/ui/symbol-names/impl1.rs | 1 - src/test/ui/symbol-names/impl1.stderr | 26 - src/test/ui/symbol-names/impl1.v0.stderr | 24 +- .../ui/symbol-names/issue-60925.legacy.stderr | 6 +- src/test/ui/symbol-names/issue-60925.rs | 1 - src/test/ui/symbol-names/issue-60925.stderr | 20 - .../ui/symbol-names/issue-60925.v0.stderr | 6 +- .../ui/symbol-names/issue-75326.legacy.stderr | 6 +- src/test/ui/symbol-names/issue-75326.rs | 1 - .../ui/symbol-names/issue-75326.v0.stderr | 6 +- ...rrect-variant-form-through-alias-caught.rs | 2 - ...t-variant-form-through-alias-caught.stderr | 10 +- .../issue-53598.full_tait.stderr | 4 +- .../issue-53598.min_tait.stderr | 2 +- .../ui/type-alias-impl-trait/issue-53598.rs | 1 - .../issue-57700.full_tait.stderr | 4 +- .../issue-57700.min_tait.stderr | 2 +- .../ui/type-alias-impl-trait/issue-57700.rs | 1 - src/test/ui/union/union-deref.rs | 1 - src/test/ui/union/union-deref.stderr | 12 +- .../return-unsized-from-trait-method.rs | 2 - .../return-unsized-from-trait-method.stderr | 2 +- 271 files changed, 1616 insertions(+), 1868 deletions(-) delete mode 100644 src/test/ui/symbol-names/impl1.stderr delete mode 100644 src/test/ui/symbol-names/issue-60925.stderr diff --git a/src/test/codegen-units/item-collection/drop_in_place_intrinsic.rs b/src/test/codegen-units/item-collection/drop_in_place_intrinsic.rs index f58117f44d83..a3f1fb5e7a25 100644 --- a/src/test/codegen-units/item-collection/drop_in_place_intrinsic.rs +++ b/src/test/codegen-units/item-collection/drop_in_place_intrinsic.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager // compile-flags:-Zinline-in-all-cgus diff --git a/src/test/codegen-units/item-collection/function-as-argument.rs b/src/test/codegen-units/item-collection/function-as-argument.rs index 2329dec385fd..ea500c3111a2 100644 --- a/src/test/codegen-units/item-collection/function-as-argument.rs +++ b/src/test/codegen-units/item-collection/function-as-argument.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager #![deny(dead_code)] diff --git a/src/test/codegen-units/item-collection/generic-drop-glue.rs b/src/test/codegen-units/item-collection/generic-drop-glue.rs index 948098b0cbc7..25cf5dad6140 100644 --- a/src/test/codegen-units/item-collection/generic-drop-glue.rs +++ b/src/test/codegen-units/item-collection/generic-drop-glue.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager // compile-flags:-Zinline-in-all-cgus diff --git a/src/test/codegen-units/item-collection/instantiation-through-vtable.rs b/src/test/codegen-units/item-collection/instantiation-through-vtable.rs index 919c43738fb7..e78226d4083a 100644 --- a/src/test/codegen-units/item-collection/instantiation-through-vtable.rs +++ b/src/test/codegen-units/item-collection/instantiation-through-vtable.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager -Zinline-in-all-cgus -Zmir-opt-level=0 #![deny(dead_code)] diff --git a/src/test/codegen-units/item-collection/non-generic-closures.rs b/src/test/codegen-units/item-collection/non-generic-closures.rs index affdda390437..379fbcf2613e 100644 --- a/src/test/codegen-units/item-collection/non-generic-closures.rs +++ b/src/test/codegen-units/item-collection/non-generic-closures.rs @@ -3,7 +3,7 @@ // ignoring this test until MIR codegen has taken over completely // ignore-test -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager #![deny(dead_code)] diff --git a/src/test/codegen-units/item-collection/non-generic-drop-glue.rs b/src/test/codegen-units/item-collection/non-generic-drop-glue.rs index 720421d3e0f7..06f76f7db366 100644 --- a/src/test/codegen-units/item-collection/non-generic-drop-glue.rs +++ b/src/test/codegen-units/item-collection/non-generic-drop-glue.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager // compile-flags:-Zinline-in-all-cgus diff --git a/src/test/codegen-units/item-collection/trait-method-as-argument.rs b/src/test/codegen-units/item-collection/trait-method-as-argument.rs index 6817b33c6114..235569728a2e 100644 --- a/src/test/codegen-units/item-collection/trait-method-as-argument.rs +++ b/src/test/codegen-units/item-collection/trait-method-as-argument.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager #![deny(dead_code)] diff --git a/src/test/codegen-units/item-collection/transitive-drop-glue.rs b/src/test/codegen-units/item-collection/transitive-drop-glue.rs index 2ec572b4373e..8249e7cba946 100644 --- a/src/test/codegen-units/item-collection/transitive-drop-glue.rs +++ b/src/test/codegen-units/item-collection/transitive-drop-glue.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager // compile-flags:-Zinline-in-all-cgus diff --git a/src/test/codegen-units/item-collection/tuple-drop-glue.rs b/src/test/codegen-units/item-collection/tuple-drop-glue.rs index 232570779c84..ae3b2e081ffa 100644 --- a/src/test/codegen-units/item-collection/tuple-drop-glue.rs +++ b/src/test/codegen-units/item-collection/tuple-drop-glue.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags:-Zprint-mono-items=eager // compile-flags:-Zinline-in-all-cgus diff --git a/src/test/codegen-units/partitioning/extern-drop-glue.rs b/src/test/codegen-units/partitioning/extern-drop-glue.rs index 6232b9edf82c..8b0448ec4708 100644 --- a/src/test/codegen-units/partitioning/extern-drop-glue.rs +++ b/src/test/codegen-units/partitioning/extern-drop-glue.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation diff --git a/src/test/codegen-units/partitioning/extern-generic.rs b/src/test/codegen-units/partitioning/extern-generic.rs index 02930f96bd10..c96df6e102ac 100644 --- a/src/test/codegen-units/partitioning/extern-generic.rs +++ b/src/test/codegen-units/partitioning/extern-generic.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation // compile-flags:-Zprint-mono-items=eager -Cincremental=tmp/partitioning-tests/extern-generic -Zshare-generics=y diff --git a/src/test/codegen-units/partitioning/inlining-from-extern-crate.rs b/src/test/codegen-units/partitioning/inlining-from-extern-crate.rs index 410b77b0050b..b86e325537b8 100644 --- a/src/test/codegen-units/partitioning/inlining-from-extern-crate.rs +++ b/src/test/codegen-units/partitioning/inlining-from-extern-crate.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation // compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/inlining-from-extern-crate diff --git a/src/test/codegen-units/partitioning/local-drop-glue.rs b/src/test/codegen-units/partitioning/local-drop-glue.rs index 3017e4f9494c..78d69fdb7d81 100644 --- a/src/test/codegen-units/partitioning/local-drop-glue.rs +++ b/src/test/codegen-units/partitioning/local-drop-glue.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation // We specify opt-level=0 because `drop_in_place` is `Internal` when optimizing diff --git a/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs b/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs index a24943348f3a..d53f7b622913 100644 --- a/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs +++ b/src/test/codegen-units/partitioning/local-inlining-but-not-all.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation // compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/local-inlining-but-not-all diff --git a/src/test/codegen-units/partitioning/local-inlining.rs b/src/test/codegen-units/partitioning/local-inlining.rs index 0cc652eeb529..1ea804b2f9d8 100644 --- a/src/test/codegen-units/partitioning/local-inlining.rs +++ b/src/test/codegen-units/partitioning/local-inlining.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation // compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/local-inlining diff --git a/src/test/codegen-units/partitioning/local-transitive-inlining.rs b/src/test/codegen-units/partitioning/local-transitive-inlining.rs index 0c8a67aeb3da..56d108074e40 100644 --- a/src/test/codegen-units/partitioning/local-transitive-inlining.rs +++ b/src/test/codegen-units/partitioning/local-transitive-inlining.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation // compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/local-transitive-inlining diff --git a/src/test/codegen-units/partitioning/methods-are-with-self-type.rs b/src/test/codegen-units/partitioning/methods-are-with-self-type.rs index 6c55904c1bf1..e67090303a36 100644 --- a/src/test/codegen-units/partitioning/methods-are-with-self-type.rs +++ b/src/test/codegen-units/partitioning/methods-are-with-self-type.rs @@ -3,7 +3,7 @@ // much sense at the moment. // ignore-test -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation // compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/methods-are-with-self-type diff --git a/src/test/codegen-units/partitioning/shared-generics.rs b/src/test/codegen-units/partitioning/shared-generics.rs index eb3196439ba8..17c1fbb2f739 100644 --- a/src/test/codegen-units/partitioning/shared-generics.rs +++ b/src/test/codegen-units/partitioning/shared-generics.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // no-prefer-dynamic // NOTE: We always compile this test with -Copt-level=0 because higher opt-levels // prevent drop-glue from participating in share-generics. diff --git a/src/test/codegen-units/partitioning/vtable-through-const.rs b/src/test/codegen-units/partitioning/vtable-through-const.rs index 8028c4f5f0ba..f6ae46b0551c 100644 --- a/src/test/codegen-units/partitioning/vtable-through-const.rs +++ b/src/test/codegen-units/partitioning/vtable-through-const.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // We specify -C incremental here because we want to test the partitioning for // incremental compilation diff --git a/src/test/codegen/align-enum.rs b/src/test/codegen/align-enum.rs index 95ca7cfe7508..0f2cf5a76167 100644 --- a/src/test/codegen/align-enum.rs +++ b/src/test/codegen/align-enum.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -Z mir-opt-level=0 -// ignore-tidy-linelength +// #![crate_type = "lib"] diff --git a/src/test/codegen/align-struct.rs b/src/test/codegen/align-struct.rs index cda7235a3d81..82eec67af0fa 100644 --- a/src/test/codegen/align-struct.rs +++ b/src/test/codegen/align-struct.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -Z mir-opt-level=0 -// ignore-tidy-linelength +// #![crate_type = "lib"] diff --git a/src/test/codegen/async-fn-debug-msvc.rs b/src/test/codegen/async-fn-debug-msvc.rs index 4e145b81ecbf..2b8c0dfc229a 100644 --- a/src/test/codegen/async-fn-debug-msvc.rs +++ b/src/test/codegen/async-fn-debug-msvc.rs @@ -3,7 +3,7 @@ // - The generator types and variants are marked artificial // - Captured vars from the source are not marked artificial // -// ignore-tidy-linelength +// // compile-flags: -C debuginfo=2 --edition=2018 // only-msvc diff --git a/src/test/codegen/async-fn-debug.rs b/src/test/codegen/async-fn-debug.rs index 8fa4be1ae86d..e9b774b48c3e 100644 --- a/src/test/codegen/async-fn-debug.rs +++ b/src/test/codegen/async-fn-debug.rs @@ -3,7 +3,7 @@ // - The generator types and variants are marked artificial // - Captured vars from the source are not marked artificial // -// ignore-tidy-linelength +// // compile-flags: -C debuginfo=2 --edition=2018 // ignore-msvc diff --git a/src/test/codegen/c-variadic.rs b/src/test/codegen/c-variadic.rs index 29c82686731c..e038ed704513 100644 --- a/src/test/codegen/c-variadic.rs +++ b/src/test/codegen/c-variadic.rs @@ -1,6 +1,6 @@ // ignore-wasm32-bare compiled with panic=abort by default // compile-flags: -C no-prepopulate-passes -// ignore-tidy-linelength +// #![crate_type = "lib"] #![feature(c_variadic)] diff --git a/src/test/codegen/consts.rs b/src/test/codegen/consts.rs index fcb9002986a1..3aab4bea3d04 100644 --- a/src/test/codegen/consts.rs +++ b/src/test/codegen/consts.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -// ignore-tidy-linelength +// #![crate_type = "lib"] diff --git a/src/test/codegen/debug-compile-unit-path.rs b/src/test/codegen/debug-compile-unit-path.rs index fcb66e085761..3661be046d0f 100644 --- a/src/test/codegen/debug-compile-unit-path.rs +++ b/src/test/codegen/debug-compile-unit-path.rs @@ -1,5 +1,5 @@ // compile-flags: -g --remap-path-prefix={{cwd}}=/cwd/ --remap-path-prefix={{src-base}}=/base/ -// ignore-tidy-linelength +// // // Ensure that we remap the compile unit directory and that we set it to the compilers current // working directory and not something else. diff --git a/src/test/codegen/enum-debug-clike.rs b/src/test/codegen/enum-debug-clike.rs index 134443931e98..1e369a2c4e6a 100644 --- a/src/test/codegen/enum-debug-clike.rs +++ b/src/test/codegen/enum-debug-clike.rs @@ -1,7 +1,7 @@ // This tests that debug info for "c-like" enums is properly emitted. // This is ignored for the fallback mode on MSVC due to problems with PDB. -// ignore-tidy-linelength +// // ignore-msvc // compile-flags: -g -C no-prepopulate-passes diff --git a/src/test/codegen/enum-debug-niche-2.rs b/src/test/codegen/enum-debug-niche-2.rs index 0f78234d9774..9c72ad9d248a 100644 --- a/src/test/codegen/enum-debug-niche-2.rs +++ b/src/test/codegen/enum-debug-niche-2.rs @@ -1,7 +1,7 @@ // This tests that optimized enum debug info accurately reflects the enum layout. // This is ignored for the fallback mode on MSVC due to problems with PDB. -// ignore-tidy-linelength +// // ignore-msvc // compile-flags: -g -C no-prepopulate-passes diff --git a/src/test/codegen/function-arguments.rs b/src/test/codegen/function-arguments.rs index 0c34bf1b914b..f936f9096034 100644 --- a/src/test/codegen/function-arguments.rs +++ b/src/test/codegen/function-arguments.rs @@ -1,5 +1,5 @@ // compile-flags: -O -C no-prepopulate-passes -// ignore-tidy-linelength +// // min-system-llvm-version: 12.0 #![crate_type = "lib"] diff --git a/src/test/codegen/gdb_debug_script_load.rs b/src/test/codegen/gdb_debug_script_load.rs index 178269f611e6..856b67bf9df9 100644 --- a/src/test/codegen/gdb_debug_script_load.rs +++ b/src/test/codegen/gdb_debug_script_load.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // ignore-windows // ignore-macos // ignore-wasm diff --git a/src/test/codegen/generator-debug-msvc.rs b/src/test/codegen/generator-debug-msvc.rs index 82a1568ea958..4f8a320ee9b1 100644 --- a/src/test/codegen/generator-debug-msvc.rs +++ b/src/test/codegen/generator-debug-msvc.rs @@ -3,7 +3,7 @@ // - The generator types and variants are marked artificial // - Captured vars from the source are not marked artificial // -// ignore-tidy-linelength +// // compile-flags: -C debuginfo=2 // only-msvc diff --git a/src/test/codegen/generator-debug.rs b/src/test/codegen/generator-debug.rs index 5c7c64148189..86ac6db702ab 100644 --- a/src/test/codegen/generator-debug.rs +++ b/src/test/codegen/generator-debug.rs @@ -3,7 +3,7 @@ // - The generator types and variants are marked artificial // - Captured vars from the source are not marked artificial // -// ignore-tidy-linelength +// // compile-flags: -C debuginfo=2 --edition=2018 // ignore-msvc diff --git a/src/test/codegen/inline-debuginfo.rs b/src/test/codegen/inline-debuginfo.rs index 1546dfa10a31..5b230361f397 100644 --- a/src/test/codegen/inline-debuginfo.rs +++ b/src/test/codegen/inline-debuginfo.rs @@ -1,6 +1,6 @@ #![crate_type="rlib"] // compile-flags: -Copt-level=3 -g -// ignore-tidy-linelength +// #[no_mangle] #[inline(always)] diff --git a/src/test/codegen/instrument-mcount.rs b/src/test/codegen/instrument-mcount.rs index 518a2a0da2a8..b26076e7a7bf 100644 --- a/src/test/codegen/instrument-mcount.rs +++ b/src/test/codegen/instrument-mcount.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -Z instrument-mcount #![crate_type = "lib"] diff --git a/src/test/codegen/issue-44056-macos-tls-align.rs b/src/test/codegen/issue-44056-macos-tls-align.rs index 2270eca50142..1a3923f1bb1a 100644 --- a/src/test/codegen/issue-44056-macos-tls-align.rs +++ b/src/test/codegen/issue-44056-macos-tls-align.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // only-macos // no-system-llvm // compile-flags: -O diff --git a/src/test/codegen/packed.rs b/src/test/codegen/packed.rs index 6ab28e87cb66..dfa7803d4f2f 100644 --- a/src/test/codegen/packed.rs +++ b/src/test/codegen/packed.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -O -C no-prepopulate-passes #![crate_type = "lib"] diff --git a/src/test/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs b/src/test/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs index b87a20e75f4b..887915955b59 100644 --- a/src/test/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs +++ b/src/test/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -g --remap-path-prefix={{cwd}}=/the/aux-cwd --remap-path-prefix={{src-base}}/remap_path_prefix/auxiliary=/the/aux-src diff --git a/src/test/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs b/src/test/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs index 57e877ef0d0e..59092dbf6376 100644 --- a/src/test/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs +++ b/src/test/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -g --remap-path-prefix={{cwd}}=/the/aux-cwd --remap-path-prefix={{src-base}}/remap_path_prefix/auxiliary=/the/aux-src #![crate_type = "lib"] diff --git a/src/test/codegen/remap_path_prefix/main.rs b/src/test/codegen/remap_path_prefix/main.rs index 20475bab0fc9..c2d01c7fec23 100644 --- a/src/test/codegen/remap_path_prefix/main.rs +++ b/src/test/codegen/remap_path_prefix/main.rs @@ -1,5 +1,5 @@ // ignore-windows -// ignore-tidy-linelength +// // compile-flags: -g -C no-prepopulate-passes --remap-path-prefix={{cwd}}=/the/cwd --remap-path-prefix={{src-base}}=/the/src // aux-build:remap_path_prefix_aux.rs diff --git a/src/test/codegen/repeat-trusted-len.rs b/src/test/codegen/repeat-trusted-len.rs index 8e08b78ad1ee..9e904fc82ab4 100644 --- a/src/test/codegen/repeat-trusted-len.rs +++ b/src/test/codegen/repeat-trusted-len.rs @@ -1,5 +1,5 @@ // compile-flags: -O -// ignore-tidy-linelength +// #![crate_type = "lib"] diff --git a/src/test/codegen/repr-transparent-aggregates-1.rs b/src/test/codegen/repr-transparent-aggregates-1.rs index 847b94fac78c..5c3bcc28878e 100644 --- a/src/test/codegen/repr-transparent-aggregates-1.rs +++ b/src/test/codegen/repr-transparent-aggregates-1.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -// ignore-tidy-linelength +// // min-system-llvm-version: 12.0 // ignore-arm diff --git a/src/test/codegen/repr-transparent-aggregates-2.rs b/src/test/codegen/repr-transparent-aggregates-2.rs index 1fb12d92bd13..429d760b4aa0 100644 --- a/src/test/codegen/repr-transparent-aggregates-2.rs +++ b/src/test/codegen/repr-transparent-aggregates-2.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -// ignore-tidy-linelength +// // min-system-llvm-version: 12.0 // ignore-aarch64 diff --git a/src/test/codegen/repr-transparent-aggregates-3.rs b/src/test/codegen/repr-transparent-aggregates-3.rs index 3381764bfc81..21176ac0e7a2 100644 --- a/src/test/codegen/repr-transparent-aggregates-3.rs +++ b/src/test/codegen/repr-transparent-aggregates-3.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -// ignore-tidy-linelength +// // min-system-llvm-version: 12.0 // only-mips64 diff --git a/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs b/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs index 180ba07764b6..693f0d99c4ff 100644 --- a/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs +++ b/src/test/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -C no-prepopulate-passes // only-riscv64 // only-linux diff --git a/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs b/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs index 0b6e1878d4d3..1555acadfbcc 100644 --- a/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs +++ b/src/test/codegen/riscv-abi/riscv64-lp64d-abi.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -C no-prepopulate-passes // only-riscv64 // only-linux diff --git a/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs b/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs index 1cea6e3db2a8..f08fabed421d 100644 --- a/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs +++ b/src/test/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -C no-prepopulate-passes // only-riscv64 // only-linux diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs index 267c995e0704..6fb0ceb4025b 100644 --- a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs +++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -// ignore-tidy-linelength +// #![crate_type = "lib"] diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs index 87c8b0d87d8b..4a98d797b526 100644 --- a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs +++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -// ignore-tidy-linelength +// #![crate_type = "lib"] diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs index 3b1f4398f900..e2e0fc16dfa9 100644 --- a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs +++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -C no-prepopulate-passes diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs index 9fce849e5238..050a0e5b4262 100644 --- a/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs +++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -C no-prepopulate-passes diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs index ae13d91ddeba..7d9b0d2a77bc 100644 --- a/src/test/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs +++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs @@ -1,4 +1,4 @@ -// ignore-tidy-linelength +// // compile-flags: -C no-prepopulate-passes #![crate_type = "lib"] diff --git a/src/test/codegen/stores.rs b/src/test/codegen/stores.rs index 4ea003e99ad2..17f051a5bce0 100644 --- a/src/test/codegen/stores.rs +++ b/src/test/codegen/stores.rs @@ -1,5 +1,5 @@ // compile-flags: -C no-prepopulate-passes -// ignore-tidy-linelength +// #![crate_type = "lib"] diff --git a/src/test/codegen/target-cpu-on-functions.rs b/src/test/codegen/target-cpu-on-functions.rs index 7544ac013095..c043eceb5cd1 100644 --- a/src/test/codegen/target-cpu-on-functions.rs +++ b/src/test/codegen/target-cpu-on-functions.rs @@ -2,7 +2,7 @@ // "target-cpu" attribute in LLVM. // no-prefer-dynamic -// ignore-tidy-linelength +// // compile-flags: -C no-prepopulate-passes -C panic=abort -C linker-plugin-lto -Cpasses=name-anon-globals #![crate_type = "staticlib"] diff --git a/src/test/codegen/tune-cpu-on-functions.rs b/src/test/codegen/tune-cpu-on-functions.rs index 9121799cdbff..ed8dc0e93837 100644 --- a/src/test/codegen/tune-cpu-on-functions.rs +++ b/src/test/codegen/tune-cpu-on-functions.rs @@ -2,7 +2,7 @@ // "tune-cpu" attribute in LLVM. // no-prefer-dynamic -// ignore-tidy-linelength +// // compile-flags: -C no-prepopulate-passes -C panic=abort -C linker-plugin-lto -Cpasses=name-anon-globals -Z tune-cpu=generic #![crate_type = "staticlib"] diff --git a/src/test/debuginfo/borrowed-enum.rs b/src/test/debuginfo/borrowed-enum.rs index 85e11c10c688..f3e465dc652d 100644 --- a/src/test/debuginfo/borrowed-enum.rs +++ b/src/test/debuginfo/borrowed-enum.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Require a gdb or lldb that can read DW_TAG_variant_part. // min-gdb-version: 8.2 // rust-lldb diff --git a/src/test/debuginfo/boxed-struct.rs b/src/test/debuginfo/boxed-struct.rs index 04bdf7289013..155088c61fe3 100644 --- a/src/test/debuginfo/boxed-struct.rs +++ b/src/test/debuginfo/boxed-struct.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // min-lldb-version: 310 // compile-flags:-g diff --git a/src/test/debuginfo/by-value-non-immediate-argument.rs b/src/test/debuginfo/by-value-non-immediate-argument.rs index 11a115e23938..b417567dcfec 100644 --- a/src/test/debuginfo/by-value-non-immediate-argument.rs +++ b/src/test/debuginfo/by-value-non-immediate-argument.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 // min-lldb-version: 310 diff --git a/src/test/debuginfo/c-style-enum-in-composite.rs b/src/test/debuginfo/c-style-enum-in-composite.rs index f859fe8d1ce0..2ed49de58cd2 100644 --- a/src/test/debuginfo/c-style-enum-in-composite.rs +++ b/src/test/debuginfo/c-style-enum-in-composite.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // min-lldb-version: 310 // compile-flags:-g diff --git a/src/test/debuginfo/c-style-enum.rs b/src/test/debuginfo/c-style-enum.rs index 5706d5c4cc6a..dce34fc0dcf5 100644 --- a/src/test/debuginfo/c-style-enum.rs +++ b/src/test/debuginfo/c-style-enum.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // ignore-aarch64 // ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 // min-lldb-version: 310 diff --git a/src/test/debuginfo/destructured-for-loop-variable.rs b/src/test/debuginfo/destructured-for-loop-variable.rs index 868f2285f357..1532c83dfac3 100644 --- a/src/test/debuginfo/destructured-for-loop-variable.rs +++ b/src/test/debuginfo/destructured-for-loop-variable.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // min-lldb-version: 310 // This fails on lldb 6.0.1 on x86-64 Fedora 28; so mark it macOS-only diff --git a/src/test/debuginfo/evec-in-struct.rs b/src/test/debuginfo/evec-in-struct.rs index 2033966adad4..0d94cd224ec0 100644 --- a/src/test/debuginfo/evec-in-struct.rs +++ b/src/test/debuginfo/evec-in-struct.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // min-lldb-version: 310 // compile-flags:-g diff --git a/src/test/debuginfo/function-arg-initialization.rs b/src/test/debuginfo/function-arg-initialization.rs index 8c86d2cf435b..dea1339517b4 100644 --- a/src/test/debuginfo/function-arg-initialization.rs +++ b/src/test/debuginfo/function-arg-initialization.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 // min-lldb-version: 310 diff --git a/src/test/debuginfo/gdb-pretty-struct-and-enums.rs b/src/test/debuginfo/gdb-pretty-struct-and-enums.rs index 2a8359de522f..3314f0a4e43c 100644 --- a/src/test/debuginfo/gdb-pretty-struct-and-enums.rs +++ b/src/test/debuginfo/gdb-pretty-struct-and-enums.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-lldb // ignore-android: FIXME(#10381) // min-gdb-version: 8.1 diff --git a/src/test/debuginfo/generator-objects.rs b/src/test/debuginfo/generator-objects.rs index 0023f69d27fb..b65471011fd2 100644 --- a/src/test/debuginfo/generator-objects.rs +++ b/src/test/debuginfo/generator-objects.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Require a gdb that can read DW_TAG_variant_part. // min-gdb-version: 8.2 diff --git a/src/test/debuginfo/generic-method-on-generic-struct.rs b/src/test/debuginfo/generic-method-on-generic-struct.rs index f7767292222b..85fe8ac08f3c 100644 --- a/src/test/debuginfo/generic-method-on-generic-struct.rs +++ b/src/test/debuginfo/generic-method-on-generic-struct.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // compile-flags:-g // Some versions of the non-rust-enabled LLDB print the wrong generic diff --git a/src/test/debuginfo/generic-struct-style-enum.rs b/src/test/debuginfo/generic-struct-style-enum.rs index 678ca8df0406..764330ae27f5 100644 --- a/src/test/debuginfo/generic-struct-style-enum.rs +++ b/src/test/debuginfo/generic-struct-style-enum.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // min-lldb-version: 310 // Require a gdb that can read DW_TAG_variant_part. diff --git a/src/test/debuginfo/generic-struct.rs b/src/test/debuginfo/generic-struct.rs index 1d122ce285dd..170a610c621c 100644 --- a/src/test/debuginfo/generic-struct.rs +++ b/src/test/debuginfo/generic-struct.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Some versions of the non-rust-enabled LLDB print the wrong generic // parameter type names in this test. // rust-lldb diff --git a/src/test/debuginfo/generic-tuple-style-enum.rs b/src/test/debuginfo/generic-tuple-style-enum.rs index 89aa78a6e104..60362e54e7db 100644 --- a/src/test/debuginfo/generic-tuple-style-enum.rs +++ b/src/test/debuginfo/generic-tuple-style-enum.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Require a gdb or lldb that can read DW_TAG_variant_part. // min-gdb-version: 8.2 // rust-lldb diff --git a/src/test/debuginfo/issue-57822.rs b/src/test/debuginfo/issue-57822.rs index c2cc6f9d24ca..a68e4c0a5565 100644 --- a/src/test/debuginfo/issue-57822.rs +++ b/src/test/debuginfo/issue-57822.rs @@ -3,7 +3,6 @@ // Require a gdb that can read DW_TAG_variant_part. // min-gdb-version: 8.2 -// ignore-tidy-linelength // compile-flags:-g diff --git a/src/test/debuginfo/method-on-enum.rs b/src/test/debuginfo/method-on-enum.rs index 94ca0289b78b..80f4c2e1150e 100644 --- a/src/test/debuginfo/method-on-enum.rs +++ b/src/test/debuginfo/method-on-enum.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // min-lldb-version: 310 // ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 diff --git a/src/test/debuginfo/option-like-enum.rs b/src/test/debuginfo/option-like-enum.rs index 67a3d133ed3d..04d08b9e6a5c 100644 --- a/src/test/debuginfo/option-like-enum.rs +++ b/src/test/debuginfo/option-like-enum.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 // min-lldb-version: 310 diff --git a/src/test/debuginfo/packed-struct-with-destructor.rs b/src/test/debuginfo/packed-struct-with-destructor.rs index 380e882a0fba..196d85b4181f 100644 --- a/src/test/debuginfo/packed-struct-with-destructor.rs +++ b/src/test/debuginfo/packed-struct-with-destructor.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // min-lldb-version: 310 // compile-flags:-g diff --git a/src/test/debuginfo/packed-struct.rs b/src/test/debuginfo/packed-struct.rs index 9654847ce5de..7d1893a9431c 100644 --- a/src/test/debuginfo/packed-struct.rs +++ b/src/test/debuginfo/packed-struct.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // min-lldb-version: 310 // ignore-gdb-version: 7.11.90 - 7.12.9 diff --git a/src/test/debuginfo/pretty-std-collections.rs b/src/test/debuginfo/pretty-std-collections.rs index 8026550882d0..93597aa7e235 100644 --- a/src/test/debuginfo/pretty-std-collections.rs +++ b/src/test/debuginfo/pretty-std-collections.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-windows failing on win32 bot // ignore-freebsd: gdb package too new // ignore-android: FIXME(#10381) diff --git a/src/test/debuginfo/simd.rs b/src/test/debuginfo/simd.rs index e41acc2e1ec7..b7bfe44b6ec4 100644 --- a/src/test/debuginfo/simd.rs +++ b/src/test/debuginfo/simd.rs @@ -1,6 +1,5 @@ // Need a fix for LLDB first... // ignore-lldb -// ignore-tidy-linelength // FIXME: LLVM generates invalid debug info for variables requiring // dynamic stack realignment, which is the case on s390x for vector diff --git a/src/test/debuginfo/simple-struct.rs b/src/test/debuginfo/simple-struct.rs index 49aa3bcbcaaa..aa3cf023a718 100644 --- a/src/test/debuginfo/simple-struct.rs +++ b/src/test/debuginfo/simple-struct.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // min-lldb-version: 310 // ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 diff --git a/src/test/debuginfo/struct-in-enum.rs b/src/test/debuginfo/struct-in-enum.rs index db20e9d3e454..41d15af14ede 100644 --- a/src/test/debuginfo/struct-in-enum.rs +++ b/src/test/debuginfo/struct-in-enum.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // min-lldb-version: 310 // ignore-gdb-version: 7.11.90 - 7.12.9 // ignore-test // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 diff --git a/src/test/debuginfo/struct-in-struct.rs b/src/test/debuginfo/struct-in-struct.rs index a76a4c05d9bd..a9e7797ec700 100644 --- a/src/test/debuginfo/struct-in-struct.rs +++ b/src/test/debuginfo/struct-in-struct.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // min-lldb-version: 310 // compile-flags:-g diff --git a/src/test/debuginfo/struct-style-enum.rs b/src/test/debuginfo/struct-style-enum.rs index 34f75a4e3045..3d819e368988 100644 --- a/src/test/debuginfo/struct-style-enum.rs +++ b/src/test/debuginfo/struct-style-enum.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Require a gdb or lldb that can read DW_TAG_variant_part. // min-gdb-version: 8.2 // rust-lldb diff --git a/src/test/debuginfo/struct-with-destructor.rs b/src/test/debuginfo/struct-with-destructor.rs index ebae953cb4b0..4334cd9028b8 100644 --- a/src/test/debuginfo/struct-with-destructor.rs +++ b/src/test/debuginfo/struct-with-destructor.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // min-lldb-version: 310 // compile-flags:-g diff --git a/src/test/debuginfo/tuple-in-struct.rs b/src/test/debuginfo/tuple-in-struct.rs index c43c1f7bf6da..759eab8e8a0c 100644 --- a/src/test/debuginfo/tuple-in-struct.rs +++ b/src/test/debuginfo/tuple-in-struct.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // min-lldb-version: 310 // compile-flags:-g diff --git a/src/test/debuginfo/tuple-struct.rs b/src/test/debuginfo/tuple-struct.rs index 78b6e6a54dbc..b8702f970a3a 100644 --- a/src/test/debuginfo/tuple-struct.rs +++ b/src/test/debuginfo/tuple-struct.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // min-lldb-version: 310 // compile-flags:-g diff --git a/src/test/debuginfo/tuple-style-enum.rs b/src/test/debuginfo/tuple-style-enum.rs index 87b0bc6294dd..39ead172e651 100644 --- a/src/test/debuginfo/tuple-style-enum.rs +++ b/src/test/debuginfo/tuple-style-enum.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Require a gdb or lldb that can read DW_TAG_variant_part. // min-gdb-version: 8.2 // rust-lldb diff --git a/src/test/debuginfo/type-names.rs b/src/test/debuginfo/type-names.rs index 43e68fedbfaf..cc4a4476d160 100644 --- a/src/test/debuginfo/type-names.rs +++ b/src/test/debuginfo/type-names.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-lldb // ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 diff --git a/src/test/debuginfo/vec-slices.rs b/src/test/debuginfo/vec-slices.rs index c385491bd1d5..e109b1bf2aea 100644 --- a/src/test/debuginfo/vec-slices.rs +++ b/src/test/debuginfo/vec-slices.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // ignore-windows // ignore-gdb // Test temporarily ignored due to debuginfo tests being disabled, see PR 47155 // min-lldb-version: 310 diff --git a/src/test/mir-opt/early_otherwise_branch_68867.rs b/src/test/mir-opt/early_otherwise_branch_68867.rs index e11337643dac..02221c4cf4a1 100644 --- a/src/test/mir-opt/early_otherwise_branch_68867.rs +++ b/src/test/mir-opt/early_otherwise_branch_68867.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // compile-flags: -Z mir-opt-level=4 -Zunsound-mir-opts // example from #68867 diff --git a/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.before-SimplifyBranches-final.after.diff b/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.before-SimplifyBranches-final.after.diff index 59bf5a185e07..2893ee9ac334 100644 --- a/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.before-SimplifyBranches-final.after.diff +++ b/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.before-SimplifyBranches-final.after.diff @@ -2,299 +2,299 @@ + // MIR for `try_sum` after SimplifyBranches-final fn try_sum(_1: &ViewportPercentageLength, _2: &ViewportPercentageLength) -> Result { - debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:18:5: 18:6 - debug other => _2; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:19:5: 19:10 - let mut _0: std::result::Result; // return place in scope 0 at $DIR/early_otherwise_branch_68867.rs:20:6: 20:42 - let mut _3: ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 - let mut _4: (&ViewportPercentageLength, &ViewportPercentageLength); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 - let mut _5: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:15: 22:16 - let mut _6: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:18: 22:23 - let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 - let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:21: 24:30 - let mut _9: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 - let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:23: 26:34 - let mut _11: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 - let _12: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 - let _13: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 - let mut _14: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 - let mut _15: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 - let mut _16: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 - let _17: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 - let _18: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 - let mut _19: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:49 - let mut _20: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:41 - let mut _21: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:49 - let _22: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 - let _23: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 - let mut _24: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 - let mut _25: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 - let mut _26: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 - let _27: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 - let _28: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 - let mut _29: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:55 - let mut _30: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:47 - let mut _31: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:50: 26:55 - let mut _32: !; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:27:14: 27:28 - let mut _33: (); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:27:25: 27:27 -+ let mut _34: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 -+ let mut _35: bool; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 + debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:17:5: 17:6 + debug other => _2; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:18:5: 18:10 + let mut _0: std::result::Result; // return place in scope 0 at $DIR/early_otherwise_branch_68867.rs:19:6: 19:42 + let mut _3: ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 + let mut _4: (&ViewportPercentageLength, &ViewportPercentageLength); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 + let mut _5: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:21:15: 21:16 + let mut _6: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:21:18: 21:23 + let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 + let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 + let mut _9: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:23: 24:34 + let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 + let mut _11: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 + let _12: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 + let _13: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 + let mut _14: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:49 + let mut _15: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:41 + let mut _16: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:44: 22:49 + let _17: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 + let _18: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 + let mut _19: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 + let mut _20: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 + let mut _21: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 + let _22: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 + let _23: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 + let mut _24: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:55 + let mut _25: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:47 + let mut _26: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:50: 24:55 + let _27: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 + let _28: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 + let mut _29: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 + let mut _30: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 + let mut _31: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 + let mut _32: !; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:14: 26:28 + let mut _33: (); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:25: 26:27 ++ let mut _34: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 ++ let mut _35: bool; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 scope 1 { -- debug one => _12; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 -- debug other => _13; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 -+ debug one => _15; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 -+ debug other => _16; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 +- debug one => _12; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 +- debug other => _13; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 ++ debug one => _15; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 ++ debug other => _16; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 } scope 2 { -- debug one => _17; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 -- debug other => _18; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 -+ debug one => _20; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 -+ debug other => _21; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 +- debug one => _17; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 +- debug other => _18; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 ++ debug one => _20; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 ++ debug other => _21; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 } scope 3 { -- debug one => _22; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 -- debug other => _23; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 -+ debug one => _25; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 -+ debug other => _26; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 +- debug one => _22; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 +- debug other => _23; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 ++ debug one => _25; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 ++ debug other => _26; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 } scope 4 { -- debug one => _27; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 -- debug other => _28; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 -+ debug one => _30; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 -+ debug other => _31; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 +- debug one => _27; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 +- debug other => _28; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 ++ debug one => _30; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 ++ debug other => _31; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 } bb0: { -- StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 -- StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 -- StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:15: 22:16 -- _5 = _1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:15: 22:16 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:15: 22:16 -+ (_4.0: &ViewportPercentageLength) = _1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:15: 22:16 - StorageLive(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:18: 22:23 - _6 = _2; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:18: 22:23 -- (_4.0: &ViewportPercentageLength) = move _5; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 - (_4.1: &ViewportPercentageLength) = move _6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 - StorageDead(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:23: 22:24 -- StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:23: 22:24 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:23: 22:24 - _11 = discriminant((*(_4.0: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -- switchInt(move _11) -> [0_isize: bb1, 1_isize: bb3, 2_isize: bb4, 3_isize: bb5, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ StorageLive(_34); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ _34 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ StorageLive(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ _35 = Ne(_34, _11); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ StorageDead(_34); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ switchInt(move _35) -> [false: bb7, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 +- StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 +- StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 +- StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:15: 21:16 +- _5 = _1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:15: 21:16 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:15: 21:16 ++ (_4.0: &ViewportPercentageLength) = _1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:15: 21:16 + StorageLive(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:18: 21:23 + _6 = _2; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:18: 21:23 +- (_4.0: &ViewportPercentageLength) = move _5; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 + (_4.1: &ViewportPercentageLength) = move _6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 + StorageDead(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:23: 21:24 +- StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:23: 21:24 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:23: 21:24 + _11 = discriminant((*(_4.0: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 +- switchInt(move _11) -> [0_isize: bb1, 1_isize: bb3, 2_isize: bb4, 3_isize: bb5, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ StorageLive(_34); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ _34 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ StorageLive(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ _35 = Ne(_34, _11); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ StorageDead(_34); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ switchInt(move _35) -> [false: bb7, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 } bb1: { -- _7 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 -- switchInt(move _7) -> [0_isize: bb6, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 +- _7 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 +- switchInt(move _7) -> [0_isize: bb6, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 - } - - bb2: { -+ StorageDead(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:25: 27:27 - StorageLive(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:25: 27:27 -- nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:21: 27:28 - discriminant(_0) = 1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:21: 27:28 - StorageDead(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:27: 27:28 -- StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:6: 28:7 -- StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:1: 29:2 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:6: 28:7 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:1: 29:2 - return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:2: 29:2 ++ StorageDead(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:25: 26:27 + StorageLive(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:25: 26:27 +- nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:21: 26:28 + discriminant(_0) = 1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:21: 26:28 + StorageDead(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:27: 26:28 +- StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:6: 27:7 +- StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:1: 28:2 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:6: 27:7 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:1: 28:2 + return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:2: 28:2 } + bb2: { -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 -+ _15 = (((*(_4.0: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 -+ _16 = (((*(_4.1: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 -+ ((((_0 as Ok).0: ViewportPercentageLength) as Vw).0: f32) = Add(move _15, move _16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 -+ discriminant(((_0 as Ok).0: ViewportPercentageLength)) = 0; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 -+ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 -+ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 ++ _15 = (((*(_4.0: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 ++ _16 = (((*(_4.1: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:49 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:41 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:41 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:44: 22:49 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:44: 22:49 ++ ((((_0 as Ok).0: ViewportPercentageLength) as Vw).0: f32) = Add(move _15, move _16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:49 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:48: 22:49 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:48: 22:49 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:35: 22:50 ++ discriminant(((_0 as Ok).0: ViewportPercentageLength)) = 0; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:35: 22:50 ++ nop; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 ++ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 + } + bb3: { -- _8 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:21: 24:30 -- switchInt(move _8) -> [1_isize: bb7, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:21: 24:30 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 -+ _20 = (((*(_4.0: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 -+ _21 = (((*(_4.1: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:49 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:41 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:41 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:49 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:49 -+ ((((_0 as Ok).0: ViewportPercentageLength) as Vh).0: f32) = Add(move _20, move _21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:49 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:48: 24:49 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:48: 24:49 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:35: 24:50 -+ discriminant(((_0 as Ok).0: ViewportPercentageLength)) = 1; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:35: 24:50 -+ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 -+ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 +- _8 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 +- switchInt(move _8) -> [1_isize: bb7, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 ++ _20 = (((*(_4.0: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 ++ _21 = (((*(_4.1: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 ++ ((((_0 as Ok).0: ViewportPercentageLength) as Vh).0: f32) = Add(move _20, move _21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 ++ discriminant(((_0 as Ok).0: ViewportPercentageLength)) = 1; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 ++ nop; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 ++ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 } bb4: { -- _9 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 -- switchInt(move _9) -> [2_isize: bb8, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 -+ _25 = (((*(_4.0: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 -+ _26 = (((*(_4.1: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 -+ ((((_0 as Ok).0: ViewportPercentageLength) as Vmin).0: f32) = Add(move _25, move _26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 -+ discriminant(((_0 as Ok).0: ViewportPercentageLength)) = 2; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 -+ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 -+ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 +- _9 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:23: 24:34 +- switchInt(move _9) -> [2_isize: bb8, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:23: 24:34 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 ++ _25 = (((*(_4.0: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 ++ _26 = (((*(_4.1: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:55 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:47 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:47 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:50: 24:55 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:50: 24:55 ++ ((((_0 as Ok).0: ViewportPercentageLength) as Vmin).0: f32) = Add(move _25, move _26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:55 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:54: 24:55 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:54: 24:55 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:39: 24:56 ++ discriminant(((_0 as Ok).0: ViewportPercentageLength)) = 2; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:39: 24:56 ++ nop; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 ++ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 } bb5: { -- _10 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:23: 26:34 -- switchInt(move _10) -> [3_isize: bb9, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:23: 26:34 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 -+ _30 = (((*(_4.0: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 -+ _31 = (((*(_4.1: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:55 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:47 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:47 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:50: 26:55 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:50: 26:55 -+ ((((_0 as Ok).0: ViewportPercentageLength) as Vmax).0: f32) = Add(move _30, move _31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:55 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:54: 26:55 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:54: 26:55 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:39: 26:56 -+ discriminant(((_0 as Ok).0: ViewportPercentageLength)) = 3; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:39: 26:56 -+ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 -+ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 +- _10 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 +- switchInt(move _10) -> [3_isize: bb9, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 ++ _30 = (((*(_4.0: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 ++ _31 = (((*(_4.1: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 ++ ((((_0 as Ok).0: ViewportPercentageLength) as Vmax).0: f32) = Add(move _30, move _31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 ++ discriminant(((_0 as Ok).0: ViewportPercentageLength)) = 3; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 ++ nop; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 ++ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 } bb6: { -- StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 -- _12 = (((*(_4.0: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 -- StorageLive(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 -- _13 = (((*(_4.1: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 -- StorageLive(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 -- StorageLive(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 -- _15 = _12; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 -- StorageLive(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 -- _16 = _13; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 -- _14 = Add(move _15, move _16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 -- StorageDead(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 -- StorageDead(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 -- ((_3 as Vw).0: f32) = move _14; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 -- discriminant(_3) = 0; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 -- StorageDead(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 -- StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 -- StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 -- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:5: 28:7 -+ discriminant(_0) = 0; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:5: 28:7 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:6: 28:7 -+ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:1: 29:2 -+ return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:2: 29:2 +- StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 +- _12 = (((*(_4.0: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 +- StorageLive(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 +- _13 = (((*(_4.1: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 +- StorageLive(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:49 +- StorageLive(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:41 +- _15 = _12; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:41 +- StorageLive(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:44: 22:49 +- _16 = _13; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:44: 22:49 +- _14 = Add(move _15, move _16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:49 +- StorageDead(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:48: 22:49 +- StorageDead(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:48: 22:49 +- ((_3 as Vw).0: f32) = move _14; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:35: 22:50 +- discriminant(_3) = 0; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:35: 22:50 +- StorageDead(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 +- StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 +- StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 +- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:5: 27:7 ++ discriminant(_0) = 0; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:5: 27:7 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:6: 27:7 ++ nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:1: 28:2 ++ return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:2: 28:2 } bb7: { -- StorageLive(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 -- _17 = (((*(_4.0: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 -- StorageLive(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 -- _18 = (((*(_4.1: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 -- StorageLive(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:49 -- StorageLive(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:41 -- _20 = _17; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:41 -- StorageLive(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:49 -- _21 = _18; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:49 -- _19 = Add(move _20, move _21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:49 -- StorageDead(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:48: 24:49 -- StorageDead(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:48: 24:49 -- ((_3 as Vh).0: f32) = move _19; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:35: 24:50 -- discriminant(_3) = 1; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:35: 24:50 -- StorageDead(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 -- StorageDead(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 -- StorageDead(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 -- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 +- StorageLive(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 +- _17 = (((*(_4.0: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 +- StorageLive(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 +- _18 = (((*(_4.1: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 +- StorageLive(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 +- StorageLive(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 +- _20 = _17; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 +- StorageLive(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 +- _21 = _18; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 +- _19 = Add(move _20, move _21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 +- StorageDead(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 +- StorageDead(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 +- ((_3 as Vh).0: f32) = move _19; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 +- discriminant(_3) = 1; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 +- StorageDead(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 +- StorageDead(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 +- StorageDead(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 +- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 - } - - bb8: { -- StorageLive(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 -- _22 = (((*(_4.0: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 -- StorageLive(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 -- _23 = (((*(_4.1: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 -- StorageLive(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 -- StorageLive(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 -- _25 = _22; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 -- StorageLive(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 -- _26 = _23; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 -- _24 = Add(move _25, move _26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 -- StorageDead(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 -- StorageDead(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 -- ((_3 as Vmin).0: f32) = move _24; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 -- discriminant(_3) = 2; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 -- StorageDead(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 -- StorageDead(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 -- StorageDead(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 -- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 +- StorageLive(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 +- _22 = (((*(_4.0: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 +- StorageLive(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 +- _23 = (((*(_4.1: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 +- StorageLive(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:55 +- StorageLive(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:47 +- _25 = _22; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:47 +- StorageLive(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:50: 24:55 +- _26 = _23; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:50: 24:55 +- _24 = Add(move _25, move _26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:55 +- StorageDead(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:54: 24:55 +- StorageDead(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:54: 24:55 +- ((_3 as Vmin).0: f32) = move _24; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:39: 24:56 +- discriminant(_3) = 2; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:39: 24:56 +- StorageDead(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 +- StorageDead(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 +- StorageDead(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 +- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 - } - - bb9: { -- StorageLive(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 -- _27 = (((*(_4.0: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 -- StorageLive(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 -- _28 = (((*(_4.1: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 -- StorageLive(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:55 -- StorageLive(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:47 -- _30 = _27; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:47 -- StorageLive(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:50: 26:55 -- _31 = _28; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:50: 26:55 -- _29 = Add(move _30, move _31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:55 -- StorageDead(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:54: 26:55 -- StorageDead(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:54: 26:55 -- ((_3 as Vmax).0: f32) = move _29; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:39: 26:56 -- discriminant(_3) = 3; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:39: 26:56 -- StorageDead(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 -- StorageDead(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 -- StorageDead(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 -- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 +- StorageLive(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 +- _27 = (((*(_4.0: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 +- StorageLive(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 +- _28 = (((*(_4.1: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 +- StorageLive(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 +- StorageLive(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 +- _30 = _27; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 +- StorageLive(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 +- _31 = _28; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 +- _29 = Add(move _30, move _31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 +- StorageDead(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 +- StorageDead(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 +- ((_3 as Vmax).0: f32) = move _29; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 +- discriminant(_3) = 3; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 +- StorageDead(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 +- StorageDead(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 +- StorageDead(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 +- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 - } - - bb10: { -- ((_0 as Ok).0: ViewportPercentageLength) = move _3; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:5: 28:7 -- discriminant(_0) = 0; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:5: 28:7 -- StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:6: 28:7 -- StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:1: 29:2 -- return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:2: 29:2 -+ StorageDead(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 -+ switchInt(_11) -> [0_isize: bb2, 1_isize: bb3, 2_isize: bb4, 3_isize: bb5, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 +- ((_0 as Ok).0: ViewportPercentageLength) = move _3; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:5: 27:7 +- discriminant(_0) = 0; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:5: 27:7 +- StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:6: 27:7 +- StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:1: 28:2 +- return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:2: 28:2 ++ StorageDead(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 ++ switchInt(_11) -> [0_isize: bb2, 1_isize: bb3, 2_isize: bb4, 3_isize: bb5, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 } } diff --git a/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff b/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff index 2d320786ea92..9039989e0f28 100644 --- a/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff +++ b/src/test/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff @@ -2,215 +2,215 @@ + // MIR for `try_sum` after EarlyOtherwiseBranch fn try_sum(_1: &ViewportPercentageLength, _2: &ViewportPercentageLength) -> Result { - debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:18:5: 18:6 - debug other => _2; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:19:5: 19:10 - let mut _0: std::result::Result; // return place in scope 0 at $DIR/early_otherwise_branch_68867.rs:20:6: 20:42 - let mut _3: ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 - let mut _4: (&ViewportPercentageLength, &ViewportPercentageLength); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 - let mut _5: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:15: 22:16 - let mut _6: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:18: 22:23 - let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 - let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:21: 24:30 - let mut _9: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 - let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:23: 26:34 - let mut _11: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 - let _12: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 - let _13: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 - let mut _14: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 - let mut _15: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 - let mut _16: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 - let _17: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 - let _18: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 - let mut _19: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:49 - let mut _20: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:41 - let mut _21: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:49 - let _22: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 - let _23: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 - let mut _24: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 - let mut _25: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 - let mut _26: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 - let _27: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 - let _28: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 - let mut _29: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:55 - let mut _30: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:47 - let mut _31: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:50: 26:55 - let mut _32: !; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:27:14: 27:28 - let mut _33: (); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:27:25: 27:27 -+ let mut _34: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 -+ let mut _35: bool; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 + debug x => _1; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:17:5: 17:6 + debug other => _2; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:18:5: 18:10 + let mut _0: std::result::Result; // return place in scope 0 at $DIR/early_otherwise_branch_68867.rs:19:6: 19:42 + let mut _3: ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 + let mut _4: (&ViewportPercentageLength, &ViewportPercentageLength); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 + let mut _5: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:21:15: 21:16 + let mut _6: &ViewportPercentageLength; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:21:18: 21:23 + let mut _7: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 + let mut _8: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 + let mut _9: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:23: 24:34 + let mut _10: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 + let mut _11: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 + let _12: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 + let _13: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 + let mut _14: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:49 + let mut _15: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:41 + let mut _16: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:44: 22:49 + let _17: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 + let _18: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 + let mut _19: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 + let mut _20: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 + let mut _21: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 + let _22: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 + let _23: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 + let mut _24: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:55 + let mut _25: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:47 + let mut _26: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:24:50: 24:55 + let _27: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 + let _28: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 + let mut _29: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 + let mut _30: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 + let mut _31: f32; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 + let mut _32: !; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:14: 26:28 + let mut _33: (); // in scope 0 at $DIR/early_otherwise_branch_68867.rs:26:25: 26:27 ++ let mut _34: isize; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 ++ let mut _35: bool; // in scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 scope 1 { - debug one => _12; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 - debug other => _13; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 + debug one => _12; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 + debug other => _13; // in scope 1 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 } scope 2 { - debug one => _17; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 - debug other => _18; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 + debug one => _17; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 + debug other => _18; // in scope 2 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 } scope 3 { - debug one => _22; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 - debug other => _23; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 + debug one => _22; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 + debug other => _23; // in scope 3 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 } scope 4 { - debug one => _27; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 - debug other => _28; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 + debug one => _27; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 + debug other => _28; // in scope 4 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 } bb0: { - StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 - StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 - StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:15: 22:16 - _5 = _1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:15: 22:16 - StorageLive(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:18: 22:23 - _6 = _2; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:18: 22:23 - (_4.0: &ViewportPercentageLength) = move _5; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 - (_4.1: &ViewportPercentageLength) = move _6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:24 - StorageDead(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:23: 22:24 - StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:23: 22:24 - _11 = discriminant((*(_4.0: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -- switchInt(move _11) -> [0_isize: bb1, 1_isize: bb3, 2_isize: bb4, 3_isize: bb5, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ StorageLive(_34); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ _34 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ StorageLive(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ _35 = Ne(_34, _11); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ StorageDead(_34); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 -+ switchInt(move _35) -> [false: bb7, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:11: 23:18 + StorageLive(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 + StorageLive(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 + StorageLive(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:15: 21:16 + _5 = _1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:15: 21:16 + StorageLive(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:18: 21:23 + _6 = _2; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:18: 21:23 + (_4.0: &ViewportPercentageLength) = move _5; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 + (_4.1: &ViewportPercentageLength) = move _6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:14: 21:24 + StorageDead(_6); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:23: 21:24 + StorageDead(_5); // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:23: 21:24 + _11 = discriminant((*(_4.0: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 +- switchInt(move _11) -> [0_isize: bb1, 1_isize: bb3, 2_isize: bb4, 3_isize: bb5, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ StorageLive(_34); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ _34 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ StorageLive(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ _35 = Ne(_34, _11); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ StorageDead(_34); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 ++ switchInt(move _35) -> [false: bb7, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:11: 22:18 } bb1: { -- _7 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 -- switchInt(move _7) -> [0_isize: bb6, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 +- _7 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 +- switchInt(move _7) -> [0_isize: bb6, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 - } - - bb2: { -+ StorageDead(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:25: 27:27 - StorageLive(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:25: 27:27 -- nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:21: 27:28 - discriminant(_0) = 1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:21: 27:28 - StorageDead(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:27: 27:28 - StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:6: 28:7 - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:1: 29:2 - return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:2: 29:2 ++ StorageDead(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:25: 26:27 + StorageLive(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:25: 26:27 +- nop; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:21: 26:28 + discriminant(_0) = 1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:21: 26:28 + StorageDead(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:27: 26:28 + StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:6: 27:7 + StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:1: 28:2 + return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:2: 28:2 } - bb3: { -- _8 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:21: 24:30 -- switchInt(move _8) -> [1_isize: bb7, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:21: 24:30 +- _8 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 +- switchInt(move _8) -> [1_isize: bb7, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 - } - - bb4: { -- _9 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 -- switchInt(move _9) -> [2_isize: bb8, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 +- _9 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:23: 24:34 +- switchInt(move _9) -> [2_isize: bb8, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:23: 24:34 - } - - bb5: { -- _10 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:23: 26:34 -- switchInt(move _10) -> [3_isize: bb9, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:23: 26:34 +- _10 = discriminant((*(_4.1: &ViewportPercentageLength))); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 +- switchInt(move _10) -> [3_isize: bb9, otherwise: bb2]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:23: 25:34 - } - - bb6: { + bb2: { - StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 - _12 = (((*(_4.0: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 - StorageLive(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 - _13 = (((*(_4.1: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 - StorageLive(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 - StorageLive(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 - _15 = _12; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 - StorageLive(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 - _16 = _13; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 - _14 = Add(move _15, move _16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 - StorageDead(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 - StorageDead(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 - ((_3 as Vw).0: f32) = move _14; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 - discriminant(_3) = 0; // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 - StorageDead(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 - StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 - StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 -- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 -+ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 + StorageLive(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 + _12 = (((*(_4.0: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:14: 22:17 + StorageLive(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 + _13 = (((*(_4.1: &ViewportPercentageLength)) as Vw).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:24: 22:29 + StorageLive(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:49 + StorageLive(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:41 + _15 = _12; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:41 + StorageLive(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:44: 22:49 + _16 = _13; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:44: 22:49 + _14 = Add(move _15, move _16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:38: 22:49 + StorageDead(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:48: 22:49 + StorageDead(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:48: 22:49 + ((_3 as Vw).0: f32) = move _14; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:35: 22:50 + discriminant(_3) = 0; // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:35: 22:50 + StorageDead(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 + StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 + StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:49: 22:50 +- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 ++ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 } - bb7: { + bb3: { - StorageLive(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 - _17 = (((*(_4.0: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:14: 24:17 - StorageLive(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 - _18 = (((*(_4.1: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:24: 24:29 - StorageLive(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:49 - StorageLive(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:41 - _20 = _17; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:41 - StorageLive(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:49 - _21 = _18; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:49 - _19 = Add(move _20, move _21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:38: 24:49 - StorageDead(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:48: 24:49 - StorageDead(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:48: 24:49 - ((_3 as Vh).0: f32) = move _19; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:35: 24:50 - discriminant(_3) = 1; // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:35: 24:50 - StorageDead(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 - StorageDead(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 - StorageDead(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:49: 24:50 -- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 -+ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 + StorageLive(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 + _17 = (((*(_4.0: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:14: 23:17 + StorageLive(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 + _18 = (((*(_4.1: &ViewportPercentageLength)) as Vh).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:24: 23:29 + StorageLive(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 + StorageLive(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 + _20 = _17; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:41 + StorageLive(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 + _21 = _18; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:44: 23:49 + _19 = Add(move _20, move _21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:38: 23:49 + StorageDead(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 + StorageDead(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:48: 23:49 + ((_3 as Vh).0: f32) = move _19; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 + discriminant(_3) = 1; // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:35: 23:50 + StorageDead(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 + StorageDead(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 + StorageDead(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:49: 23:50 +- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 ++ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 } - bb8: { + bb4: { - StorageLive(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 - _22 = (((*(_4.0: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 - StorageLive(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 - _23 = (((*(_4.1: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 - StorageLive(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 - StorageLive(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 - _25 = _22; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 - StorageLive(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 - _26 = _23; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 - _24 = Add(move _25, move _26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 - StorageDead(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 - StorageDead(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 - ((_3 as Vmin).0: f32) = move _24; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 - discriminant(_3) = 2; // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 - StorageDead(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 - StorageDead(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 - StorageDead(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 -- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 -+ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 + StorageLive(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 + _22 = (((*(_4.0: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:16: 24:19 + StorageLive(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 + _23 = (((*(_4.1: &ViewportPercentageLength)) as Vmin).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:28: 24:33 + StorageLive(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:55 + StorageLive(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:47 + _25 = _22; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:47 + StorageLive(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:50: 24:55 + _26 = _23; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:50: 24:55 + _24 = Add(move _25, move _26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:44: 24:55 + StorageDead(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:54: 24:55 + StorageDead(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:54: 24:55 + ((_3 as Vmin).0: f32) = move _24; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:39: 24:56 + discriminant(_3) = 2; // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:39: 24:56 + StorageDead(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 + StorageDead(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 + StorageDead(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:24:55: 24:56 +- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 ++ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 } - bb9: { + bb5: { - StorageLive(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 - _27 = (((*(_4.0: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:16: 26:19 - StorageLive(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 - _28 = (((*(_4.1: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:28: 26:33 - StorageLive(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:55 - StorageLive(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:47 - _30 = _27; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:47 - StorageLive(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:50: 26:55 - _31 = _28; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:50: 26:55 - _29 = Add(move _30, move _31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:44: 26:55 - StorageDead(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:54: 26:55 - StorageDead(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:54: 26:55 - ((_3 as Vmax).0: f32) = move _29; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:39: 26:56 - discriminant(_3) = 3; // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:39: 26:56 - StorageDead(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 - StorageDead(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 - StorageDead(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:26:55: 26:56 -- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 -+ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:8: 28:6 + StorageLive(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 + _27 = (((*(_4.0: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:16: 25:19 + StorageLive(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 + _28 = (((*(_4.1: &ViewportPercentageLength)) as Vmax).0: f32); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:28: 25:33 + StorageLive(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 + StorageLive(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 + _30 = _27; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:47 + StorageLive(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 + _31 = _28; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:50: 25:55 + _29 = Add(move _30, move _31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:44: 25:55 + StorageDead(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 + StorageDead(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:54: 25:55 + ((_3 as Vmax).0: f32) = move _29; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 + discriminant(_3) = 3; // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:39: 25:56 + StorageDead(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 + StorageDead(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 + StorageDead(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:25:55: 25:56 +- goto -> bb10; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 ++ goto -> bb6; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:8: 27:6 } - bb10: { + bb6: { - ((_0 as Ok).0: ViewportPercentageLength) = move _3; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:5: 28:7 - discriminant(_0) = 0; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:5: 28:7 - StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:6: 28:7 - StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:1: 29:2 - return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:29:2: 29:2 + ((_0 as Ok).0: ViewportPercentageLength) = move _3; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:5: 27:7 + discriminant(_0) = 0; // scope 0 at $DIR/early_otherwise_branch_68867.rs:21:5: 27:7 + StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:27:6: 27:7 + StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:1: 28:2 + return; // scope 0 at $DIR/early_otherwise_branch_68867.rs:28:2: 28:2 + } + + bb7: { -+ StorageDead(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 -+ switchInt(_11) -> [0_isize: bb2, 1_isize: bb3, 2_isize: bb4, 3_isize: bb5, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:23:21: 23:30 ++ StorageDead(_35); // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 ++ switchInt(_11) -> [0_isize: bb2, 1_isize: bb3, 2_isize: bb4, 3_isize: bb5, otherwise: bb1]; // scope 0 at $DIR/early_otherwise_branch_68867.rs:22:21: 22:30 } } diff --git a/src/test/rustdoc-ui/commandline-argfile-missing.rs b/src/test/rustdoc-ui/commandline-argfile-missing.rs index 020c3ff3c7e6..5a6465bd0646 100644 --- a/src/test/rustdoc-ui/commandline-argfile-missing.rs +++ b/src/test/rustdoc-ui/commandline-argfile-missing.rs @@ -1,6 +1,5 @@ // Check to see if we can get parameters from an @argsfile file // -// ignore-tidy-linelength // normalize-stderr-test: "os error \d+" -> "os error $$ERR" // normalize-stderr-test: "commandline-argfile-missing.args:[^(]*" -> "commandline-argfile-missing.args: $$FILE_MISSING " // compile-flags: --cfg cmdline_set @{{src-base}}/commandline-argfile-missing.args diff --git a/src/test/rustdoc-ui/doc-spotlight.fixed b/src/test/rustdoc-ui/doc-spotlight.fixed index 6c90aace6891..94b69a99879c 100644 --- a/src/test/rustdoc-ui/doc-spotlight.fixed +++ b/src/test/rustdoc-ui/doc-spotlight.fixed @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // check-pass // run-rustfix diff --git a/src/test/rustdoc-ui/doc-spotlight.rs b/src/test/rustdoc-ui/doc-spotlight.rs index 7cea553c4b00..cc5f159a8093 100644 --- a/src/test/rustdoc-ui/doc-spotlight.rs +++ b/src/test/rustdoc-ui/doc-spotlight.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // check-pass // run-rustfix diff --git a/src/test/rustdoc-ui/doc-spotlight.stderr b/src/test/rustdoc-ui/doc-spotlight.stderr index e79cdc3d77a8..e5fa6293f3d8 100644 --- a/src/test/rustdoc-ui/doc-spotlight.stderr +++ b/src/test/rustdoc-ui/doc-spotlight.stderr @@ -1,5 +1,5 @@ warning: unknown `doc` attribute `spotlight` - --> $DIR/doc-spotlight.rs:7:7 + --> $DIR/doc-spotlight.rs:6:7 | LL | #[doc(spotlight)] | ^^^^^^^^^ help: use `notable_trait` instead diff --git a/src/test/rustdoc/assoc-item-cast.rs b/src/test/rustdoc/assoc-item-cast.rs index dc62fac6a957..273fc62aa179 100644 --- a/src/test/rustdoc/assoc-item-cast.rs +++ b/src/test/rustdoc/assoc-item-cast.rs @@ -1,6 +1,5 @@ #![crate_name = "foo"] -// ignore-tidy-linelength pub trait Expression { type SqlType; diff --git a/src/test/rustdoc/assoc-types.rs b/src/test/rustdoc/assoc-types.rs index 5f0fdbb322ca..82fa7cf9e605 100644 --- a/src/test/rustdoc/assoc-types.rs +++ b/src/test/rustdoc/assoc-types.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_type="lib"] // @has assoc_types/trait.Index.html diff --git a/src/test/rustdoc/async-fn.rs b/src/test/rustdoc/async-fn.rs index aa4ad261c80f..4b66b5271c5b 100644 --- a/src/test/rustdoc/async-fn.rs +++ b/src/test/rustdoc/async-fn.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // edition:2018 // @has async_fn/fn.foo.html '//pre[@class="rust fn"]' 'pub async fn foo() -> Option' pub async fn foo() -> Option { diff --git a/src/test/rustdoc/const-display.rs b/src/test/rustdoc/const-display.rs index 11ba68a388fb..fb5c8517f6ca 100644 --- a/src/test/rustdoc/const-display.rs +++ b/src/test/rustdoc/const-display.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_name = "foo"] #![unstable(feature = "humans", diff --git a/src/test/rustdoc/const-generics/add-impl.rs b/src/test/rustdoc/const-generics/add-impl.rs index 85be89719ec3..db4be82e6bfd 100644 --- a/src/test/rustdoc/const-generics/add-impl.rs +++ b/src/test/rustdoc/const-generics/add-impl.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![feature(const_generics)] #![crate_name = "foo"] diff --git a/src/test/rustdoc/const-generics/const-impl.rs b/src/test/rustdoc/const-generics/const-impl.rs index 03f5bb2ca437..04fb33953333 100644 --- a/src/test/rustdoc/const-generics/const-impl.rs +++ b/src/test/rustdoc/const-generics/const-impl.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![feature(const_generics)] #![crate_name = "foo"] diff --git a/src/test/rustdoc/const-generics/type-alias.rs b/src/test/rustdoc/const-generics/type-alias.rs index 85160dc07a7a..ebda5b194045 100644 --- a/src/test/rustdoc/const-generics/type-alias.rs +++ b/src/test/rustdoc/const-generics/type-alias.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![crate_name = "foo"] // @has foo/type.CellIndex.html '//pre[@class="rust typedef"]' 'type CellIndex = [i64; D];' diff --git a/src/test/rustdoc/deref-recursive-pathbuf.rs b/src/test/rustdoc/deref-recursive-pathbuf.rs index 759e881aab41..459a30060c62 100644 --- a/src/test/rustdoc/deref-recursive-pathbuf.rs +++ b/src/test/rustdoc/deref-recursive-pathbuf.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // #26207: Show all methods reachable via Deref impls, recursing through multiple dereferencing // levels and across multiple crates. diff --git a/src/test/rustdoc/deref-recursive.rs b/src/test/rustdoc/deref-recursive.rs index 5aef87c38cd2..b96b5397ad78 100644 --- a/src/test/rustdoc/deref-recursive.rs +++ b/src/test/rustdoc/deref-recursive.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // #26207: Show all methods reachable via Deref impls, recursing through multiple dereferencing // levels if needed. diff --git a/src/test/rustdoc/deref-typedef.rs b/src/test/rustdoc/deref-typedef.rs index 589f133b975a..47009559e6f7 100644 --- a/src/test/rustdoc/deref-typedef.rs +++ b/src/test/rustdoc/deref-typedef.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_name = "foo"] // @has 'foo/struct.Bar.html' diff --git a/src/test/rustdoc/double-quote-escape.rs b/src/test/rustdoc/double-quote-escape.rs index 243d8ad7965b..546af2c121ad 100644 --- a/src/test/rustdoc/double-quote-escape.rs +++ b/src/test/rustdoc/double-quote-escape.rs @@ -1,6 +1,5 @@ #![crate_name = "foo"] -// ignore-tidy-linelength pub trait Foo { fn foo() {} diff --git a/src/test/rustdoc/duplicate-cfg.rs b/src/test/rustdoc/duplicate-cfg.rs index 7b938af3c7d5..cec504ea1517 100644 --- a/src/test/rustdoc/duplicate-cfg.rs +++ b/src/test/rustdoc/duplicate-cfg.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_name = "foo"] #![feature(doc_cfg)] diff --git a/src/test/rustdoc/fn-type.rs b/src/test/rustdoc/fn-type.rs index f5e123aed9c4..3959aeb6cfb7 100644 --- a/src/test/rustdoc/fn-type.rs +++ b/src/test/rustdoc/fn-type.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_name = "foo"] #![crate_type = "lib"] diff --git a/src/test/rustdoc/for-lifetime.rs b/src/test/rustdoc/for-lifetime.rs index 299794b63b2e..34a7eae31c79 100644 --- a/src/test/rustdoc/for-lifetime.rs +++ b/src/test/rustdoc/for-lifetime.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_name = "foo"] #![crate_type = "lib"] diff --git a/src/test/rustdoc/inline_cross/impl_trait.rs b/src/test/rustdoc/inline_cross/impl_trait.rs index 44e2c4d3fb25..a2adc0e63c9c 100644 --- a/src/test/rustdoc/inline_cross/impl_trait.rs +++ b/src/test/rustdoc/inline_cross/impl_trait.rs @@ -1,6 +1,5 @@ // aux-build:impl_trait_aux.rs // edition:2018 -// ignore-tidy-linelength extern crate impl_trait_aux; diff --git a/src/test/rustdoc/intra-doc/associated-defaults.rs b/src/test/rustdoc/intra-doc/associated-defaults.rs index f99d9b5baea4..28dc7073a3ec 100644 --- a/src/test/rustdoc/intra-doc/associated-defaults.rs +++ b/src/test/rustdoc/intra-doc/associated-defaults.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![deny(intra_doc_link_resolution_failure)] #![feature(associated_type_defaults)] diff --git a/src/test/rustdoc/intra-doc/associated-items.rs b/src/test/rustdoc/intra-doc/associated-items.rs index 09dfbfcf68a3..43a43a79738b 100644 --- a/src/test/rustdoc/intra-doc/associated-items.rs +++ b/src/test/rustdoc/intra-doc/associated-items.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![deny(intra_doc_link_resolution_failure)] /// [`std::collections::BTreeMap::into_iter`] diff --git a/src/test/rustdoc/intra-doc/cross-crate/macro.rs b/src/test/rustdoc/intra-doc/cross-crate/macro.rs index 311b16dff13b..62659ce689a7 100644 --- a/src/test/rustdoc/intra-doc/cross-crate/macro.rs +++ b/src/test/rustdoc/intra-doc/cross-crate/macro.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // aux-build:macro_inner.rs // aux-build:proc_macro.rs // build-aux-docs diff --git a/src/test/rustdoc/intra-doc/cross-crate/traits.rs b/src/test/rustdoc/intra-doc/cross-crate/traits.rs index 07decb48019d..68f5cb3a092e 100644 --- a/src/test/rustdoc/intra-doc/cross-crate/traits.rs +++ b/src/test/rustdoc/intra-doc/cross-crate/traits.rs @@ -1,6 +1,5 @@ // aux-build:traits.rs // build-aux-docs -// ignore-tidy-line-length #![deny(broken_intra_doc_links)] extern crate inner; diff --git a/src/test/rustdoc/intra-doc/disambiguators-removed.rs b/src/test/rustdoc/intra-doc/disambiguators-removed.rs index aa0ced62aaf3..12c3cee29c3a 100644 --- a/src/test/rustdoc/intra-doc/disambiguators-removed.rs +++ b/src/test/rustdoc/intra-doc/disambiguators-removed.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![deny(intra_doc_link_resolution_failure)] // first try backticks /// Trait: [`trait@Name`], fn: [`fn@Name`], [`Name`][`macro@Name`] diff --git a/src/test/rustdoc/intra-doc/non-path-primitives.rs b/src/test/rustdoc/intra-doc/non-path-primitives.rs index ffa02b0c635b..ee71537d1553 100644 --- a/src/test/rustdoc/intra-doc/non-path-primitives.rs +++ b/src/test/rustdoc/intra-doc/non-path-primitives.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![crate_name = "foo"] #![feature(intra_doc_pointers)] #![deny(rustdoc::broken_intra_doc_links)] diff --git a/src/test/rustdoc/intra-doc/prim-assoc.rs b/src/test/rustdoc/intra-doc/prim-assoc.rs index d687cbd69bb1..4099ececfaf7 100644 --- a/src/test/rustdoc/intra-doc/prim-assoc.rs +++ b/src/test/rustdoc/intra-doc/prim-assoc.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![deny(broken_intra_doc_links)] //! [i32::MAX] diff --git a/src/test/rustdoc/intra-doc/prim-methods-external-core.rs b/src/test/rustdoc/intra-doc/prim-methods-external-core.rs index 434e03389835..695a7fbfb534 100644 --- a/src/test/rustdoc/intra-doc/prim-methods-external-core.rs +++ b/src/test/rustdoc/intra-doc/prim-methods-external-core.rs @@ -2,7 +2,6 @@ // build-aux-docs // ignore-cross-compile // ignore-windows -// ignore-tidy-linelength #![deny(broken_intra_doc_links)] #![feature(no_core, lang_items)] diff --git a/src/test/rustdoc/intra-doc/prim-methods-local.rs b/src/test/rustdoc/intra-doc/prim-methods-local.rs index 9888f29db5ba..f0b939a468c0 100644 --- a/src/test/rustdoc/intra-doc/prim-methods-local.rs +++ b/src/test/rustdoc/intra-doc/prim-methods-local.rs @@ -3,7 +3,6 @@ #![no_core] #![crate_type = "rlib"] -// ignore-tidy-linelength // @has prim_methods_local/index.html // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html"]' 'char' diff --git a/src/test/rustdoc/intra-doc/prim-methods.rs b/src/test/rustdoc/intra-doc/prim-methods.rs index f19cff7d34af..6de15e76d15c 100644 --- a/src/test/rustdoc/intra-doc/prim-methods.rs +++ b/src/test/rustdoc/intra-doc/prim-methods.rs @@ -1,6 +1,5 @@ #![deny(broken_intra_doc_links)] -// ignore-tidy-linelength // @has prim_methods/index.html // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.char.html"]' 'char' diff --git a/src/test/rustdoc/intra-doc/prim-precedence.rs b/src/test/rustdoc/intra-doc/prim-precedence.rs index ed2c2cda7184..ab6e3da17f4e 100644 --- a/src/test/rustdoc/intra-doc/prim-precedence.rs +++ b/src/test/rustdoc/intra-doc/prim-precedence.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![deny(broken_intra_doc_links)] pub mod char { diff --git a/src/test/rustdoc/intra-doc/primitive-non-default-impl.rs b/src/test/rustdoc/intra-doc/primitive-non-default-impl.rs index 548eb090a327..cf83ead4db72 100644 --- a/src/test/rustdoc/intra-doc/primitive-non-default-impl.rs +++ b/src/test/rustdoc/intra-doc/primitive-non-default-impl.rs @@ -1,6 +1,5 @@ #![deny(broken_intra_doc_links)] -// ignore-tidy-linelength // @has primitive_non_default_impl/fn.str_methods.html /// [`str::trim`] diff --git a/src/test/rustdoc/intra-doc/self.rs b/src/test/rustdoc/intra-doc/self.rs index 81545fec7411..b2b75127b312 100644 --- a/src/test/rustdoc/intra-doc/self.rs +++ b/src/test/rustdoc/intra-doc/self.rs @@ -1,6 +1,5 @@ #![crate_name = "foo"] -// ignore-tidy-linelength // @has foo/index.html '//a/@href' '../foo/struct.Foo.html#method.new' // @has foo/struct.Foo.html '//a/@href' '../foo/struct.Foo.html#method.new' diff --git a/src/test/rustdoc/intra-doc/trait-impl.rs b/src/test/rustdoc/intra-doc/trait-impl.rs index fab8406d525e..ef1987a829ad 100644 --- a/src/test/rustdoc/intra-doc/trait-impl.rs +++ b/src/test/rustdoc/intra-doc/trait-impl.rs @@ -1,6 +1,5 @@ #![crate_name = "foo"] -// ignore-tidy-linelength pub struct MyStruct; diff --git a/src/test/rustdoc/intra-doc/trait-item.rs b/src/test/rustdoc/intra-doc/trait-item.rs index de8585f4c9a7..affd2aaec2d2 100644 --- a/src/test/rustdoc/intra-doc/trait-item.rs +++ b/src/test/rustdoc/intra-doc/trait-item.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![deny(broken_intra_doc_links)] /// Link to [S::assoc_fn()] diff --git a/src/test/rustdoc/intra-doc/true-false.rs b/src/test/rustdoc/intra-doc/true-false.rs index 7b21e9341474..db637ece3699 100644 --- a/src/test/rustdoc/intra-doc/true-false.rs +++ b/src/test/rustdoc/intra-doc/true-false.rs @@ -1,7 +1,6 @@ #![deny(broken_intra_doc_links)] #![crate_name = "foo"] -// ignore-tidy-linelength // @has foo/index.html // @has - '//*[@id="main"]//a[@href="https://doc.rust-lang.org/nightly/std/primitive.bool.html"]' 'true' diff --git a/src/test/rustdoc/issue-29503.rs b/src/test/rustdoc/issue-29503.rs index d7e0f37b2866..19bab394dcf2 100644 --- a/src/test/rustdoc/issue-29503.rs +++ b/src/test/rustdoc/issue-29503.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - use std::fmt; // @has issue_29503/trait.MyTrait.html diff --git a/src/test/rustdoc/issue-55364.rs b/src/test/rustdoc/issue-55364.rs index 200a29fc7eea..4aa553f77933 100644 --- a/src/test/rustdoc/issue-55364.rs +++ b/src/test/rustdoc/issue-55364.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // First a module with inner documentation // @has issue_55364/subone/index.html diff --git a/src/test/rustdoc/issue-75588.rs b/src/test/rustdoc/issue-75588.rs index 835ed02ac00d..aebffeff5f05 100644 --- a/src/test/rustdoc/issue-75588.rs +++ b/src/test/rustdoc/issue-75588.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // aux-build:realcore.rs // aux-build:real_gimli.rs diff --git a/src/test/rustdoc/playground-arg.rs b/src/test/rustdoc/playground-arg.rs index dbe2297f8188..69c896265393 100644 --- a/src/test/rustdoc/playground-arg.rs +++ b/src/test/rustdoc/playground-arg.rs @@ -1,5 +1,4 @@ // compile-flags: --playground-url=https://example.com/ -Z unstable-options -// ignore-tidy-linelength #![crate_name = "foo"] diff --git a/src/test/rustdoc/playground.rs b/src/test/rustdoc/playground.rs index 9971c7b4297a..877ea1cfba15 100644 --- a/src/test/rustdoc/playground.rs +++ b/src/test/rustdoc/playground.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_name = "foo"] #![doc(html_playground_url = "https://www.example.com/")] diff --git a/src/test/rustdoc/primitive-link.rs b/src/test/rustdoc/primitive-link.rs index 3041ff77684c..dd455e45bfc2 100644 --- a/src/test/rustdoc/primitive-link.rs +++ b/src/test/rustdoc/primitive-link.rs @@ -1,6 +1,5 @@ #![crate_name = "foo"] -// ignore-tidy-linelength // @has foo/struct.Foo.html '//*[@class="docblock"]/p/a[@href="https://doc.rust-lang.org/nightly/std/primitive.u32.html"]' 'u32' // @has foo/struct.Foo.html '//*[@class="docblock"]/p/a[@href="https://doc.rust-lang.org/nightly/std/primitive.i64.html"]' 'i64' diff --git a/src/test/rustdoc/raw-ident-eliminate-r-hashtag.rs b/src/test/rustdoc/raw-ident-eliminate-r-hashtag.rs index f895a4c2104b..3ecf434c39e4 100644 --- a/src/test/rustdoc/raw-ident-eliminate-r-hashtag.rs +++ b/src/test/rustdoc/raw-ident-eliminate-r-hashtag.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_type="lib"] pub mod internal { diff --git a/src/test/rustdoc/smart-punct.rs b/src/test/rustdoc/smart-punct.rs index a1ca2699554e..5319892c99c2 100644 --- a/src/test/rustdoc/smart-punct.rs +++ b/src/test/rustdoc/smart-punct.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_name = "foo"] //! This is the "start" of the 'document'! How'd you know that "it's" the start? diff --git a/src/test/rustdoc/src-links-external.rs b/src/test/rustdoc/src-links-external.rs index 0469e4ad6247..8012e442213b 100644 --- a/src/test/rustdoc/src-links-external.rs +++ b/src/test/rustdoc/src-links-external.rs @@ -1,7 +1,6 @@ // aux-build:src-links-external.rs // build-aux-docs // ignore-cross-compile -// ignore-tidy-linelength #![crate_name = "foo"] diff --git a/src/test/rustdoc/struct-field.rs b/src/test/rustdoc/struct-field.rs index 532e29bc691c..974b863bb160 100644 --- a/src/test/rustdoc/struct-field.rs +++ b/src/test/rustdoc/struct-field.rs @@ -1,6 +1,5 @@ #![crate_name = "foo"] -// ignore-tidy-linelength // @has foo/index.html '//*[@class="docblock"]/p/a[@href="../foo/struct.Foo.html#structfield.bar"]' 'Foo::bar' // @has foo/index.html '//*[@class="docblock"]/p/a[@href="../foo/union.Bar.html#structfield.foo"]' 'Bar::foo' diff --git a/src/test/rustdoc/trait-attributes.rs b/src/test/rustdoc/trait-attributes.rs index a6ee046edec8..2a103509ae19 100644 --- a/src/test/rustdoc/trait-attributes.rs +++ b/src/test/rustdoc/trait-attributes.rs @@ -1,6 +1,5 @@ #![crate_name = "foo"] -// ignore-tidy-linelength pub trait Foo { // @has foo/trait.Foo.html '//h3[@id="tymethod.foo"]//span[@class="docblock attributes"]' '#[must_use]' diff --git a/src/test/ui/associated-type-bounds/ambiguous-associated-type2.rs b/src/test/ui/associated-type-bounds/ambiguous-associated-type2.rs index 1b6d6d0ff599..48de593342fa 100644 --- a/src/test/ui/associated-type-bounds/ambiguous-associated-type2.rs +++ b/src/test/ui/associated-type-bounds/ambiguous-associated-type2.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - trait Foo { type Item; } diff --git a/src/test/ui/associated-type-bounds/ambiguous-associated-type2.stderr b/src/test/ui/associated-type-bounds/ambiguous-associated-type2.stderr index bda1debeac0d..e72ef0e4b332 100644 --- a/src/test/ui/associated-type-bounds/ambiguous-associated-type2.stderr +++ b/src/test/ui/associated-type-bounds/ambiguous-associated-type2.stderr @@ -1,12 +1,12 @@ error[E0391]: cycle detected when computing the super traits of `Baz` with associated type name `Item` - --> $DIR/ambiguous-associated-type2.rs:9:1 + --> $DIR/ambiguous-associated-type2.rs:7:1 | LL | trait Baz: Foo + Bar {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: ...which again requires computing the super traits of `Baz` with associated type name `Item`, completing the cycle note: cycle used when computing the super traits of `Baz` - --> $DIR/ambiguous-associated-type2.rs:9:1 + --> $DIR/ambiguous-associated-type2.rs:7:1 | LL | trait Baz: Foo + Bar {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/associated-type-bounds/duplicate.full_tait.stderr b/src/test/ui/associated-type-bounds/duplicate.full_tait.stderr index bde2d034e254..bd3cac1f887b 100644 --- a/src/test/ui/associated-type-bounds/duplicate.full_tait.stderr +++ b/src/test/ui/associated-type-bounds/duplicate.full_tait.stderr @@ -1,5 +1,5 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/duplicate.rs:6:32 + --> $DIR/duplicate.rs:4:32 | LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ @@ -8,7 +8,7 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: see issue #63063 for more information warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/duplicate.rs:8:12 + --> $DIR/duplicate.rs:6:12 | LL | #![feature(impl_trait_in_bindings)] | ^^^^^^^^^^^^^^^^^^^^^^ @@ -16,7 +16,7 @@ LL | #![feature(impl_trait_in_bindings)] = note: see issue #63065 for more information error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:13:36 + --> $DIR/duplicate.rs:11:36 | LL | struct SI1> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -24,7 +24,7 @@ LL | struct SI1> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:15:36 + --> $DIR/duplicate.rs:13:36 | LL | struct SI2> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -32,7 +32,7 @@ LL | struct SI2> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:17:39 + --> $DIR/duplicate.rs:15:39 | LL | struct SI3> { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -40,7 +40,7 @@ LL | struct SI3> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:19:45 + --> $DIR/duplicate.rs:17:45 | LL | struct SW1 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -48,7 +48,7 @@ LL | struct SW1 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:21:45 + --> $DIR/duplicate.rs:19:45 | LL | struct SW2 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -56,7 +56,7 @@ LL | struct SW2 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:23:48 + --> $DIR/duplicate.rs:21:48 | LL | struct SW3 where T: Iterator { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -64,7 +64,7 @@ LL | struct SW3 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:26:34 + --> $DIR/duplicate.rs:24:34 | LL | enum EI1> { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -72,7 +72,7 @@ LL | enum EI1> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:28:34 + --> $DIR/duplicate.rs:26:34 | LL | enum EI2> { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -80,7 +80,7 @@ LL | enum EI2> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:30:37 + --> $DIR/duplicate.rs:28:37 | LL | enum EI3> { V(T) } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -88,7 +88,7 @@ LL | enum EI3> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:32:43 + --> $DIR/duplicate.rs:30:43 | LL | enum EW1 where T: Iterator { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -96,7 +96,7 @@ LL | enum EW1 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:34:43 + --> $DIR/duplicate.rs:32:43 | LL | enum EW2 where T: Iterator { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -104,7 +104,7 @@ LL | enum EW2 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:36:46 + --> $DIR/duplicate.rs:34:46 | LL | enum EW3 where T: Iterator { V(T) } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -112,7 +112,7 @@ LL | enum EW3 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:39:35 + --> $DIR/duplicate.rs:37:35 | LL | union UI1> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -120,7 +120,7 @@ LL | union UI1> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:41:35 + --> $DIR/duplicate.rs:39:35 | LL | union UI2> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -128,7 +128,7 @@ LL | union UI2> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:43:38 + --> $DIR/duplicate.rs:41:38 | LL | union UI3> { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -136,7 +136,7 @@ LL | union UI3> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:45:44 + --> $DIR/duplicate.rs:43:44 | LL | union UW1 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -144,7 +144,7 @@ LL | union UW1 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:47:44 + --> $DIR/duplicate.rs:45:44 | LL | union UW2 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -152,7 +152,7 @@ LL | union UW2 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:49:47 + --> $DIR/duplicate.rs:47:47 | LL | union UW3 where T: Iterator { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -160,7 +160,7 @@ LL | union UW3 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:52:32 + --> $DIR/duplicate.rs:50:32 | LL | fn FI1>() {} | ---------- ^^^^^^^^^^ re-bound here @@ -168,7 +168,7 @@ LL | fn FI1>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:54:32 + --> $DIR/duplicate.rs:52:32 | LL | fn FI2>() {} | ---------- ^^^^^^^^^^ re-bound here @@ -176,7 +176,7 @@ LL | fn FI2>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:56:35 + --> $DIR/duplicate.rs:54:35 | LL | fn FI3>() {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -184,7 +184,7 @@ LL | fn FI3>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:58:43 + --> $DIR/duplicate.rs:56:43 | LL | fn FW1() where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -192,7 +192,7 @@ LL | fn FW1() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:60:43 + --> $DIR/duplicate.rs:58:43 | LL | fn FW2() where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -200,7 +200,7 @@ LL | fn FW2() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:62:46 + --> $DIR/duplicate.rs:60:46 | LL | fn FW3() where T: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -208,7 +208,7 @@ LL | fn FW3() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:68:40 + --> $DIR/duplicate.rs:66:40 | LL | fn FAPIT1(_: impl Iterator) {} | ---------- ^^^^^^^^^^ re-bound here @@ -216,7 +216,7 @@ LL | fn FAPIT1(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:70:40 + --> $DIR/duplicate.rs:68:40 | LL | fn FAPIT2(_: impl Iterator) {} | ---------- ^^^^^^^^^^ re-bound here @@ -224,7 +224,7 @@ LL | fn FAPIT2(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:72:43 + --> $DIR/duplicate.rs:70:43 | LL | fn FAPIT3(_: impl Iterator) {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -232,7 +232,7 @@ LL | fn FAPIT3(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:75:39 + --> $DIR/duplicate.rs:73:39 | LL | const CIT1: impl Iterator = iter::empty(); | ---------- ^^^^^^^^^^ re-bound here @@ -240,7 +240,7 @@ LL | const CIT1: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:77:39 + --> $DIR/duplicate.rs:75:39 | LL | const CIT2: impl Iterator = iter::empty(); | ---------- ^^^^^^^^^^ re-bound here @@ -248,7 +248,7 @@ LL | const CIT2: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:79:42 + --> $DIR/duplicate.rs:77:42 | LL | const CIT3: impl Iterator = iter::empty(); | ------------- ^^^^^^^^^^^^^ re-bound here @@ -256,7 +256,7 @@ LL | const CIT3: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:81:40 + --> $DIR/duplicate.rs:79:40 | LL | static SIT1: impl Iterator = iter::empty(); | ---------- ^^^^^^^^^^ re-bound here @@ -264,7 +264,7 @@ LL | static SIT1: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:83:40 + --> $DIR/duplicate.rs:81:40 | LL | static SIT2: impl Iterator = iter::empty(); | ---------- ^^^^^^^^^^ re-bound here @@ -272,7 +272,7 @@ LL | static SIT2: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:85:43 + --> $DIR/duplicate.rs:83:43 | LL | static SIT3: impl Iterator = iter::empty(); | ------------- ^^^^^^^^^^^^^ re-bound here @@ -280,7 +280,7 @@ LL | static SIT3: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:88:46 + --> $DIR/duplicate.rs:86:46 | LL | fn lit1() { let _: impl Iterator = iter::empty(); } | ---------- ^^^^^^^^^^ re-bound here @@ -288,7 +288,7 @@ LL | fn lit1() { let _: impl Iterator = iter::empty(); } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:90:46 + --> $DIR/duplicate.rs:88:46 | LL | fn lit2() { let _: impl Iterator = iter::empty(); } | ---------- ^^^^^^^^^^ re-bound here @@ -296,7 +296,7 @@ LL | fn lit2() { let _: impl Iterator = iter::empty(); } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:92:49 + --> $DIR/duplicate.rs:90:49 | LL | fn lit3() { let _: impl Iterator = iter::empty(); } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -304,7 +304,7 @@ LL | fn lit3() { let _: impl Iterator = iter::empt | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:95:35 + --> $DIR/duplicate.rs:93:35 | LL | type TAI1> = T; | ---------- ^^^^^^^^^^ re-bound here @@ -312,7 +312,7 @@ LL | type TAI1> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:97:35 + --> $DIR/duplicate.rs:95:35 | LL | type TAI2> = T; | ---------- ^^^^^^^^^^ re-bound here @@ -320,7 +320,7 @@ LL | type TAI2> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:99:38 + --> $DIR/duplicate.rs:97:38 | LL | type TAI3> = T; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -328,7 +328,7 @@ LL | type TAI3> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:101:44 + --> $DIR/duplicate.rs:99:44 | LL | type TAW1 where T: Iterator = T; | ---------- ^^^^^^^^^^ re-bound here @@ -336,7 +336,7 @@ LL | type TAW1 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:103:44 + --> $DIR/duplicate.rs:101:44 | LL | type TAW2 where T: Iterator = T; | ---------- ^^^^^^^^^^ re-bound here @@ -344,7 +344,7 @@ LL | type TAW2 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:105:47 + --> $DIR/duplicate.rs:103:47 | LL | type TAW3 where T: Iterator = T; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -352,7 +352,7 @@ LL | type TAW3 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:108:36 + --> $DIR/duplicate.rs:106:36 | LL | type ETAI1> = impl Copy; | ---------- ^^^^^^^^^^ re-bound here @@ -360,7 +360,7 @@ LL | type ETAI1> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:110:36 + --> $DIR/duplicate.rs:108:36 | LL | type ETAI2> = impl Copy; | ---------- ^^^^^^^^^^ re-bound here @@ -368,7 +368,7 @@ LL | type ETAI2> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:112:39 + --> $DIR/duplicate.rs:110:39 | LL | type ETAI3> = impl Copy; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -376,7 +376,7 @@ LL | type ETAI3> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:114:40 + --> $DIR/duplicate.rs:112:40 | LL | type ETAI4 = impl Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -384,7 +384,7 @@ LL | type ETAI4 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:116:40 + --> $DIR/duplicate.rs:114:40 | LL | type ETAI5 = impl Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -392,7 +392,7 @@ LL | type ETAI5 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:118:43 + --> $DIR/duplicate.rs:116:43 | LL | type ETAI6 = impl Iterator; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -400,7 +400,7 @@ LL | type ETAI6 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:121:36 + --> $DIR/duplicate.rs:119:36 | LL | trait TRI1> {} | ---------- ^^^^^^^^^^ re-bound here @@ -408,7 +408,7 @@ LL | trait TRI1> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:123:36 + --> $DIR/duplicate.rs:121:36 | LL | trait TRI2> {} | ---------- ^^^^^^^^^^ re-bound here @@ -416,7 +416,7 @@ LL | trait TRI2> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:125:39 + --> $DIR/duplicate.rs:123:39 | LL | trait TRI3> {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -424,7 +424,7 @@ LL | trait TRI3> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:127:34 + --> $DIR/duplicate.rs:125:34 | LL | trait TRS1: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -432,7 +432,7 @@ LL | trait TRS1: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:129:34 + --> $DIR/duplicate.rs:127:34 | LL | trait TRS2: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -440,7 +440,7 @@ LL | trait TRS2: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:131:37 + --> $DIR/duplicate.rs:129:37 | LL | trait TRS3: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -448,7 +448,7 @@ LL | trait TRS3: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:133:45 + --> $DIR/duplicate.rs:131:45 | LL | trait TRW1 where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -456,7 +456,7 @@ LL | trait TRW1 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:135:45 + --> $DIR/duplicate.rs:133:45 | LL | trait TRW2 where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -464,7 +464,7 @@ LL | trait TRW2 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:137:48 + --> $DIR/duplicate.rs:135:48 | LL | trait TRW3 where T: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -472,7 +472,7 @@ LL | trait TRW3 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:139:46 + --> $DIR/duplicate.rs:137:46 | LL | trait TRSW1 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -480,7 +480,7 @@ LL | trait TRSW1 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:139:46 + --> $DIR/duplicate.rs:137:46 | LL | trait TRSW1 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -488,7 +488,7 @@ LL | trait TRSW1 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:142:46 + --> $DIR/duplicate.rs:140:46 | LL | trait TRSW2 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -496,7 +496,7 @@ LL | trait TRSW2 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:142:46 + --> $DIR/duplicate.rs:140:46 | LL | trait TRSW2 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -504,7 +504,7 @@ LL | trait TRSW2 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:145:49 + --> $DIR/duplicate.rs:143:49 | LL | trait TRSW3 where Self: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -512,7 +512,7 @@ LL | trait TRSW3 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:145:49 + --> $DIR/duplicate.rs:143:49 | LL | trait TRSW3 where Self: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -520,7 +520,7 @@ LL | trait TRSW3 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:155:40 + --> $DIR/duplicate.rs:153:40 | LL | type TADyn1 = dyn Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -528,7 +528,7 @@ LL | type TADyn1 = dyn Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:157:44 + --> $DIR/duplicate.rs:155:44 | LL | type TADyn2 = Box>; | ---------- ^^^^^^^^^^ re-bound here @@ -536,7 +536,7 @@ LL | type TADyn2 = Box>; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:159:43 + --> $DIR/duplicate.rs:157:43 | LL | type TADyn3 = dyn Iterator; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -544,7 +544,7 @@ LL | type TADyn3 = dyn Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:148:43 + --> $DIR/duplicate.rs:146:43 | LL | trait TRA1 { type A: Iterator; } | ---------- ^^^^^^^^^^ re-bound here @@ -552,7 +552,7 @@ LL | trait TRA1 { type A: Iterator; } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:150:43 + --> $DIR/duplicate.rs:148:43 | LL | trait TRA2 { type A: Iterator; } | ---------- ^^^^^^^^^^ re-bound here @@ -560,7 +560,7 @@ LL | trait TRA2 { type A: Iterator; } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:152:46 + --> $DIR/duplicate.rs:150:46 | LL | trait TRA3 { type A: Iterator; } | ------------- ^^^^^^^^^^^^^ re-bound here diff --git a/src/test/ui/associated-type-bounds/duplicate.min_tait.stderr b/src/test/ui/associated-type-bounds/duplicate.min_tait.stderr index cc775dee4a2f..500e527a0188 100644 --- a/src/test/ui/associated-type-bounds/duplicate.min_tait.stderr +++ b/src/test/ui/associated-type-bounds/duplicate.min_tait.stderr @@ -1,5 +1,5 @@ warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/duplicate.rs:8:12 + --> $DIR/duplicate.rs:6:12 | LL | #![feature(impl_trait_in_bindings)] | ^^^^^^^^^^^^^^^^^^^^^^ @@ -8,7 +8,7 @@ LL | #![feature(impl_trait_in_bindings)] = note: see issue #63065 for more information error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:13:36 + --> $DIR/duplicate.rs:11:36 | LL | struct SI1> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -16,7 +16,7 @@ LL | struct SI1> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:15:36 + --> $DIR/duplicate.rs:13:36 | LL | struct SI2> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -24,7 +24,7 @@ LL | struct SI2> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:17:39 + --> $DIR/duplicate.rs:15:39 | LL | struct SI3> { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -32,7 +32,7 @@ LL | struct SI3> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:19:45 + --> $DIR/duplicate.rs:17:45 | LL | struct SW1 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -40,7 +40,7 @@ LL | struct SW1 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:21:45 + --> $DIR/duplicate.rs:19:45 | LL | struct SW2 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -48,7 +48,7 @@ LL | struct SW2 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:23:48 + --> $DIR/duplicate.rs:21:48 | LL | struct SW3 where T: Iterator { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -56,7 +56,7 @@ LL | struct SW3 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:26:34 + --> $DIR/duplicate.rs:24:34 | LL | enum EI1> { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -64,7 +64,7 @@ LL | enum EI1> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:28:34 + --> $DIR/duplicate.rs:26:34 | LL | enum EI2> { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -72,7 +72,7 @@ LL | enum EI2> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:30:37 + --> $DIR/duplicate.rs:28:37 | LL | enum EI3> { V(T) } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -80,7 +80,7 @@ LL | enum EI3> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:32:43 + --> $DIR/duplicate.rs:30:43 | LL | enum EW1 where T: Iterator { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -88,7 +88,7 @@ LL | enum EW1 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:34:43 + --> $DIR/duplicate.rs:32:43 | LL | enum EW2 where T: Iterator { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -96,7 +96,7 @@ LL | enum EW2 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:36:46 + --> $DIR/duplicate.rs:34:46 | LL | enum EW3 where T: Iterator { V(T) } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -104,7 +104,7 @@ LL | enum EW3 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:39:35 + --> $DIR/duplicate.rs:37:35 | LL | union UI1> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -112,7 +112,7 @@ LL | union UI1> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:41:35 + --> $DIR/duplicate.rs:39:35 | LL | union UI2> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -120,7 +120,7 @@ LL | union UI2> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:43:38 + --> $DIR/duplicate.rs:41:38 | LL | union UI3> { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -128,7 +128,7 @@ LL | union UI3> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:45:44 + --> $DIR/duplicate.rs:43:44 | LL | union UW1 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -136,7 +136,7 @@ LL | union UW1 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:47:44 + --> $DIR/duplicate.rs:45:44 | LL | union UW2 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -144,7 +144,7 @@ LL | union UW2 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:49:47 + --> $DIR/duplicate.rs:47:47 | LL | union UW3 where T: Iterator { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -152,7 +152,7 @@ LL | union UW3 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:52:32 + --> $DIR/duplicate.rs:50:32 | LL | fn FI1>() {} | ---------- ^^^^^^^^^^ re-bound here @@ -160,7 +160,7 @@ LL | fn FI1>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:54:32 + --> $DIR/duplicate.rs:52:32 | LL | fn FI2>() {} | ---------- ^^^^^^^^^^ re-bound here @@ -168,7 +168,7 @@ LL | fn FI2>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:56:35 + --> $DIR/duplicate.rs:54:35 | LL | fn FI3>() {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -176,7 +176,7 @@ LL | fn FI3>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:58:43 + --> $DIR/duplicate.rs:56:43 | LL | fn FW1() where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -184,7 +184,7 @@ LL | fn FW1() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:60:43 + --> $DIR/duplicate.rs:58:43 | LL | fn FW2() where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -192,7 +192,7 @@ LL | fn FW2() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:62:46 + --> $DIR/duplicate.rs:60:46 | LL | fn FW3() where T: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -200,7 +200,7 @@ LL | fn FW3() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:68:40 + --> $DIR/duplicate.rs:66:40 | LL | fn FAPIT1(_: impl Iterator) {} | ---------- ^^^^^^^^^^ re-bound here @@ -208,7 +208,7 @@ LL | fn FAPIT1(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:70:40 + --> $DIR/duplicate.rs:68:40 | LL | fn FAPIT2(_: impl Iterator) {} | ---------- ^^^^^^^^^^ re-bound here @@ -216,7 +216,7 @@ LL | fn FAPIT2(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:72:43 + --> $DIR/duplicate.rs:70:43 | LL | fn FAPIT3(_: impl Iterator) {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -224,7 +224,7 @@ LL | fn FAPIT3(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:75:39 + --> $DIR/duplicate.rs:73:39 | LL | const CIT1: impl Iterator = iter::empty(); | ---------- ^^^^^^^^^^ re-bound here @@ -232,7 +232,7 @@ LL | const CIT1: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:77:39 + --> $DIR/duplicate.rs:75:39 | LL | const CIT2: impl Iterator = iter::empty(); | ---------- ^^^^^^^^^^ re-bound here @@ -240,7 +240,7 @@ LL | const CIT2: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:79:42 + --> $DIR/duplicate.rs:77:42 | LL | const CIT3: impl Iterator = iter::empty(); | ------------- ^^^^^^^^^^^^^ re-bound here @@ -248,7 +248,7 @@ LL | const CIT3: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:81:40 + --> $DIR/duplicate.rs:79:40 | LL | static SIT1: impl Iterator = iter::empty(); | ---------- ^^^^^^^^^^ re-bound here @@ -256,7 +256,7 @@ LL | static SIT1: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:83:40 + --> $DIR/duplicate.rs:81:40 | LL | static SIT2: impl Iterator = iter::empty(); | ---------- ^^^^^^^^^^ re-bound here @@ -264,7 +264,7 @@ LL | static SIT2: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:85:43 + --> $DIR/duplicate.rs:83:43 | LL | static SIT3: impl Iterator = iter::empty(); | ------------- ^^^^^^^^^^^^^ re-bound here @@ -272,7 +272,7 @@ LL | static SIT3: impl Iterator = iter::empty(); | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:88:46 + --> $DIR/duplicate.rs:86:46 | LL | fn lit1() { let _: impl Iterator = iter::empty(); } | ---------- ^^^^^^^^^^ re-bound here @@ -280,7 +280,7 @@ LL | fn lit1() { let _: impl Iterator = iter::empty(); } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:90:46 + --> $DIR/duplicate.rs:88:46 | LL | fn lit2() { let _: impl Iterator = iter::empty(); } | ---------- ^^^^^^^^^^ re-bound here @@ -288,7 +288,7 @@ LL | fn lit2() { let _: impl Iterator = iter::empty(); } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:92:49 + --> $DIR/duplicate.rs:90:49 | LL | fn lit3() { let _: impl Iterator = iter::empty(); } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -296,7 +296,7 @@ LL | fn lit3() { let _: impl Iterator = iter::empt | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:95:35 + --> $DIR/duplicate.rs:93:35 | LL | type TAI1> = T; | ---------- ^^^^^^^^^^ re-bound here @@ -304,7 +304,7 @@ LL | type TAI1> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:97:35 + --> $DIR/duplicate.rs:95:35 | LL | type TAI2> = T; | ---------- ^^^^^^^^^^ re-bound here @@ -312,7 +312,7 @@ LL | type TAI2> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:99:38 + --> $DIR/duplicate.rs:97:38 | LL | type TAI3> = T; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -320,7 +320,7 @@ LL | type TAI3> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:101:44 + --> $DIR/duplicate.rs:99:44 | LL | type TAW1 where T: Iterator = T; | ---------- ^^^^^^^^^^ re-bound here @@ -328,7 +328,7 @@ LL | type TAW1 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:103:44 + --> $DIR/duplicate.rs:101:44 | LL | type TAW2 where T: Iterator = T; | ---------- ^^^^^^^^^^ re-bound here @@ -336,7 +336,7 @@ LL | type TAW2 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:105:47 + --> $DIR/duplicate.rs:103:47 | LL | type TAW3 where T: Iterator = T; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -344,7 +344,7 @@ LL | type TAW3 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:108:36 + --> $DIR/duplicate.rs:106:36 | LL | type ETAI1> = impl Copy; | ---------- ^^^^^^^^^^ re-bound here @@ -352,7 +352,7 @@ LL | type ETAI1> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:110:36 + --> $DIR/duplicate.rs:108:36 | LL | type ETAI2> = impl Copy; | ---------- ^^^^^^^^^^ re-bound here @@ -360,7 +360,7 @@ LL | type ETAI2> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:112:39 + --> $DIR/duplicate.rs:110:39 | LL | type ETAI3> = impl Copy; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -368,7 +368,7 @@ LL | type ETAI3> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:114:40 + --> $DIR/duplicate.rs:112:40 | LL | type ETAI4 = impl Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -376,7 +376,7 @@ LL | type ETAI4 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:116:40 + --> $DIR/duplicate.rs:114:40 | LL | type ETAI5 = impl Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -384,7 +384,7 @@ LL | type ETAI5 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:118:43 + --> $DIR/duplicate.rs:116:43 | LL | type ETAI6 = impl Iterator; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -392,7 +392,7 @@ LL | type ETAI6 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:121:36 + --> $DIR/duplicate.rs:119:36 | LL | trait TRI1> {} | ---------- ^^^^^^^^^^ re-bound here @@ -400,7 +400,7 @@ LL | trait TRI1> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:123:36 + --> $DIR/duplicate.rs:121:36 | LL | trait TRI2> {} | ---------- ^^^^^^^^^^ re-bound here @@ -408,7 +408,7 @@ LL | trait TRI2> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:125:39 + --> $DIR/duplicate.rs:123:39 | LL | trait TRI3> {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -416,7 +416,7 @@ LL | trait TRI3> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:127:34 + --> $DIR/duplicate.rs:125:34 | LL | trait TRS1: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -424,7 +424,7 @@ LL | trait TRS1: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:129:34 + --> $DIR/duplicate.rs:127:34 | LL | trait TRS2: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -432,7 +432,7 @@ LL | trait TRS2: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:131:37 + --> $DIR/duplicate.rs:129:37 | LL | trait TRS3: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -440,7 +440,7 @@ LL | trait TRS3: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:133:45 + --> $DIR/duplicate.rs:131:45 | LL | trait TRW1 where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -448,7 +448,7 @@ LL | trait TRW1 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:135:45 + --> $DIR/duplicate.rs:133:45 | LL | trait TRW2 where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -456,7 +456,7 @@ LL | trait TRW2 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:137:48 + --> $DIR/duplicate.rs:135:48 | LL | trait TRW3 where T: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -464,7 +464,7 @@ LL | trait TRW3 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:139:46 + --> $DIR/duplicate.rs:137:46 | LL | trait TRSW1 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -472,7 +472,7 @@ LL | trait TRSW1 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:139:46 + --> $DIR/duplicate.rs:137:46 | LL | trait TRSW1 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -480,7 +480,7 @@ LL | trait TRSW1 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:142:46 + --> $DIR/duplicate.rs:140:46 | LL | trait TRSW2 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -488,7 +488,7 @@ LL | trait TRSW2 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:142:46 + --> $DIR/duplicate.rs:140:46 | LL | trait TRSW2 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -496,7 +496,7 @@ LL | trait TRSW2 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:145:49 + --> $DIR/duplicate.rs:143:49 | LL | trait TRSW3 where Self: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -504,7 +504,7 @@ LL | trait TRSW3 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:145:49 + --> $DIR/duplicate.rs:143:49 | LL | trait TRSW3 where Self: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -512,7 +512,7 @@ LL | trait TRSW3 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:155:40 + --> $DIR/duplicate.rs:153:40 | LL | type TADyn1 = dyn Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -520,7 +520,7 @@ LL | type TADyn1 = dyn Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:157:44 + --> $DIR/duplicate.rs:155:44 | LL | type TADyn2 = Box>; | ---------- ^^^^^^^^^^ re-bound here @@ -528,7 +528,7 @@ LL | type TADyn2 = Box>; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:159:43 + --> $DIR/duplicate.rs:157:43 | LL | type TADyn3 = dyn Iterator; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -536,7 +536,7 @@ LL | type TADyn3 = dyn Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:148:43 + --> $DIR/duplicate.rs:146:43 | LL | trait TRA1 { type A: Iterator; } | ---------- ^^^^^^^^^^ re-bound here @@ -544,7 +544,7 @@ LL | trait TRA1 { type A: Iterator; } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:150:43 + --> $DIR/duplicate.rs:148:43 | LL | trait TRA2 { type A: Iterator; } | ---------- ^^^^^^^^^^ re-bound here @@ -552,7 +552,7 @@ LL | trait TRA2 { type A: Iterator; } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:152:46 + --> $DIR/duplicate.rs:150:46 | LL | trait TRA3 { type A: Iterator; } | ------------- ^^^^^^^^^^^^^ re-bound here diff --git a/src/test/ui/associated-type-bounds/duplicate.rs b/src/test/ui/associated-type-bounds/duplicate.rs index a7bbeaf38e74..c3319a7050d5 100644 --- a/src/test/ui/associated-type-bounds/duplicate.rs +++ b/src/test/ui/associated-type-bounds/duplicate.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![feature(associated_type_bounds)] // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] diff --git a/src/test/ui/async-await/issue-61949-self-return-type.rs b/src/test/ui/async-await/issue-61949-self-return-type.rs index 6a28c69193da..43429ba2329f 100644 --- a/src/test/ui/async-await/issue-61949-self-return-type.rs +++ b/src/test/ui/async-await/issue-61949-self-return-type.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // edition:2018 // This test checks that `Self` is prohibited as a return type. See #61949 for context. diff --git a/src/test/ui/async-await/issue-61949-self-return-type.stderr b/src/test/ui/async-await/issue-61949-self-return-type.stderr index 4eeef871c5bf..52b726e186e3 100644 --- a/src/test/ui/async-await/issue-61949-self-return-type.stderr +++ b/src/test/ui/async-await/issue-61949-self-return-type.stderr @@ -1,5 +1,5 @@ error[E0760]: `async fn` return type cannot contain a projection or `Self` that references lifetimes from a parent scope - --> $DIR/issue-61949-self-return-type.rs:11:40 + --> $DIR/issue-61949-self-return-type.rs:10:40 | LL | pub async fn new(_bar: &'a i32) -> Self { | ^^^^ help: consider spelling out the type instead: `Foo<'a>` diff --git a/src/test/ui/borrowck/borrowck-describe-lvalue.rs b/src/test/ui/borrowck/borrowck-describe-lvalue.rs index c8bfbe0729c5..0e6c0635adb4 100644 --- a/src/test/ui/borrowck/borrowck-describe-lvalue.rs +++ b/src/test/ui/borrowck/borrowck-describe-lvalue.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - pub struct Foo { x: u32 } diff --git a/src/test/ui/borrowck/borrowck-describe-lvalue.stderr b/src/test/ui/borrowck/borrowck-describe-lvalue.stderr index e386aa1f1f4d..0f2ebbcbf3cd 100644 --- a/src/test/ui/borrowck/borrowck-describe-lvalue.stderr +++ b/src/test/ui/borrowck/borrowck-describe-lvalue.stderr @@ -1,5 +1,5 @@ error[E0499]: cannot borrow `x` as mutable more than once at a time - --> $DIR/borrowck-describe-lvalue.rs:256:13 + --> $DIR/borrowck-describe-lvalue.rs:254:13 | LL | let y = &mut x; | ------ first mutable borrow occurs here @@ -9,7 +9,7 @@ LL | *y = 1; | ------ first borrow later used here error[E0499]: cannot borrow `x` as mutable more than once at a time - --> $DIR/borrowck-describe-lvalue.rs:266:20 + --> $DIR/borrowck-describe-lvalue.rs:264:20 | LL | let y = &mut x; | ------ first mutable borrow occurs here @@ -19,7 +19,7 @@ LL | *y = 1; | ------ first borrow later used here error: captured variable cannot escape `FnMut` closure body - --> $DIR/borrowck-describe-lvalue.rs:264:16 + --> $DIR/borrowck-describe-lvalue.rs:262:16 | LL | let mut x = 0; | ----- variable defined here @@ -38,7 +38,7 @@ LL | | } = note: ...therefore, they cannot allow references to captured variables to escape error[E0503]: cannot use `f.x` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:39:9 + --> $DIR/borrowck-describe-lvalue.rs:37:9 | LL | let x = f.x(); | - borrow of `f` occurs here @@ -48,7 +48,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `g.0` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:46:9 + --> $DIR/borrowck-describe-lvalue.rs:44:9 | LL | let x = g.x(); | - borrow of `g` occurs here @@ -58,7 +58,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `h.0` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:53:9 + --> $DIR/borrowck-describe-lvalue.rs:51:9 | LL | let x = &mut h.0; | -------- borrow of `h.0` occurs here @@ -68,7 +68,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `e.0` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:61:20 + --> $DIR/borrowck-describe-lvalue.rs:59:20 | LL | let x = e.x(); | - borrow of `e` occurs here @@ -80,7 +80,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `u.a` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:69:9 + --> $DIR/borrowck-describe-lvalue.rs:67:9 | LL | let x = &mut u.a; | -------- borrow of `u.a` occurs here @@ -90,7 +90,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `f.x` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:76:9 + --> $DIR/borrowck-describe-lvalue.rs:74:9 | LL | let x = f.x(); | - borrow of `*f` occurs here @@ -100,7 +100,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `g.0` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:83:9 + --> $DIR/borrowck-describe-lvalue.rs:81:9 | LL | let x = g.x(); | - borrow of `*g` occurs here @@ -110,7 +110,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `h.0` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:90:9 + --> $DIR/borrowck-describe-lvalue.rs:88:9 | LL | let x = &mut h.0; | -------- borrow of `h.0` occurs here @@ -120,7 +120,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `e.0` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:98:20 + --> $DIR/borrowck-describe-lvalue.rs:96:20 | LL | let x = e.x(); | - borrow of `*e` occurs here @@ -132,7 +132,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `u.a` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:107:9 + --> $DIR/borrowck-describe-lvalue.rs:105:9 | LL | let x = &mut u.a; | -------- borrow of `u.a` occurs here @@ -142,7 +142,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[..]` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:115:15 + --> $DIR/borrowck-describe-lvalue.rs:113:15 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -154,7 +154,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[..]` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:120:18 + --> $DIR/borrowck-describe-lvalue.rs:118:18 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -166,7 +166,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[..]` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:125:25 + --> $DIR/borrowck-describe-lvalue.rs:123:25 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -178,7 +178,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[..]` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:130:28 + --> $DIR/borrowck-describe-lvalue.rs:128:28 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -190,7 +190,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[..]` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:141:15 + --> $DIR/borrowck-describe-lvalue.rs:139:15 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -202,7 +202,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[..]` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:146:18 + --> $DIR/borrowck-describe-lvalue.rs:144:18 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -214,7 +214,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[..]` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:151:15 + --> $DIR/borrowck-describe-lvalue.rs:149:15 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -226,7 +226,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[..]` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:156:18 + --> $DIR/borrowck-describe-lvalue.rs:154:18 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -238,7 +238,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `e` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:169:13 + --> $DIR/borrowck-describe-lvalue.rs:167:13 | LL | let x = &mut e; | ------ borrow of `e` occurs here @@ -250,7 +250,7 @@ LL | drop(x); | - borrow later used here error[E0502]: cannot borrow `e.0` as immutable because it is also borrowed as mutable - --> $DIR/borrowck-describe-lvalue.rs:169:18 + --> $DIR/borrowck-describe-lvalue.rs:167:18 | LL | let x = &mut e; | ------ mutable borrow occurs here @@ -262,7 +262,7 @@ LL | drop(x); | - mutable borrow later used here error[E0502]: cannot borrow `e.x` as immutable because it is also borrowed as mutable - --> $DIR/borrowck-describe-lvalue.rs:173:23 + --> $DIR/borrowck-describe-lvalue.rs:171:23 | LL | let x = &mut e; | ------ mutable borrow occurs here @@ -274,7 +274,7 @@ LL | drop(x); | - mutable borrow later used here error[E0502]: cannot borrow `s.y.0` as immutable because it is also borrowed as mutable - --> $DIR/borrowck-describe-lvalue.rs:186:22 + --> $DIR/borrowck-describe-lvalue.rs:184:22 | LL | let x = &mut s; | ------ mutable borrow occurs here @@ -286,7 +286,7 @@ LL | drop(x); | - mutable borrow later used here error[E0502]: cannot borrow `s.x.y` as immutable because it is also borrowed as mutable - --> $DIR/borrowck-describe-lvalue.rs:192:28 + --> $DIR/borrowck-describe-lvalue.rs:190:28 | LL | let x = &mut s; | ------ mutable borrow occurs here @@ -298,7 +298,7 @@ LL | drop(x); | - mutable borrow later used here error[E0503]: cannot use `*v` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:234:9 + --> $DIR/borrowck-describe-lvalue.rs:232:9 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -309,7 +309,7 @@ LL | drop(x); | - borrow later used here error[E0503]: cannot use `v[_].y` because it was mutably borrowed - --> $DIR/borrowck-describe-lvalue.rs:234:9 + --> $DIR/borrowck-describe-lvalue.rs:232:9 | LL | let x = &mut v; | ------ borrow of `v` occurs here @@ -320,7 +320,7 @@ LL | drop(x); | - borrow later used here error[E0502]: cannot borrow `v[..].x` as immutable because it is also borrowed as mutable - --> $DIR/borrowck-describe-lvalue.rs:245:24 + --> $DIR/borrowck-describe-lvalue.rs:243:24 | LL | let x = &mut v; | ------ mutable borrow occurs here @@ -332,7 +332,7 @@ LL | drop(x); | - mutable borrow later used here error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable - --> $DIR/borrowck-describe-lvalue.rs:208:29 + --> $DIR/borrowck-describe-lvalue.rs:206:29 | LL | let x = &mut block; | ---------- mutable borrow occurs here @@ -343,7 +343,7 @@ LL | drop(x); | - mutable borrow later used here error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable - --> $DIR/borrowck-describe-lvalue.rs:223:33 + --> $DIR/borrowck-describe-lvalue.rs:221:33 | LL | let x = &mut block; | ---------- mutable borrow occurs here @@ -354,7 +354,7 @@ LL | drop(x); | - mutable borrow later used here error[E0382]: use of moved value: `x` - --> $DIR/borrowck-describe-lvalue.rs:276:22 + --> $DIR/borrowck-describe-lvalue.rs:274:22 | LL | drop(x); | - value moved here diff --git a/src/test/ui/borrowck/borrowck-union-borrow.rs b/src/test/ui/borrowck/borrowck-union-borrow.rs index 63901680bd15..f01915398a41 100644 --- a/src/test/ui/borrowck/borrowck-union-borrow.rs +++ b/src/test/ui/borrowck/borrowck-union-borrow.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #[derive(Clone, Copy)] union U { a: u8, diff --git a/src/test/ui/borrowck/borrowck-union-borrow.stderr b/src/test/ui/borrowck/borrowck-union-borrow.stderr index ca10e299c585..395cd0b4855a 100644 --- a/src/test/ui/borrowck/borrowck-union-borrow.stderr +++ b/src/test/ui/borrowck/borrowck-union-borrow.stderr @@ -1,5 +1,5 @@ error[E0502]: cannot borrow `u.a` as mutable because it is also borrowed as immutable - --> $DIR/borrowck-union-borrow.rs:25:23 + --> $DIR/borrowck-union-borrow.rs:23:23 | LL | let ra = &u.a; | ---- immutable borrow occurs here @@ -9,7 +9,7 @@ LL | drop(ra); | -- immutable borrow later used here error[E0506]: cannot assign to `u.a` because it is borrowed - --> $DIR/borrowck-union-borrow.rs:30:13 + --> $DIR/borrowck-union-borrow.rs:28:13 | LL | let ra = &u.a; | ---- borrow of `u.a` occurs here @@ -19,7 +19,7 @@ LL | drop(ra); | -- borrow later used here error[E0502]: cannot borrow `u` (via `u.b`) as mutable because it is also borrowed as immutable (via `u.a`) - --> $DIR/borrowck-union-borrow.rs:46:23 + --> $DIR/borrowck-union-borrow.rs:44:23 | LL | let ra = &u.a; | ---- immutable borrow occurs here (via `u.a`) @@ -31,7 +31,7 @@ LL | drop(ra); = note: `u.b` is a field of the union `U`, so it overlaps the field `u.a` error[E0506]: cannot assign to `u.b` because it is borrowed - --> $DIR/borrowck-union-borrow.rs:51:13 + --> $DIR/borrowck-union-borrow.rs:49:13 | LL | let ra = &u.a; | ---- borrow of `u.b` occurs here @@ -41,7 +41,7 @@ LL | drop(ra); | -- borrow later used here error[E0502]: cannot borrow `u.a` as immutable because it is also borrowed as mutable - --> $DIR/borrowck-union-borrow.rs:57:22 + --> $DIR/borrowck-union-borrow.rs:55:22 | LL | let rma = &mut u.a; | -------- mutable borrow occurs here @@ -51,7 +51,7 @@ LL | drop(rma); | --- mutable borrow later used here error[E0503]: cannot use `u.a` because it was mutably borrowed - --> $DIR/borrowck-union-borrow.rs:62:21 + --> $DIR/borrowck-union-borrow.rs:60:21 | LL | let ra = &mut u.a; | -------- borrow of `u.a` occurs here @@ -61,7 +61,7 @@ LL | drop(ra); | -- borrow later used here error[E0499]: cannot borrow `u.a` as mutable more than once at a time - --> $DIR/borrowck-union-borrow.rs:67:24 + --> $DIR/borrowck-union-borrow.rs:65:24 | LL | let rma = &mut u.a; | -------- first mutable borrow occurs here @@ -71,7 +71,7 @@ LL | drop(rma); | --- first borrow later used here error[E0506]: cannot assign to `u.a` because it is borrowed - --> $DIR/borrowck-union-borrow.rs:72:13 + --> $DIR/borrowck-union-borrow.rs:70:13 | LL | let rma = &mut u.a; | -------- borrow of `u.a` occurs here @@ -81,7 +81,7 @@ LL | drop(rma); | --- borrow later used here error[E0502]: cannot borrow `u` (via `u.b`) as immutable because it is also borrowed as mutable (via `u.a`) - --> $DIR/borrowck-union-borrow.rs:78:22 + --> $DIR/borrowck-union-borrow.rs:76:22 | LL | let rma = &mut u.a; | -------- mutable borrow occurs here (via `u.a`) @@ -93,7 +93,7 @@ LL | drop(rma); = note: `u.b` is a field of the union `U`, so it overlaps the field `u.a` error[E0503]: cannot use `u.b` because it was mutably borrowed - --> $DIR/borrowck-union-borrow.rs:83:21 + --> $DIR/borrowck-union-borrow.rs:81:21 | LL | let ra = &mut u.a; | -------- borrow of `u.a` occurs here @@ -104,7 +104,7 @@ LL | drop(ra); | -- borrow later used here error[E0499]: cannot borrow `u` (via `u.b`) as mutable more than once at a time - --> $DIR/borrowck-union-borrow.rs:89:24 + --> $DIR/borrowck-union-borrow.rs:87:24 | LL | let rma = &mut u.a; | -------- first mutable borrow occurs here (via `u.a`) @@ -116,7 +116,7 @@ LL | drop(rma); = note: `u.b` is a field of the union `U`, so it overlaps the field `u.a` error[E0506]: cannot assign to `u.b` because it is borrowed - --> $DIR/borrowck-union-borrow.rs:94:13 + --> $DIR/borrowck-union-borrow.rs:92:13 | LL | let rma = &mut u.a; | -------- borrow of `u.b` occurs here diff --git a/src/test/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr b/src/test/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr index 9f31c3f87c37..bba3393fc140 100644 --- a/src/test/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr +++ b/src/test/ui/borrowck/two-phase-allow-access-during-reservation.nll_target.stderr @@ -1,5 +1,5 @@ error[E0503]: cannot use `i` because it was mutably borrowed - --> $DIR/two-phase-allow-access-during-reservation.rs:30:19 + --> $DIR/two-phase-allow-access-during-reservation.rs:28:19 | LL | /*1*/ let p = &mut i; // (reservation of `i` starts here) | ------ borrow of `i` occurs here @@ -11,7 +11,7 @@ LL | /*3*/ *p += 1; // (mutable borrow of `i` starts here, since `p` | ------- borrow later used here error[E0503]: cannot use `i` because it was mutably borrowed - --> $DIR/two-phase-allow-access-during-reservation.rs:35:19 + --> $DIR/two-phase-allow-access-during-reservation.rs:33:19 | LL | /*1*/ let p = &mut i; // (reservation of `i` starts here) | ------ borrow of `i` occurs here diff --git a/src/test/ui/borrowck/two-phase-allow-access-during-reservation.rs b/src/test/ui/borrowck/two-phase-allow-access-during-reservation.rs index 07169afefc98..3afa679ce390 100644 --- a/src/test/ui/borrowck/two-phase-allow-access-during-reservation.rs +++ b/src/test/ui/borrowck/two-phase-allow-access-during-reservation.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // revisions: nll_target // The following revisions are disabled due to missing support for two_phase_beyond_autoref diff --git a/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr b/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr index 7b64d9d40028..2cbdc0901bc5 100644 --- a/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr +++ b/src/test/ui/borrowck/two-phase-reservation-sharing-interference.nll_target.stderr @@ -1,5 +1,5 @@ error[E0502]: cannot borrow `vec` as mutable because it is also borrowed as immutable - --> $DIR/two-phase-reservation-sharing-interference.rs:36:17 + --> $DIR/two-phase-reservation-sharing-interference.rs:34:17 | LL | let shared = &vec; | ---- immutable borrow occurs here diff --git a/src/test/ui/borrowck/two-phase-reservation-sharing-interference.rs b/src/test/ui/borrowck/two-phase-reservation-sharing-interference.rs index de6f66c1c3f9..f7392bfeaab3 100644 --- a/src/test/ui/borrowck/two-phase-reservation-sharing-interference.rs +++ b/src/test/ui/borrowck/two-phase-reservation-sharing-interference.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // revisions: nll_target // The following revisions are disabled due to missing support from two-phase beyond autorefs diff --git a/src/test/ui/commandline-argfile-missing.rs b/src/test/ui/commandline-argfile-missing.rs index 020c3ff3c7e6..5a6465bd0646 100644 --- a/src/test/ui/commandline-argfile-missing.rs +++ b/src/test/ui/commandline-argfile-missing.rs @@ -1,6 +1,5 @@ // Check to see if we can get parameters from an @argsfile file // -// ignore-tidy-linelength // normalize-stderr-test: "os error \d+" -> "os error $$ERR" // normalize-stderr-test: "commandline-argfile-missing.args:[^(]*" -> "commandline-argfile-missing.args: $$FILE_MISSING " // compile-flags: --cfg cmdline_set @{{src-base}}/commandline-argfile-missing.args diff --git a/src/test/ui/consts/issue-32829-2.rs b/src/test/ui/consts/issue-32829-2.rs index c93c84b5fb77..e0fcf2783309 100644 --- a/src/test/ui/consts/issue-32829-2.rs +++ b/src/test/ui/consts/issue-32829-2.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - const bad : u32 = { { 5; diff --git a/src/test/ui/consts/issue-32829-2.stderr b/src/test/ui/consts/issue-32829-2.stderr index 8d7423f29ae9..1d265875c5c9 100644 --- a/src/test/ui/consts/issue-32829-2.stderr +++ b/src/test/ui/consts/issue-32829-2.stderr @@ -1,17 +1,17 @@ error[E0015]: calls in constants are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:12:9 + --> $DIR/issue-32829-2.rs:10:9 | LL | invalid(); | ^^^^^^^^^ error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:34:9 + --> $DIR/issue-32829-2.rs:32:9 | LL | invalid(); | ^^^^^^^^^ error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:56:9 + --> $DIR/issue-32829-2.rs:54:9 | LL | invalid(); | ^^^^^^^^^ diff --git a/src/test/ui/consts/offset_ub.rs b/src/test/ui/consts/offset_ub.rs index 4f943ed9ad19..7ce45ba9c4b2 100644 --- a/src/test/ui/consts/offset_ub.rs +++ b/src/test/ui/consts/offset_ub.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![feature(const_ptr_offset)] use std::ptr; diff --git a/src/test/ui/consts/offset_ub.stderr b/src/test/ui/consts/offset_ub.stderr index 5e8b7a8e0b69..082142fbbb77 100644 --- a/src/test/ui/consts/offset_ub.stderr +++ b/src/test/ui/consts/offset_ub.stderr @@ -6,9 +6,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | overflowing in-bounds pointer arithmetic | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `BEFORE_START` at $DIR/offset_ub.rs:7:46 + | inside `BEFORE_START` at $DIR/offset_ub.rs:6:46 | - ::: $DIR/offset_ub.rs:7:1 + ::: $DIR/offset_ub.rs:6:1 | LL | pub const BEFORE_START: *const u8 = unsafe { (&0u8 as *const u8).offset(-1) }; | ------------------------------------------------------------------------------ @@ -25,9 +25,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | inbounds test failed: pointer must be in-bounds at offset 2, but is outside bounds of allocN which has size 1 | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `AFTER_END` at $DIR/offset_ub.rs:8:43 + | inside `AFTER_END` at $DIR/offset_ub.rs:7:43 | - ::: $DIR/offset_ub.rs:8:1 + ::: $DIR/offset_ub.rs:7:1 | LL | pub const AFTER_END: *const u8 = unsafe { (&0u8 as *const u8).offset(2) }; | -------------------------------------------------------------------------- @@ -43,9 +43,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | inbounds test failed: pointer must be in-bounds at offset 101, but is outside bounds of allocN which has size 100 | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `AFTER_ARRAY` at $DIR/offset_ub.rs:9:45 + | inside `AFTER_ARRAY` at $DIR/offset_ub.rs:8:45 | - ::: $DIR/offset_ub.rs:9:1 + ::: $DIR/offset_ub.rs:8:1 | LL | pub const AFTER_ARRAY: *const u8 = unsafe { [0u8; 100].as_ptr().offset(101) }; | ------------------------------------------------------------------------------ @@ -61,9 +61,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | overflowing in-bounds pointer arithmetic | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `OVERFLOW` at $DIR/offset_ub.rs:11:43 + | inside `OVERFLOW` at $DIR/offset_ub.rs:10:43 | - ::: $DIR/offset_ub.rs:11:1 + ::: $DIR/offset_ub.rs:10:1 | LL | pub const OVERFLOW: *const u16 = unsafe { [0u16; 1].as_ptr().offset(isize::MAX) }; | ---------------------------------------------------------------------------------- @@ -79,9 +79,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | overflowing in-bounds pointer arithmetic | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `UNDERFLOW` at $DIR/offset_ub.rs:12:44 + | inside `UNDERFLOW` at $DIR/offset_ub.rs:11:44 | - ::: $DIR/offset_ub.rs:12:1 + ::: $DIR/offset_ub.rs:11:1 | LL | pub const UNDERFLOW: *const u16 = unsafe { [0u16; 1].as_ptr().offset(isize::MIN) }; | ----------------------------------------------------------------------------------- @@ -97,9 +97,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | overflowing in-bounds pointer arithmetic | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `OVERFLOW_ADDRESS_SPACE` at $DIR/offset_ub.rs:13:56 + | inside `OVERFLOW_ADDRESS_SPACE` at $DIR/offset_ub.rs:12:56 | - ::: $DIR/offset_ub.rs:13:1 + ::: $DIR/offset_ub.rs:12:1 | LL | pub const OVERFLOW_ADDRESS_SPACE: *const u8 = unsafe { (usize::MAX as *const u8).offset(2) }; | --------------------------------------------------------------------------------------------- @@ -115,9 +115,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | overflowing in-bounds pointer arithmetic | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `UNDERFLOW_ADDRESS_SPACE` at $DIR/offset_ub.rs:14:57 + | inside `UNDERFLOW_ADDRESS_SPACE` at $DIR/offset_ub.rs:13:57 | - ::: $DIR/offset_ub.rs:14:1 + ::: $DIR/offset_ub.rs:13:1 | LL | pub const UNDERFLOW_ADDRESS_SPACE: *const u8 = unsafe { (1 as *const u8).offset(-2) }; | -------------------------------------------------------------------------------------- @@ -133,9 +133,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | inbounds test failed: pointer must be in-bounds at offset 1, but is outside bounds of allocN which has size 0 | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `ZERO_SIZED_ALLOC` at $DIR/offset_ub.rs:16:50 + | inside `ZERO_SIZED_ALLOC` at $DIR/offset_ub.rs:15:50 | - ::: $DIR/offset_ub.rs:16:1 + ::: $DIR/offset_ub.rs:15:1 | LL | pub const ZERO_SIZED_ALLOC: *const u8 = unsafe { [0u8; 0].as_ptr().offset(1) }; | ------------------------------------------------------------------------------- @@ -151,9 +151,9 @@ LL | unsafe { intrinsics::offset(self, count) as *mut T } | | | unable to turn bytes into a pointer | inside `ptr::mut_ptr::::offset` at $SRC_DIR/core/src/ptr/mut_ptr.rs:LL:COL - | inside `DANGLING` at $DIR/offset_ub.rs:17:42 + | inside `DANGLING` at $DIR/offset_ub.rs:16:42 | - ::: $DIR/offset_ub.rs:17:1 + ::: $DIR/offset_ub.rs:16:1 | LL | pub const DANGLING: *const u8 = unsafe { ptr::NonNull::::dangling().as_ptr().offset(4) }; | --------------------------------------------------------------------------------------------- @@ -169,9 +169,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | inbounds test failed: 0x0 is not a valid pointer | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `NULL_OFFSET_ZERO` at $DIR/offset_ub.rs:20:50 + | inside `NULL_OFFSET_ZERO` at $DIR/offset_ub.rs:19:50 | - ::: $DIR/offset_ub.rs:20:1 + ::: $DIR/offset_ub.rs:19:1 | LL | pub const NULL_OFFSET_ZERO: *const u8 = unsafe { ptr::null::().offset(0) }; | ------------------------------------------------------------------------------- @@ -187,9 +187,9 @@ LL | unsafe { intrinsics::offset(self, count) } | | | unable to turn bytes into a pointer | inside `ptr::const_ptr::::offset` at $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL - | inside `UNDERFLOW_ABS` at $DIR/offset_ub.rs:23:47 + | inside `UNDERFLOW_ABS` at $DIR/offset_ub.rs:22:47 | - ::: $DIR/offset_ub.rs:23:1 + ::: $DIR/offset_ub.rs:22:1 | LL | pub const UNDERFLOW_ABS: *const u8 = unsafe { (usize::MAX as *const u8).offset(isize::MIN) }; | --------------------------------------------------------------------------------------------- diff --git a/src/test/ui/deprecation/deprecation-lint.rs b/src/test/ui/deprecation/deprecation-lint.rs index 560e29688864..b6c791c15fd2 100644 --- a/src/test/ui/deprecation/deprecation-lint.rs +++ b/src/test/ui/deprecation/deprecation-lint.rs @@ -1,5 +1,4 @@ // aux-build:deprecation-lint.rs -// ignore-tidy-linelength #![deny(deprecated)] #![allow(warnings)] diff --git a/src/test/ui/deprecation/deprecation-lint.stderr b/src/test/ui/deprecation/deprecation-lint.stderr index 12c76f0f4a5d..959cf93bac05 100644 --- a/src/test/ui/deprecation/deprecation-lint.stderr +++ b/src/test/ui/deprecation/deprecation-lint.stderr @@ -1,737 +1,737 @@ error: use of deprecated function `deprecation_lint::deprecated`: text - --> $DIR/deprecation-lint.rs:17:9 + --> $DIR/deprecation-lint.rs:16:9 | LL | deprecated(); | ^^^^^^^^^^ | note: the lint level is defined here - --> $DIR/deprecation-lint.rs:4:9 + --> $DIR/deprecation-lint.rs:3:9 | LL | #![deny(deprecated)] | ^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:22:9 + --> $DIR/deprecation-lint.rs:21:9 | LL | Trait::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:24:9 + --> $DIR/deprecation-lint.rs:23:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated function `deprecation_lint::deprecated_text`: text - --> $DIR/deprecation-lint.rs:26:9 + --> $DIR/deprecation-lint.rs:25:9 | LL | deprecated_text(); | ^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:31:9 + --> $DIR/deprecation-lint.rs:30:9 | LL | ... Trait::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:33:9 + --> $DIR/deprecation-lint.rs:32:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::DeprecatedStruct`: text - --> $DIR/deprecation-lint.rs:35:17 + --> $DIR/deprecation-lint.rs:34:17 | LL | let _ = DeprecatedStruct { | ^^^^^^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::DeprecatedUnitStruct`: text - --> $DIR/deprecation-lint.rs:39:17 + --> $DIR/deprecation-lint.rs:38:17 | LL | let _ = DeprecatedUnitStruct; | ^^^^^^^^^^^^^^^^^^^^ error: use of deprecated variant `deprecation_lint::Enum::DeprecatedVariant`: text - --> $DIR/deprecation-lint.rs:41:17 + --> $DIR/deprecation-lint.rs:40:17 | LL | let _ = Enum::DeprecatedVariant; | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::DeprecatedTupleStruct`: text - --> $DIR/deprecation-lint.rs:43:17 + --> $DIR/deprecation-lint.rs:42:17 | LL | let _ = DeprecatedTupleStruct (1); | ^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::nested::DeprecatedStruct`: text - --> $DIR/deprecation-lint.rs:45:17 + --> $DIR/deprecation-lint.rs:44:17 | LL | let _ = nested::DeprecatedStruct { | ^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::nested::DeprecatedUnitStruct`: text - --> $DIR/deprecation-lint.rs:49:17 + --> $DIR/deprecation-lint.rs:48:17 | LL | let _ = nested::DeprecatedUnitStruct; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated variant `deprecation_lint::nested::Enum::DeprecatedVariant`: text - --> $DIR/deprecation-lint.rs:51:17 + --> $DIR/deprecation-lint.rs:50:17 | LL | ... let _ = nested::Enum::DeprecatedVariant; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::nested::DeprecatedTupleStruct`: text - --> $DIR/deprecation-lint.rs:53:17 + --> $DIR/deprecation-lint.rs:52:17 | LL | ... let _ = nested::DeprecatedTupleStruct (1); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated function `deprecation_lint::deprecated_text`: text - --> $DIR/deprecation-lint.rs:60:25 + --> $DIR/deprecation-lint.rs:59:25 | LL | macro_test_arg!(deprecated_text()); | ^^^^^^^^^^^^^^^ error: use of deprecated function `deprecation_lint::deprecated_text`: text - --> $DIR/deprecation-lint.rs:61:41 + --> $DIR/deprecation-lint.rs:60:41 | LL | macro_test_arg!(macro_test_arg!(deprecated_text())); | ^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:66:9 + --> $DIR/deprecation-lint.rs:65:9 | LL | Trait::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:68:9 + --> $DIR/deprecation-lint.rs:67:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:70:9 + --> $DIR/deprecation-lint.rs:69:9 | LL | ... Trait::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:72:9 + --> $DIR/deprecation-lint.rs:71:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated trait `deprecation_lint::DeprecatedTrait`: text - --> $DIR/deprecation-lint.rs:82:10 + --> $DIR/deprecation-lint.rs:81:10 | LL | impl DeprecatedTrait for S {} | ^^^^^^^^^^^^^^^ error: use of deprecated trait `deprecation_lint::DeprecatedTrait`: text - --> $DIR/deprecation-lint.rs:83:24 + --> $DIR/deprecation-lint.rs:82:24 | LL | trait LocalTrait : DeprecatedTrait { } | ^^^^^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::Deprecated`: text - --> $DIR/deprecation-lint.rs:114:17 + --> $DIR/deprecation-lint.rs:113:17 | LL | let x = Deprecated { | ^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::Deprecated`: text - --> $DIR/deprecation-lint.rs:123:13 + --> $DIR/deprecation-lint.rs:122:13 | LL | let Deprecated { | ^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::Deprecated`: text - --> $DIR/deprecation-lint.rs:129:13 + --> $DIR/deprecation-lint.rs:128:13 | LL | let Deprecated | ^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::Deprecated2`: text - --> $DIR/deprecation-lint.rs:133:17 + --> $DIR/deprecation-lint.rs:132:17 | LL | let x = Deprecated2(1, 2, 3); | ^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::Deprecated2`: text - --> $DIR/deprecation-lint.rs:143:13 + --> $DIR/deprecation-lint.rs:142:13 | LL | let Deprecated2 | ^^^^^^^^^^^ error: use of deprecated struct `deprecation_lint::Deprecated2`: text - --> $DIR/deprecation-lint.rs:152:13 + --> $DIR/deprecation-lint.rs:151:13 | LL | let Deprecated2 | ^^^^^^^^^^^ error: use of deprecated function `deprecation_lint::deprecated_mod::deprecated`: text - --> $DIR/deprecation-lint.rs:163:9 + --> $DIR/deprecation-lint.rs:162:9 | LL | deprecated_mod::deprecated(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated function `this_crate::deprecated`: text - --> $DIR/deprecation-lint.rs:246:9 + --> $DIR/deprecation-lint.rs:245:9 | LL | deprecated(); | ^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:251:9 + --> $DIR/deprecation-lint.rs:250:9 | LL | Trait::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:253:9 + --> $DIR/deprecation-lint.rs:252:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated function `this_crate::deprecated_text`: text - --> $DIR/deprecation-lint.rs:255:9 + --> $DIR/deprecation-lint.rs:254:9 | LL | deprecated_text(); | ^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:260:9 + --> $DIR/deprecation-lint.rs:259:9 | LL | Trait::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:262:9 + --> $DIR/deprecation-lint.rs:261:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated function `this_crate::deprecated_future`: text - --> $DIR/deprecation-lint.rs:265:9 + --> $DIR/deprecation-lint.rs:264:9 | LL | deprecated_future(); | ^^^^^^^^^^^^^^^^^ error: use of deprecated function `this_crate::deprecated_future_text`: text - --> $DIR/deprecation-lint.rs:266:9 + --> $DIR/deprecation-lint.rs:265:9 | LL | deprecated_future_text(); | ^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated struct `this_crate::DeprecatedStruct`: text - --> $DIR/deprecation-lint.rs:268:17 + --> $DIR/deprecation-lint.rs:267:17 | LL | let _ = DeprecatedStruct { | ^^^^^^^^^^^^^^^^ error: use of deprecated unit struct `this_crate::DeprecatedUnitStruct`: text - --> $DIR/deprecation-lint.rs:273:17 + --> $DIR/deprecation-lint.rs:272:17 | LL | let _ = DeprecatedUnitStruct; | ^^^^^^^^^^^^^^^^^^^^ error: use of deprecated unit variant `this_crate::Enum::DeprecatedVariant`: text - --> $DIR/deprecation-lint.rs:275:17 + --> $DIR/deprecation-lint.rs:274:17 | LL | let _ = Enum::DeprecatedVariant; | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated tuple struct `this_crate::DeprecatedTupleStruct`: text - --> $DIR/deprecation-lint.rs:277:17 + --> $DIR/deprecation-lint.rs:276:17 | LL | let _ = DeprecatedTupleStruct (1); | ^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated struct `this_crate::nested::DeprecatedStruct`: text - --> $DIR/deprecation-lint.rs:279:17 + --> $DIR/deprecation-lint.rs:278:17 | LL | let _ = nested::DeprecatedStruct { | ^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated unit struct `this_crate::nested::DeprecatedUnitStruct`: text - --> $DIR/deprecation-lint.rs:284:17 + --> $DIR/deprecation-lint.rs:283:17 | LL | let _ = nested::DeprecatedUnitStruct; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated unit variant `this_crate::nested::Enum::DeprecatedVariant`: text - --> $DIR/deprecation-lint.rs:286:17 + --> $DIR/deprecation-lint.rs:285:17 | LL | ... let _ = nested::Enum::DeprecatedVariant; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated tuple struct `this_crate::nested::DeprecatedTupleStruct`: text - --> $DIR/deprecation-lint.rs:288:17 + --> $DIR/deprecation-lint.rs:287:17 | LL | ... let _ = nested::DeprecatedTupleStruct (1); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:293:9 + --> $DIR/deprecation-lint.rs:292:9 | LL | Trait::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:295:9 + --> $DIR/deprecation-lint.rs:294:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:297:9 + --> $DIR/deprecation-lint.rs:296:9 | LL | Trait::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:299:9 + --> $DIR/deprecation-lint.rs:298:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated function `this_crate::test_fn_closure_body::{closure#0}::bar` - --> $DIR/deprecation-lint.rs:317:13 + --> $DIR/deprecation-lint.rs:316:13 | LL | bar(); | ^^^ error: use of deprecated trait `this_crate::DeprecatedTrait`: text - --> $DIR/deprecation-lint.rs:336:10 + --> $DIR/deprecation-lint.rs:335:10 | LL | impl DeprecatedTrait for S { } | ^^^^^^^^^^^^^^^ error: use of deprecated trait `this_crate::DeprecatedTrait`: text - --> $DIR/deprecation-lint.rs:338:24 + --> $DIR/deprecation-lint.rs:337:24 | LL | trait LocalTrait : DeprecatedTrait { } | ^^^^^^^^^^^^^^^ error: use of deprecated struct `this_crate2::Deprecated`: text - --> $DIR/deprecation-lint.rs:390:17 + --> $DIR/deprecation-lint.rs:389:17 | LL | let x = Deprecated { | ^^^^^^^^^^ error: use of deprecated struct `this_crate2::Deprecated`: text - --> $DIR/deprecation-lint.rs:399:13 + --> $DIR/deprecation-lint.rs:398:13 | LL | let Deprecated { | ^^^^^^^^^^ error: use of deprecated struct `this_crate2::Deprecated`: text - --> $DIR/deprecation-lint.rs:405:13 + --> $DIR/deprecation-lint.rs:404:13 | LL | let Deprecated | ^^^^^^^^^^ error: use of deprecated tuple struct `this_crate2::Deprecated2`: text - --> $DIR/deprecation-lint.rs:410:17 + --> $DIR/deprecation-lint.rs:409:17 | LL | let x = Deprecated2(1, 2, 3); | ^^^^^^^^^^^ error: use of deprecated tuple struct `this_crate2::Deprecated2`: text - --> $DIR/deprecation-lint.rs:420:13 + --> $DIR/deprecation-lint.rs:419:13 | LL | let Deprecated2 | ^^^^^^^^^^^ error: use of deprecated tuple struct `this_crate2::Deprecated2`: text - --> $DIR/deprecation-lint.rs:429:13 + --> $DIR/deprecation-lint.rs:428:13 | LL | let Deprecated2 | ^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::MethodTester::method_deprecated`: text - --> $DIR/deprecation-lint.rs:18:13 + --> $DIR/deprecation-lint.rs:17:13 | LL | foo.method_deprecated(); | ^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::MethodTester::method_deprecated`: text - --> $DIR/deprecation-lint.rs:19:9 + --> $DIR/deprecation-lint.rs:18:9 | LL | Foo::method_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::MethodTester::method_deprecated`: text - --> $DIR/deprecation-lint.rs:20:9 + --> $DIR/deprecation-lint.rs:19:9 | LL | ::method_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:21:13 + --> $DIR/deprecation-lint.rs:20:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:23:9 + --> $DIR/deprecation-lint.rs:22:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::MethodTester::method_deprecated_text`: text - --> $DIR/deprecation-lint.rs:27:13 + --> $DIR/deprecation-lint.rs:26:13 | LL | ... foo.method_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::MethodTester::method_deprecated_text`: text - --> $DIR/deprecation-lint.rs:28:9 + --> $DIR/deprecation-lint.rs:27:9 | LL | ... Foo::method_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::MethodTester::method_deprecated_text`: text - --> $DIR/deprecation-lint.rs:29:9 + --> $DIR/deprecation-lint.rs:28:9 | LL | ... ::method_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:30:13 + --> $DIR/deprecation-lint.rs:29:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:32:9 + --> $DIR/deprecation-lint.rs:31:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated field `deprecation_lint::DeprecatedStruct::i`: text - --> $DIR/deprecation-lint.rs:36:13 + --> $DIR/deprecation-lint.rs:35:13 | LL | i: 0 | ^^^^ error: use of deprecated field `deprecation_lint::nested::DeprecatedStruct::i`: text - --> $DIR/deprecation-lint.rs:46:13 + --> $DIR/deprecation-lint.rs:45:13 | LL | i: 0 | ^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:65:13 + --> $DIR/deprecation-lint.rs:64:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:67:9 + --> $DIR/deprecation-lint.rs:66:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:69:13 + --> $DIR/deprecation-lint.rs:68:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:71:9 + --> $DIR/deprecation-lint.rs:70:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:76:13 + --> $DIR/deprecation-lint.rs:75:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ error: use of deprecated associated function `deprecation_lint::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:77:13 + --> $DIR/deprecation-lint.rs:76:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated field `deprecation_lint::Stable::override2`: text - --> $DIR/deprecation-lint.rs:87:13 + --> $DIR/deprecation-lint.rs:86:13 | LL | override2: 3, | ^^^^^^^^^^^^ error: use of deprecated field `deprecation_lint::Stable::override2`: text - --> $DIR/deprecation-lint.rs:91:17 + --> $DIR/deprecation-lint.rs:90:17 | LL | let _ = x.override2; | ^^^^^^^^^^^ error: use of deprecated field `deprecation_lint::Stable::override2`: text - --> $DIR/deprecation-lint.rs:95:13 + --> $DIR/deprecation-lint.rs:94:13 | LL | override2: _ | ^^^^^^^^^^^^ error: use of deprecated field `deprecation_lint::Stable2::2`: text - --> $DIR/deprecation-lint.rs:103:17 + --> $DIR/deprecation-lint.rs:102:17 | LL | let _ = x.2; | ^^^ error: use of deprecated field `deprecation_lint::Stable2::2`: text - --> $DIR/deprecation-lint.rs:108:20 + --> $DIR/deprecation-lint.rs:107:20 | LL | _) | ^ error: use of deprecated field `deprecation_lint::Deprecated::inherit`: text - --> $DIR/deprecation-lint.rs:116:13 + --> $DIR/deprecation-lint.rs:115:13 | LL | inherit: 1, | ^^^^^^^^^^ error: use of deprecated field `deprecation_lint::Deprecated::inherit`: text - --> $DIR/deprecation-lint.rs:120:17 + --> $DIR/deprecation-lint.rs:119:17 | LL | let _ = x.inherit; | ^^^^^^^^^ error: use of deprecated field `deprecation_lint::Deprecated::inherit`: text - --> $DIR/deprecation-lint.rs:125:13 + --> $DIR/deprecation-lint.rs:124:13 | LL | inherit: _, | ^^^^^^^^^^ error: use of deprecated field `deprecation_lint::Deprecated2::0`: text - --> $DIR/deprecation-lint.rs:136:17 + --> $DIR/deprecation-lint.rs:135:17 | LL | let _ = x.0; | ^^^ error: use of deprecated field `deprecation_lint::Deprecated2::1`: text - --> $DIR/deprecation-lint.rs:138:17 + --> $DIR/deprecation-lint.rs:137:17 | LL | let _ = x.1; | ^^^ error: use of deprecated field `deprecation_lint::Deprecated2::2`: text - --> $DIR/deprecation-lint.rs:140:17 + --> $DIR/deprecation-lint.rs:139:17 | LL | let _ = x.2; | ^^^ error: use of deprecated field `deprecation_lint::Deprecated2::0`: text - --> $DIR/deprecation-lint.rs:145:14 + --> $DIR/deprecation-lint.rs:144:14 | LL | (_, | ^ error: use of deprecated field `deprecation_lint::Deprecated2::1`: text - --> $DIR/deprecation-lint.rs:147:14 + --> $DIR/deprecation-lint.rs:146:14 | LL | _, | ^ error: use of deprecated field `deprecation_lint::Deprecated2::2`: text - --> $DIR/deprecation-lint.rs:149:14 + --> $DIR/deprecation-lint.rs:148:14 | LL | _) | ^ error: use of deprecated associated function `this_crate::MethodTester::method_deprecated`: text - --> $DIR/deprecation-lint.rs:247:13 + --> $DIR/deprecation-lint.rs:246:13 | LL | foo.method_deprecated(); | ^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::MethodTester::method_deprecated`: text - --> $DIR/deprecation-lint.rs:248:9 + --> $DIR/deprecation-lint.rs:247:9 | LL | Foo::method_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::MethodTester::method_deprecated`: text - --> $DIR/deprecation-lint.rs:249:9 + --> $DIR/deprecation-lint.rs:248:9 | LL | ::method_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:250:13 + --> $DIR/deprecation-lint.rs:249:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:252:9 + --> $DIR/deprecation-lint.rs:251:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text - --> $DIR/deprecation-lint.rs:256:13 + --> $DIR/deprecation-lint.rs:255:13 | LL | ... foo.method_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text - --> $DIR/deprecation-lint.rs:257:9 + --> $DIR/deprecation-lint.rs:256:9 | LL | ... Foo::method_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text - --> $DIR/deprecation-lint.rs:258:9 + --> $DIR/deprecation-lint.rs:257:9 | LL | ... ::method_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:259:13 + --> $DIR/deprecation-lint.rs:258:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:261:9 + --> $DIR/deprecation-lint.rs:260:9 | LL | ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated field `this_crate::DeprecatedStruct::i`: text - --> $DIR/deprecation-lint.rs:270:13 + --> $DIR/deprecation-lint.rs:269:13 | LL | i: 0 | ^^^^ error: use of deprecated field `this_crate::nested::DeprecatedStruct::i`: text - --> $DIR/deprecation-lint.rs:281:13 + --> $DIR/deprecation-lint.rs:280:13 | LL | i: 0 | ^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:292:13 + --> $DIR/deprecation-lint.rs:291:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:294:9 + --> $DIR/deprecation-lint.rs:293:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:296:13 + --> $DIR/deprecation-lint.rs:295:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:298:9 + --> $DIR/deprecation-lint.rs:297:9 | LL | ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/deprecation-lint.rs:303:13 + --> $DIR/deprecation-lint.rs:302:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ error: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/deprecation-lint.rs:304:13 + --> $DIR/deprecation-lint.rs:303:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ error: use of deprecated field `this_crate2::Stable::override2`: text - --> $DIR/deprecation-lint.rs:363:13 + --> $DIR/deprecation-lint.rs:362:13 | LL | override2: 3, | ^^^^^^^^^^^^ error: use of deprecated field `this_crate2::Stable::override2`: text - --> $DIR/deprecation-lint.rs:367:17 + --> $DIR/deprecation-lint.rs:366:17 | LL | let _ = x.override2; | ^^^^^^^^^^^ error: use of deprecated field `this_crate2::Stable::override2`: text - --> $DIR/deprecation-lint.rs:371:13 + --> $DIR/deprecation-lint.rs:370:13 | LL | override2: _ | ^^^^^^^^^^^^ error: use of deprecated field `this_crate2::Stable2::2`: text - --> $DIR/deprecation-lint.rs:379:17 + --> $DIR/deprecation-lint.rs:378:17 | LL | let _ = x.2; | ^^^ error: use of deprecated field `this_crate2::Stable2::2`: text - --> $DIR/deprecation-lint.rs:384:20 + --> $DIR/deprecation-lint.rs:383:20 | LL | _) | ^ error: use of deprecated field `this_crate2::Deprecated::inherit`: text - --> $DIR/deprecation-lint.rs:392:13 + --> $DIR/deprecation-lint.rs:391:13 | LL | inherit: 1, | ^^^^^^^^^^ error: use of deprecated field `this_crate2::Deprecated::inherit`: text - --> $DIR/deprecation-lint.rs:396:17 + --> $DIR/deprecation-lint.rs:395:17 | LL | let _ = x.inherit; | ^^^^^^^^^ error: use of deprecated field `this_crate2::Deprecated::inherit`: text - --> $DIR/deprecation-lint.rs:401:13 + --> $DIR/deprecation-lint.rs:400:13 | LL | inherit: _, | ^^^^^^^^^^ error: use of deprecated field `this_crate2::Deprecated2::0`: text - --> $DIR/deprecation-lint.rs:413:17 + --> $DIR/deprecation-lint.rs:412:17 | LL | let _ = x.0; | ^^^ error: use of deprecated field `this_crate2::Deprecated2::1`: text - --> $DIR/deprecation-lint.rs:415:17 + --> $DIR/deprecation-lint.rs:414:17 | LL | let _ = x.1; | ^^^ error: use of deprecated field `this_crate2::Deprecated2::2`: text - --> $DIR/deprecation-lint.rs:417:17 + --> $DIR/deprecation-lint.rs:416:17 | LL | let _ = x.2; | ^^^ error: use of deprecated field `this_crate2::Deprecated2::0`: text - --> $DIR/deprecation-lint.rs:422:14 + --> $DIR/deprecation-lint.rs:421:14 | LL | (_, | ^ error: use of deprecated field `this_crate2::Deprecated2::1`: text - --> $DIR/deprecation-lint.rs:424:14 + --> $DIR/deprecation-lint.rs:423:14 | LL | _, | ^ error: use of deprecated field `this_crate2::Deprecated2::2`: text - --> $DIR/deprecation-lint.rs:426:14 + --> $DIR/deprecation-lint.rs:425:14 | LL | _) | ^ diff --git a/src/test/ui/deprecation/rustc_deprecation-in-future.rs b/src/test/ui/deprecation/rustc_deprecation-in-future.rs index 11f7960b7578..3715f8eb2252 100644 --- a/src/test/ui/deprecation/rustc_deprecation-in-future.rs +++ b/src/test/ui/deprecation/rustc_deprecation-in-future.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![deny(deprecated_in_future)] #![feature(staged_api)] diff --git a/src/test/ui/deprecation/rustc_deprecation-in-future.stderr b/src/test/ui/deprecation/rustc_deprecation-in-future.stderr index b5a7dd3c28da..1c3339a8a9dc 100644 --- a/src/test/ui/deprecation/rustc_deprecation-in-future.stderr +++ b/src/test/ui/deprecation/rustc_deprecation-in-future.stderr @@ -1,17 +1,17 @@ error: use of unit struct `S1` that will be deprecated in future version 99.99.99: effectively never - --> $DIR/rustc_deprecation-in-future.rs:18:13 + --> $DIR/rustc_deprecation-in-future.rs:16:13 | LL | let _ = S1; | ^^ | note: the lint level is defined here - --> $DIR/rustc_deprecation-in-future.rs:3:9 + --> $DIR/rustc_deprecation-in-future.rs:1:9 | LL | #![deny(deprecated_in_future)] | ^^^^^^^^^^^^^^^^^^^^ error: use of unit struct `S2` that will be deprecated in a future Rust version: literally never - --> $DIR/rustc_deprecation-in-future.rs:19:13 + --> $DIR/rustc_deprecation-in-future.rs:17:13 | LL | let _ = S2; | ^^ diff --git a/src/test/ui/error-codes/E0063.rs b/src/test/ui/error-codes/E0063.rs index 58527cc0c5dd..48c9c13f018f 100644 --- a/src/test/ui/error-codes/E0063.rs +++ b/src/test/ui/error-codes/E0063.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - struct SingleFoo { x: i32 } diff --git a/src/test/ui/error-codes/E0063.stderr b/src/test/ui/error-codes/E0063.stderr index 5dc4927071b6..235e204025ae 100644 --- a/src/test/ui/error-codes/E0063.stderr +++ b/src/test/ui/error-codes/E0063.stderr @@ -1,23 +1,23 @@ error[E0063]: missing field `x` in initializer of `SingleFoo` - --> $DIR/E0063.rs:32:13 + --> $DIR/E0063.rs:30:13 | LL | let w = SingleFoo { }; | ^^^^^^^^^ missing `x` error[E0063]: missing fields `y` and `z` in initializer of `PluralFoo` - --> $DIR/E0063.rs:34:13 + --> $DIR/E0063.rs:32:13 | LL | let x = PluralFoo {x: 1}; | ^^^^^^^^^ missing `y` and `z` error[E0063]: missing fields `a`, `b`, `y` and 1 other field in initializer of `TruncatedFoo` - --> $DIR/E0063.rs:36:13 + --> $DIR/E0063.rs:34:13 | LL | let y = TruncatedFoo{x:1}; | ^^^^^^^^^^^^ missing `a`, `b`, `y` and 1 other field error[E0063]: missing fields `a`, `b`, `c` and 2 other fields in initializer of `TruncatedPluralFoo` - --> $DIR/E0063.rs:38:13 + --> $DIR/E0063.rs:36:13 | LL | let z = TruncatedPluralFoo{x:1}; | ^^^^^^^^^^^^^^^^^^ missing `a`, `b`, `c` and 2 other fields diff --git a/src/test/ui/export-fully-qualified.rs b/src/test/ui/export-fully-qualified.rs index 40f26c7095f1..4e73a2c54888 100644 --- a/src/test/ui/export-fully-qualified.rs +++ b/src/test/ui/export-fully-qualified.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // In this test baz isn't resolved when called as foo.baz even though // it's called from inside foo. This is somewhat surprising and may // want to change eventually. diff --git a/src/test/ui/export-fully-qualified.stderr b/src/test/ui/export-fully-qualified.stderr index a8af0c7c9b82..7ee352e1232a 100644 --- a/src/test/ui/export-fully-qualified.stderr +++ b/src/test/ui/export-fully-qualified.stderr @@ -1,5 +1,5 @@ error[E0433]: failed to resolve: use of undeclared crate or module `foo` - --> $DIR/export-fully-qualified.rs:8:20 + --> $DIR/export-fully-qualified.rs:6:20 | LL | pub fn bar() { foo::baz(); } | ^^^ use of undeclared crate or module `foo` diff --git a/src/test/ui/feature-gates/feature-gate-abi.rs b/src/test/ui/feature-gates/feature-gate-abi.rs index 31f09cc61f9a..3883106a3af9 100644 --- a/src/test/ui/feature-gates/feature-gate-abi.rs +++ b/src/test/ui/feature-gates/feature-gate-abi.rs @@ -1,5 +1,4 @@ // only-x86_64 -// ignore-tidy-linelength // gate-test-intrinsics // gate-test-platform_intrinsics // gate-test-abi_vectorcall diff --git a/src/test/ui/feature-gates/feature-gate-abi.stderr b/src/test/ui/feature-gates/feature-gate-abi.stderr index 25f0c259d111..eeeb349c6627 100644 --- a/src/test/ui/feature-gates/feature-gate-abi.stderr +++ b/src/test/ui/feature-gates/feature-gate-abi.stderr @@ -1,5 +1,5 @@ error[E0658]: intrinsics are subject to change - --> $DIR/feature-gate-abi.rs:13:8 + --> $DIR/feature-gate-abi.rs:12:8 | LL | extern "rust-intrinsic" fn f1() {} | ^^^^^^^^^^^^^^^^ @@ -7,7 +7,7 @@ LL | extern "rust-intrinsic" fn f1() {} = help: add `#![feature(intrinsics)]` to the crate attributes to enable error[E0658]: platform intrinsics are experimental and possibly buggy - --> $DIR/feature-gate-abi.rs:15:8 + --> $DIR/feature-gate-abi.rs:14:8 | LL | extern "platform-intrinsic" fn f2() {} | ^^^^^^^^^^^^^^^^^^^^ @@ -16,7 +16,7 @@ LL | extern "platform-intrinsic" fn f2() {} = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable error[E0658]: vectorcall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:17:8 + --> $DIR/feature-gate-abi.rs:16:8 | LL | extern "vectorcall" fn f3() {} | ^^^^^^^^^^^^ @@ -24,7 +24,7 @@ LL | extern "vectorcall" fn f3() {} = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable error[E0658]: rust-call ABI is subject to change - --> $DIR/feature-gate-abi.rs:18:8 + --> $DIR/feature-gate-abi.rs:17:8 | LL | extern "rust-call" fn f4(_: ()) {} | ^^^^^^^^^^^ @@ -33,7 +33,7 @@ LL | extern "rust-call" fn f4(_: ()) {} = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable error[E0658]: msp430-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:19:8 + --> $DIR/feature-gate-abi.rs:18:8 | LL | extern "msp430-interrupt" fn f5() {} | ^^^^^^^^^^^^^^^^^^ @@ -42,7 +42,7 @@ LL | extern "msp430-interrupt" fn f5() {} = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable error[E0658]: PTX ABIs are experimental and subject to change - --> $DIR/feature-gate-abi.rs:20:8 + --> $DIR/feature-gate-abi.rs:19:8 | LL | extern "ptx-kernel" fn f6() {} | ^^^^^^^^^^^^ @@ -51,7 +51,7 @@ LL | extern "ptx-kernel" fn f6() {} = help: add `#![feature(abi_ptx)]` to the crate attributes to enable error[E0658]: x86-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:21:8 + --> $DIR/feature-gate-abi.rs:20:8 | LL | extern "x86-interrupt" fn f7() {} | ^^^^^^^^^^^^^^^ @@ -60,7 +60,7 @@ LL | extern "x86-interrupt" fn f7() {} = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable error[E0658]: thiscall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:22:8 + --> $DIR/feature-gate-abi.rs:21:8 | LL | extern "thiscall" fn f8() {} | ^^^^^^^^^^ @@ -68,7 +68,7 @@ LL | extern "thiscall" fn f8() {} = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable error[E0658]: amdgpu-kernel ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:23:8 + --> $DIR/feature-gate-abi.rs:22:8 | LL | extern "amdgpu-kernel" fn f9() {} | ^^^^^^^^^^^^^^^ @@ -77,7 +77,7 @@ LL | extern "amdgpu-kernel" fn f9() {} = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:24:8 + --> $DIR/feature-gate-abi.rs:23:8 | LL | extern "efiapi" fn f10() {} | ^^^^^^^^ @@ -86,7 +86,7 @@ LL | extern "efiapi" fn f10() {} = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable error[E0658]: intrinsics are subject to change - --> $DIR/feature-gate-abi.rs:28:12 + --> $DIR/feature-gate-abi.rs:27:12 | LL | extern "rust-intrinsic" fn m1(); | ^^^^^^^^^^^^^^^^ @@ -94,7 +94,7 @@ LL | extern "rust-intrinsic" fn m1(); = help: add `#![feature(intrinsics)]` to the crate attributes to enable error[E0658]: platform intrinsics are experimental and possibly buggy - --> $DIR/feature-gate-abi.rs:30:12 + --> $DIR/feature-gate-abi.rs:29:12 | LL | extern "platform-intrinsic" fn m2(); | ^^^^^^^^^^^^^^^^^^^^ @@ -103,7 +103,7 @@ LL | extern "platform-intrinsic" fn m2(); = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable error[E0658]: vectorcall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:32:12 + --> $DIR/feature-gate-abi.rs:31:12 | LL | extern "vectorcall" fn m3(); | ^^^^^^^^^^^^ @@ -111,7 +111,7 @@ LL | extern "vectorcall" fn m3(); = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable error[E0658]: rust-call ABI is subject to change - --> $DIR/feature-gate-abi.rs:33:12 + --> $DIR/feature-gate-abi.rs:32:12 | LL | extern "rust-call" fn m4(_: ()); | ^^^^^^^^^^^ @@ -120,7 +120,7 @@ LL | extern "rust-call" fn m4(_: ()); = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable error[E0658]: msp430-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:34:12 + --> $DIR/feature-gate-abi.rs:33:12 | LL | extern "msp430-interrupt" fn m5(); | ^^^^^^^^^^^^^^^^^^ @@ -129,7 +129,7 @@ LL | extern "msp430-interrupt" fn m5(); = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable error[E0658]: PTX ABIs are experimental and subject to change - --> $DIR/feature-gate-abi.rs:35:12 + --> $DIR/feature-gate-abi.rs:34:12 | LL | extern "ptx-kernel" fn m6(); | ^^^^^^^^^^^^ @@ -138,7 +138,7 @@ LL | extern "ptx-kernel" fn m6(); = help: add `#![feature(abi_ptx)]` to the crate attributes to enable error[E0658]: x86-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:36:12 + --> $DIR/feature-gate-abi.rs:35:12 | LL | extern "x86-interrupt" fn m7(); | ^^^^^^^^^^^^^^^ @@ -147,7 +147,7 @@ LL | extern "x86-interrupt" fn m7(); = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable error[E0658]: thiscall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:37:12 + --> $DIR/feature-gate-abi.rs:36:12 | LL | extern "thiscall" fn m8(); | ^^^^^^^^^^ @@ -155,7 +155,7 @@ LL | extern "thiscall" fn m8(); = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable error[E0658]: amdgpu-kernel ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:38:12 + --> $DIR/feature-gate-abi.rs:37:12 | LL | extern "amdgpu-kernel" fn m9(); | ^^^^^^^^^^^^^^^ @@ -164,7 +164,7 @@ LL | extern "amdgpu-kernel" fn m9(); = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:39:12 + --> $DIR/feature-gate-abi.rs:38:12 | LL | extern "efiapi" fn m10(); | ^^^^^^^^ @@ -173,7 +173,7 @@ LL | extern "efiapi" fn m10(); = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable error[E0658]: vectorcall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:41:12 + --> $DIR/feature-gate-abi.rs:40:12 | LL | extern "vectorcall" fn dm3() {} | ^^^^^^^^^^^^ @@ -181,7 +181,7 @@ LL | extern "vectorcall" fn dm3() {} = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable error[E0658]: rust-call ABI is subject to change - --> $DIR/feature-gate-abi.rs:42:12 + --> $DIR/feature-gate-abi.rs:41:12 | LL | extern "rust-call" fn dm4(_: ()) {} | ^^^^^^^^^^^ @@ -190,7 +190,7 @@ LL | extern "rust-call" fn dm4(_: ()) {} = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable error[E0658]: msp430-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:43:12 + --> $DIR/feature-gate-abi.rs:42:12 | LL | extern "msp430-interrupt" fn dm5() {} | ^^^^^^^^^^^^^^^^^^ @@ -199,7 +199,7 @@ LL | extern "msp430-interrupt" fn dm5() {} = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable error[E0658]: PTX ABIs are experimental and subject to change - --> $DIR/feature-gate-abi.rs:44:12 + --> $DIR/feature-gate-abi.rs:43:12 | LL | extern "ptx-kernel" fn dm6() {} | ^^^^^^^^^^^^ @@ -208,7 +208,7 @@ LL | extern "ptx-kernel" fn dm6() {} = help: add `#![feature(abi_ptx)]` to the crate attributes to enable error[E0658]: x86-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:45:12 + --> $DIR/feature-gate-abi.rs:44:12 | LL | extern "x86-interrupt" fn dm7() {} | ^^^^^^^^^^^^^^^ @@ -217,7 +217,7 @@ LL | extern "x86-interrupt" fn dm7() {} = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable error[E0658]: thiscall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:46:12 + --> $DIR/feature-gate-abi.rs:45:12 | LL | extern "thiscall" fn dm8() {} | ^^^^^^^^^^ @@ -225,7 +225,7 @@ LL | extern "thiscall" fn dm8() {} = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable error[E0658]: amdgpu-kernel ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:47:12 + --> $DIR/feature-gate-abi.rs:46:12 | LL | extern "amdgpu-kernel" fn dm9() {} | ^^^^^^^^^^^^^^^ @@ -234,7 +234,7 @@ LL | extern "amdgpu-kernel" fn dm9() {} = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:48:12 + --> $DIR/feature-gate-abi.rs:47:12 | LL | extern "efiapi" fn dm10() {} | ^^^^^^^^ @@ -243,7 +243,7 @@ LL | extern "efiapi" fn dm10() {} = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable error[E0658]: intrinsics are subject to change - --> $DIR/feature-gate-abi.rs:55:12 + --> $DIR/feature-gate-abi.rs:54:12 | LL | extern "rust-intrinsic" fn m1() {} | ^^^^^^^^^^^^^^^^ @@ -251,7 +251,7 @@ LL | extern "rust-intrinsic" fn m1() {} = help: add `#![feature(intrinsics)]` to the crate attributes to enable error[E0658]: platform intrinsics are experimental and possibly buggy - --> $DIR/feature-gate-abi.rs:57:12 + --> $DIR/feature-gate-abi.rs:56:12 | LL | extern "platform-intrinsic" fn m2() {} | ^^^^^^^^^^^^^^^^^^^^ @@ -260,7 +260,7 @@ LL | extern "platform-intrinsic" fn m2() {} = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable error[E0658]: vectorcall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:59:12 + --> $DIR/feature-gate-abi.rs:58:12 | LL | extern "vectorcall" fn m3() {} | ^^^^^^^^^^^^ @@ -268,7 +268,7 @@ LL | extern "vectorcall" fn m3() {} = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable error[E0658]: rust-call ABI is subject to change - --> $DIR/feature-gate-abi.rs:60:12 + --> $DIR/feature-gate-abi.rs:59:12 | LL | extern "rust-call" fn m4(_: ()) {} | ^^^^^^^^^^^ @@ -277,7 +277,7 @@ LL | extern "rust-call" fn m4(_: ()) {} = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable error[E0658]: msp430-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:61:12 + --> $DIR/feature-gate-abi.rs:60:12 | LL | extern "msp430-interrupt" fn m5() {} | ^^^^^^^^^^^^^^^^^^ @@ -286,7 +286,7 @@ LL | extern "msp430-interrupt" fn m5() {} = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable error[E0658]: PTX ABIs are experimental and subject to change - --> $DIR/feature-gate-abi.rs:62:12 + --> $DIR/feature-gate-abi.rs:61:12 | LL | extern "ptx-kernel" fn m6() {} | ^^^^^^^^^^^^ @@ -295,7 +295,7 @@ LL | extern "ptx-kernel" fn m6() {} = help: add `#![feature(abi_ptx)]` to the crate attributes to enable error[E0658]: x86-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:63:12 + --> $DIR/feature-gate-abi.rs:62:12 | LL | extern "x86-interrupt" fn m7() {} | ^^^^^^^^^^^^^^^ @@ -304,7 +304,7 @@ LL | extern "x86-interrupt" fn m7() {} = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable error[E0658]: thiscall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:64:12 + --> $DIR/feature-gate-abi.rs:63:12 | LL | extern "thiscall" fn m8() {} | ^^^^^^^^^^ @@ -312,7 +312,7 @@ LL | extern "thiscall" fn m8() {} = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable error[E0658]: amdgpu-kernel ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:65:12 + --> $DIR/feature-gate-abi.rs:64:12 | LL | extern "amdgpu-kernel" fn m9() {} | ^^^^^^^^^^^^^^^ @@ -321,7 +321,7 @@ LL | extern "amdgpu-kernel" fn m9() {} = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:66:12 + --> $DIR/feature-gate-abi.rs:65:12 | LL | extern "efiapi" fn m10() {} | ^^^^^^^^ @@ -330,7 +330,7 @@ LL | extern "efiapi" fn m10() {} = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable error[E0658]: intrinsics are subject to change - --> $DIR/feature-gate-abi.rs:71:12 + --> $DIR/feature-gate-abi.rs:70:12 | LL | extern "rust-intrinsic" fn im1() {} | ^^^^^^^^^^^^^^^^ @@ -338,7 +338,7 @@ LL | extern "rust-intrinsic" fn im1() {} = help: add `#![feature(intrinsics)]` to the crate attributes to enable error[E0658]: platform intrinsics are experimental and possibly buggy - --> $DIR/feature-gate-abi.rs:73:12 + --> $DIR/feature-gate-abi.rs:72:12 | LL | extern "platform-intrinsic" fn im2() {} | ^^^^^^^^^^^^^^^^^^^^ @@ -347,7 +347,7 @@ LL | extern "platform-intrinsic" fn im2() {} = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable error[E0658]: vectorcall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:75:12 + --> $DIR/feature-gate-abi.rs:74:12 | LL | extern "vectorcall" fn im3() {} | ^^^^^^^^^^^^ @@ -355,7 +355,7 @@ LL | extern "vectorcall" fn im3() {} = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable error[E0658]: rust-call ABI is subject to change - --> $DIR/feature-gate-abi.rs:76:12 + --> $DIR/feature-gate-abi.rs:75:12 | LL | extern "rust-call" fn im4(_: ()) {} | ^^^^^^^^^^^ @@ -364,7 +364,7 @@ LL | extern "rust-call" fn im4(_: ()) {} = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable error[E0658]: msp430-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:77:12 + --> $DIR/feature-gate-abi.rs:76:12 | LL | extern "msp430-interrupt" fn im5() {} | ^^^^^^^^^^^^^^^^^^ @@ -373,7 +373,7 @@ LL | extern "msp430-interrupt" fn im5() {} = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable error[E0658]: PTX ABIs are experimental and subject to change - --> $DIR/feature-gate-abi.rs:78:12 + --> $DIR/feature-gate-abi.rs:77:12 | LL | extern "ptx-kernel" fn im6() {} | ^^^^^^^^^^^^ @@ -382,7 +382,7 @@ LL | extern "ptx-kernel" fn im6() {} = help: add `#![feature(abi_ptx)]` to the crate attributes to enable error[E0658]: x86-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:79:12 + --> $DIR/feature-gate-abi.rs:78:12 | LL | extern "x86-interrupt" fn im7() {} | ^^^^^^^^^^^^^^^ @@ -391,7 +391,7 @@ LL | extern "x86-interrupt" fn im7() {} = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable error[E0658]: thiscall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:80:12 + --> $DIR/feature-gate-abi.rs:79:12 | LL | extern "thiscall" fn im8() {} | ^^^^^^^^^^ @@ -399,7 +399,7 @@ LL | extern "thiscall" fn im8() {} = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable error[E0658]: amdgpu-kernel ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:81:12 + --> $DIR/feature-gate-abi.rs:80:12 | LL | extern "amdgpu-kernel" fn im9() {} | ^^^^^^^^^^^^^^^ @@ -408,7 +408,7 @@ LL | extern "amdgpu-kernel" fn im9() {} = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:82:12 + --> $DIR/feature-gate-abi.rs:81:12 | LL | extern "efiapi" fn im10() {} | ^^^^^^^^ @@ -417,7 +417,7 @@ LL | extern "efiapi" fn im10() {} = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable error[E0658]: intrinsics are subject to change - --> $DIR/feature-gate-abi.rs:86:18 + --> $DIR/feature-gate-abi.rs:85:18 | LL | type A1 = extern "rust-intrinsic" fn(); | ^^^^^^^^^^^^^^^^ @@ -425,7 +425,7 @@ LL | type A1 = extern "rust-intrinsic" fn(); = help: add `#![feature(intrinsics)]` to the crate attributes to enable error[E0658]: platform intrinsics are experimental and possibly buggy - --> $DIR/feature-gate-abi.rs:87:18 + --> $DIR/feature-gate-abi.rs:86:18 | LL | type A2 = extern "platform-intrinsic" fn(); | ^^^^^^^^^^^^^^^^^^^^ @@ -434,7 +434,7 @@ LL | type A2 = extern "platform-intrinsic" fn(); = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable error[E0658]: vectorcall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:88:18 + --> $DIR/feature-gate-abi.rs:87:18 | LL | type A3 = extern "vectorcall" fn(); | ^^^^^^^^^^^^ @@ -442,7 +442,7 @@ LL | type A3 = extern "vectorcall" fn(); = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable error[E0658]: rust-call ABI is subject to change - --> $DIR/feature-gate-abi.rs:89:18 + --> $DIR/feature-gate-abi.rs:88:18 | LL | type A4 = extern "rust-call" fn(_: ()); | ^^^^^^^^^^^ @@ -451,7 +451,7 @@ LL | type A4 = extern "rust-call" fn(_: ()); = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable error[E0658]: msp430-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:90:18 + --> $DIR/feature-gate-abi.rs:89:18 | LL | type A5 = extern "msp430-interrupt" fn(); | ^^^^^^^^^^^^^^^^^^ @@ -460,7 +460,7 @@ LL | type A5 = extern "msp430-interrupt" fn(); = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable error[E0658]: PTX ABIs are experimental and subject to change - --> $DIR/feature-gate-abi.rs:91:18 + --> $DIR/feature-gate-abi.rs:90:18 | LL | type A6 = extern "ptx-kernel" fn (); | ^^^^^^^^^^^^ @@ -469,7 +469,7 @@ LL | type A6 = extern "ptx-kernel" fn (); = help: add `#![feature(abi_ptx)]` to the crate attributes to enable error[E0658]: x86-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:92:18 + --> $DIR/feature-gate-abi.rs:91:18 | LL | type A7 = extern "x86-interrupt" fn(); | ^^^^^^^^^^^^^^^ @@ -478,7 +478,7 @@ LL | type A7 = extern "x86-interrupt" fn(); = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable error[E0658]: thiscall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:93:18 + --> $DIR/feature-gate-abi.rs:92:18 | LL | type A8 = extern "thiscall" fn(); | ^^^^^^^^^^ @@ -486,7 +486,7 @@ LL | type A8 = extern "thiscall" fn(); = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable error[E0658]: amdgpu-kernel ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:94:18 + --> $DIR/feature-gate-abi.rs:93:18 | LL | type A9 = extern "amdgpu-kernel" fn(); | ^^^^^^^^^^^^^^^ @@ -495,7 +495,7 @@ LL | type A9 = extern "amdgpu-kernel" fn(); = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:95:19 + --> $DIR/feature-gate-abi.rs:94:19 | LL | type A10 = extern "efiapi" fn(); | ^^^^^^^^ @@ -504,7 +504,7 @@ LL | type A10 = extern "efiapi" fn(); = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable error[E0658]: intrinsics are subject to change - --> $DIR/feature-gate-abi.rs:98:8 + --> $DIR/feature-gate-abi.rs:97:8 | LL | extern "rust-intrinsic" {} | ^^^^^^^^^^^^^^^^ @@ -512,7 +512,7 @@ LL | extern "rust-intrinsic" {} = help: add `#![feature(intrinsics)]` to the crate attributes to enable error[E0658]: platform intrinsics are experimental and possibly buggy - --> $DIR/feature-gate-abi.rs:99:8 + --> $DIR/feature-gate-abi.rs:98:8 | LL | extern "platform-intrinsic" {} | ^^^^^^^^^^^^^^^^^^^^ @@ -521,7 +521,7 @@ LL | extern "platform-intrinsic" {} = help: add `#![feature(platform_intrinsics)]` to the crate attributes to enable error[E0658]: vectorcall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:100:8 + --> $DIR/feature-gate-abi.rs:99:8 | LL | extern "vectorcall" {} | ^^^^^^^^^^^^ @@ -529,7 +529,7 @@ LL | extern "vectorcall" {} = help: add `#![feature(abi_vectorcall)]` to the crate attributes to enable error[E0658]: rust-call ABI is subject to change - --> $DIR/feature-gate-abi.rs:101:8 + --> $DIR/feature-gate-abi.rs:100:8 | LL | extern "rust-call" {} | ^^^^^^^^^^^ @@ -538,7 +538,7 @@ LL | extern "rust-call" {} = help: add `#![feature(unboxed_closures)]` to the crate attributes to enable error[E0658]: msp430-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:102:8 + --> $DIR/feature-gate-abi.rs:101:8 | LL | extern "msp430-interrupt" {} | ^^^^^^^^^^^^^^^^^^ @@ -547,7 +547,7 @@ LL | extern "msp430-interrupt" {} = help: add `#![feature(abi_msp430_interrupt)]` to the crate attributes to enable error[E0658]: PTX ABIs are experimental and subject to change - --> $DIR/feature-gate-abi.rs:103:8 + --> $DIR/feature-gate-abi.rs:102:8 | LL | extern "ptx-kernel" {} | ^^^^^^^^^^^^ @@ -556,7 +556,7 @@ LL | extern "ptx-kernel" {} = help: add `#![feature(abi_ptx)]` to the crate attributes to enable error[E0658]: x86-interrupt ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:104:8 + --> $DIR/feature-gate-abi.rs:103:8 | LL | extern "x86-interrupt" {} | ^^^^^^^^^^^^^^^ @@ -565,7 +565,7 @@ LL | extern "x86-interrupt" {} = help: add `#![feature(abi_x86_interrupt)]` to the crate attributes to enable error[E0658]: thiscall is experimental and subject to change - --> $DIR/feature-gate-abi.rs:105:8 + --> $DIR/feature-gate-abi.rs:104:8 | LL | extern "thiscall" {} | ^^^^^^^^^^ @@ -573,7 +573,7 @@ LL | extern "thiscall" {} = help: add `#![feature(abi_thiscall)]` to the crate attributes to enable error[E0658]: amdgpu-kernel ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:106:8 + --> $DIR/feature-gate-abi.rs:105:8 | LL | extern "amdgpu-kernel" {} | ^^^^^^^^^^^^^^^ @@ -582,7 +582,7 @@ LL | extern "amdgpu-kernel" {} = help: add `#![feature(abi_amdgpu_kernel)]` to the crate attributes to enable error[E0658]: efiapi ABI is experimental and subject to change - --> $DIR/feature-gate-abi.rs:107:8 + --> $DIR/feature-gate-abi.rs:106:8 | LL | extern "efiapi" {} | ^^^^^^^^ @@ -591,49 +591,49 @@ LL | extern "efiapi" {} = help: add `#![feature(abi_efiapi)]` to the crate attributes to enable error: intrinsic must be in `extern "rust-intrinsic" { ... }` block - --> $DIR/feature-gate-abi.rs:28:32 + --> $DIR/feature-gate-abi.rs:27:32 | LL | extern "rust-intrinsic" fn m1(); | ^^ error: intrinsic must be in `extern "rust-intrinsic" { ... }` block - --> $DIR/feature-gate-abi.rs:30:36 + --> $DIR/feature-gate-abi.rs:29:36 | LL | extern "platform-intrinsic" fn m2(); | ^^ error: intrinsic must be in `extern "rust-intrinsic" { ... }` block - --> $DIR/feature-gate-abi.rs:13:33 + --> $DIR/feature-gate-abi.rs:12:33 | LL | extern "rust-intrinsic" fn f1() {} | ^^ error: intrinsic must be in `extern "rust-intrinsic" { ... }` block - --> $DIR/feature-gate-abi.rs:15:37 + --> $DIR/feature-gate-abi.rs:14:37 | LL | extern "platform-intrinsic" fn f2() {} | ^^ error: intrinsic must be in `extern "rust-intrinsic" { ... }` block - --> $DIR/feature-gate-abi.rs:55:37 + --> $DIR/feature-gate-abi.rs:54:37 | LL | extern "rust-intrinsic" fn m1() {} | ^^ error: intrinsic must be in `extern "rust-intrinsic" { ... }` block - --> $DIR/feature-gate-abi.rs:57:41 + --> $DIR/feature-gate-abi.rs:56:41 | LL | extern "platform-intrinsic" fn m2() {} | ^^ error: intrinsic must be in `extern "rust-intrinsic" { ... }` block - --> $DIR/feature-gate-abi.rs:71:38 + --> $DIR/feature-gate-abi.rs:70:38 | LL | extern "rust-intrinsic" fn im1() {} | ^^ error: intrinsic must be in `extern "rust-intrinsic" { ... }` block - --> $DIR/feature-gate-abi.rs:73:42 + --> $DIR/feature-gate-abi.rs:72:42 | LL | extern "platform-intrinsic" fn im2() {} | ^^ diff --git a/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.rs b/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.rs index 9f5c92349e06..04f816ea5016 100644 --- a/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.rs +++ b/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Test that `#[rustc_*]` attributes are gated by `rustc_attrs` feature gate. #[rustc_variance] //~ ERROR the `#[rustc_variance]` attribute is just used for rustc unit tests and will never be stable diff --git a/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.stderr b/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.stderr index 82dec1fd4cf2..822368a5946e 100644 --- a/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.stderr +++ b/src/test/ui/feature-gates/feature-gate-rustc-attrs-1.stderr @@ -1,5 +1,5 @@ error[E0658]: the `#[rustc_variance]` attribute is just used for rustc unit tests and will never be stable - --> $DIR/feature-gate-rustc-attrs-1.rs:5:1 + --> $DIR/feature-gate-rustc-attrs-1.rs:3:1 | LL | #[rustc_variance] | ^^^^^^^^^^^^^^^^^ @@ -7,7 +7,7 @@ LL | #[rustc_variance] = help: add `#![feature(rustc_attrs)]` to the crate attributes to enable error[E0658]: the `#[rustc_error]` attribute is just used for rustc unit tests and will never be stable - --> $DIR/feature-gate-rustc-attrs-1.rs:6:1 + --> $DIR/feature-gate-rustc-attrs-1.rs:4:1 | LL | #[rustc_error] | ^^^^^^^^^^^^^^ @@ -15,7 +15,7 @@ LL | #[rustc_error] = help: add `#![feature(rustc_attrs)]` to the crate attributes to enable error[E0658]: the `#[rustc_nonnull_optimization_guaranteed]` attribute is just used to enable niche optimizations in libcore and will never be stable - --> $DIR/feature-gate-rustc-attrs-1.rs:7:1 + --> $DIR/feature-gate-rustc-attrs-1.rs:5:1 | LL | #[rustc_nonnull_optimization_guaranteed] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs index 6404b2c3115c..07167fa695e4 100644 --- a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs +++ b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.rs @@ -8,7 +8,6 @@ // which would mess up the treatment of other cases in // issue-43106-gating-of-builtin-attrs.rs) -// ignore-tidy-linelength #![macro_export] //~^ ERROR: `macro_export` attribute cannot be used at crate level diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr index 3ca1bd2ea7e4..33a5021cde43 100644 --- a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr +++ b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs-error.stderr @@ -1,5 +1,5 @@ error: attribute must be of the form `#[inline]` or `#[inline(always|never)]` - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:41:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:40:5 | LL | #[inline = "2100"] fn f() { } | ^^^^^^^^^^^^^^^^^^ @@ -9,67 +9,67 @@ LL | #[inline = "2100"] fn f() { } = note: for more information, see issue #57571 error: `main` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:110:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:109:1 | LL | #[main] | ^^^^^^^ error: `main` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:113:17 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:112:17 | LL | mod inner { #![main] } | ^^^^^^^^ error: `main` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:118:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:117:5 | LL | #[main] struct S; | ^^^^^^^ error: `main` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:121:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:120:5 | LL | #[main] type T = S; | ^^^^^^^ error: `main` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:124:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:123:5 | LL | #[main] impl S { } | ^^^^^^^ error: `start` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:128:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:127:1 | LL | #[start] | ^^^^^^^^ error: `start` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:131:17 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:130:17 | LL | mod inner { #![start] } | ^^^^^^^^^ error: `start` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:136:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:135:5 | LL | #[start] struct S; | ^^^^^^^^ error: `start` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:139:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:138:5 | LL | #[start] type T = S; | ^^^^^^^^ error: `start` attribute can only be used on functions - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:142:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:141:5 | LL | #[start] impl S { } | ^^^^^^^^ error[E0518]: attribute should be applied to function or closure - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:32:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:31:1 | LL | #[inline] | ^^^^^^^^^ @@ -84,7 +84,7 @@ LL | | } | |_- not a function or closure error: attribute should be applied to an `extern crate` item - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:60:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:59:1 | LL | #[no_link] | ^^^^^^^^^^ @@ -99,7 +99,7 @@ LL | | } | |_- not an `extern crate` item error: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:86:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:85:1 | LL | #[export_name = "2200"] | ^^^^^^^^^^^^^^^^^^^^^^^ @@ -114,133 +114,133 @@ LL | | } | |_- not a function or static error: attribute should be applied to an `extern crate` item - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:26:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:25:1 | LL | #![no_link] | ^^^^^^^^^^^ error: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:28:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:27:1 | LL | #![export_name = "2200"] | ^^^^^^^^^^^^^^^^^^^^^^^^ error[E0518]: attribute should be applied to function or closure - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:30:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:29:1 | LL | #![inline] | ^^^^^^^^^^ error: `macro_export` attribute cannot be used at crate level - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:13:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:12:1 | LL | #![macro_export] | ^^^^^^^^^^^^^^^^ error: `main` attribute cannot be used at crate level - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:15:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:14:1 | LL | #![main] | ^^^^^^^^ error: `start` attribute cannot be used at crate level - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:17:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:16:1 | LL | #![start] | ^^^^^^^^^ error: `repr` attribute cannot be used at crate level - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:19:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:18:1 | LL | #![repr()] | ^^^^^^^^^^ error: `path` attribute cannot be used at crate level - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:21:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:20:1 | LL | #![path = "3800"] | ^^^^^^^^^^^^^^^^^ error: `automatically_derived` attribute cannot be used at crate level - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:23:1 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:22:1 | LL | #![automatically_derived] | ^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0518]: attribute should be applied to function or closure - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:37:17 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:36:17 | LL | mod inner { #![inline] } | ------------^^^^^^^^^^-- not a function or closure error[E0518]: attribute should be applied to function or closure - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:47:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:46:5 | LL | #[inline] struct S; | ^^^^^^^^^ --------- not a function or closure error[E0518]: attribute should be applied to function or closure - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:51:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:50:5 | LL | #[inline] type T = S; | ^^^^^^^^^ ----------- not a function or closure error[E0518]: attribute should be applied to function or closure - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:55:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:54:5 | LL | #[inline] impl S { } | ^^^^^^^^^ ---------- not a function or closure error: attribute should be applied to an `extern crate` item - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:65:17 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:64:17 | LL | mod inner { #![no_link] } | ------------^^^^^^^^^^^-- not an `extern crate` item error: attribute should be applied to an `extern crate` item - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:69:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:68:5 | LL | #[no_link] fn f() { } | ^^^^^^^^^^ ---------- not an `extern crate` item error: attribute should be applied to an `extern crate` item - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:73:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:72:5 | LL | #[no_link] struct S; | ^^^^^^^^^^ --------- not an `extern crate` item error: attribute should be applied to an `extern crate` item - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:77:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:76:5 | LL | #[no_link]type T = S; | ^^^^^^^^^^----------- not an `extern crate` item error: attribute should be applied to an `extern crate` item - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:81:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:80:5 | LL | #[no_link] impl S { } | ^^^^^^^^^^ ---------- not an `extern crate` item error: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:91:17 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:90:17 | LL | mod inner { #![export_name="2200"] } | ------------^^^^^^^^^^^^^^^^^^^^^^-- not a function or static error: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:97:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:96:5 | LL | #[export_name = "2200"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^^ --------- not a function or static error: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:101:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:100:5 | LL | #[export_name = "2200"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^^ ----------- not a function or static error: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:105:5 + --> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:104:5 | LL | #[export_name = "2200"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^^ ---------- not a function or static diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs index 21f40524f63d..19a60f1bcfff 100644 --- a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs +++ b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.rs @@ -34,7 +34,6 @@ // occurrences in the source text. // check-pass -// ignore-tidy-linelength #![feature(test, plugin_registrar)] #![warn(unused_attributes, unknown_lints)] diff --git a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr index c864ccc86866..c207c05455fe 100644 --- a/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr +++ b/src/test/ui/feature-gates/issue-43106-gating-of-builtin-attrs.stderr @@ -1,179 +1,179 @@ warning: unknown lint: `x5400` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:53:9 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:52:9 | LL | #![warn(x5400)] | ^^^^^ | note: the lint level is defined here - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:40:28 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:39:28 | LL | #![warn(unused_attributes, unknown_lints)] | ^^^^^^^^^^^^^ warning: unknown lint: `x5300` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:54:10 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:53:10 | LL | #![allow(x5300)] | ^^^^^ warning: unknown lint: `x5200` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:55:11 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:54:11 | LL | #![forbid(x5200)] | ^^^^^ warning: unknown lint: `x5100` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:56:9 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:55:9 | LL | #![deny(x5100)] | ^^^^^ warning: unknown lint: `x5400` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:111:8 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:110:8 | LL | #[warn(x5400)] | ^^^^^ warning: unknown lint: `x5400` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:114:25 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:113:25 | LL | mod inner { #![warn(x5400)] } | ^^^^^ warning: unknown lint: `x5400` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:117:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:116:12 | LL | #[warn(x5400)] fn f() { } | ^^^^^ warning: unknown lint: `x5400` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:120:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:119:12 | LL | #[warn(x5400)] struct S; | ^^^^^ warning: unknown lint: `x5400` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:123:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:122:12 | LL | #[warn(x5400)] type T = S; | ^^^^^ warning: unknown lint: `x5400` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:126:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:125:12 | LL | #[warn(x5400)] impl S { } | ^^^^^ warning: unknown lint: `x5300` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:130:9 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:129:9 | LL | #[allow(x5300)] | ^^^^^ warning: unknown lint: `x5300` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:133:26 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:132:26 | LL | mod inner { #![allow(x5300)] } | ^^^^^ warning: unknown lint: `x5300` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:136:13 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:135:13 | LL | #[allow(x5300)] fn f() { } | ^^^^^ warning: unknown lint: `x5300` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:139:13 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:138:13 | LL | #[allow(x5300)] struct S; | ^^^^^ warning: unknown lint: `x5300` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:142:13 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:141:13 | LL | #[allow(x5300)] type T = S; | ^^^^^ warning: unknown lint: `x5300` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:145:13 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:144:13 | LL | #[allow(x5300)] impl S { } | ^^^^^ warning: unknown lint: `x5200` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:149:10 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:148:10 | LL | #[forbid(x5200)] | ^^^^^ warning: unknown lint: `x5200` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:152:27 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:151:27 | LL | mod inner { #![forbid(x5200)] } | ^^^^^ warning: unknown lint: `x5200` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:155:14 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:154:14 | LL | #[forbid(x5200)] fn f() { } | ^^^^^ warning: unknown lint: `x5200` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:158:14 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:157:14 | LL | #[forbid(x5200)] struct S; | ^^^^^ warning: unknown lint: `x5200` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:161:14 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:160:14 | LL | #[forbid(x5200)] type T = S; | ^^^^^ warning: unknown lint: `x5200` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:164:14 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:163:14 | LL | #[forbid(x5200)] impl S { } | ^^^^^ warning: unknown lint: `x5100` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:168:8 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:167:8 | LL | #[deny(x5100)] | ^^^^^ warning: unknown lint: `x5100` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:171:25 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:170:25 | LL | mod inner { #![deny(x5100)] } | ^^^^^ warning: unknown lint: `x5100` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:174:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:173:12 | LL | #[deny(x5100)] fn f() { } | ^^^^^ warning: unknown lint: `x5100` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:177:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:176:12 | LL | #[deny(x5100)] struct S; | ^^^^^ warning: unknown lint: `x5100` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:180:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:179:12 | LL | #[deny(x5100)] type T = S; | ^^^^^ warning: unknown lint: `x5100` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:183:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:182:12 | LL | #[deny(x5100)] impl S { } | ^^^^^ warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:441:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:440:17 | LL | mod inner { #![macro_escape] } | ^^^^^^^^^^^^^^^^ @@ -181,13 +181,13 @@ LL | mod inner { #![macro_escape] } = help: try an outer attribute: `#[macro_use]` warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:438:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:437:1 | LL | #[macro_escape] | ^^^^^^^^^^^^^^^ warning: use of deprecated attribute `plugin_registrar`: compiler plugins are deprecated. See https://github.com/rust-lang/rust/pull/64675 - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:228:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:227:17 | LL | mod inner { #![plugin_registrar] } | ^^^^^^^^^^^^^^^^^^^^ help: may be removed in a future compiler version @@ -195,49 +195,49 @@ LL | mod inner { #![plugin_registrar] } = note: `#[warn(deprecated)]` on by default warning: use of deprecated attribute `plugin_registrar`: compiler plugins are deprecated. See https://github.com/rust-lang/rust/pull/64675 - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:236:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:235:5 | LL | #[plugin_registrar] struct S; | ^^^^^^^^^^^^^^^^^^^ help: may be removed in a future compiler version warning: use of deprecated attribute `plugin_registrar`: compiler plugins are deprecated. See https://github.com/rust-lang/rust/pull/64675 - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:241:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:240:5 | LL | #[plugin_registrar] type T = S; | ^^^^^^^^^^^^^^^^^^^ help: may be removed in a future compiler version warning: use of deprecated attribute `plugin_registrar`: compiler plugins are deprecated. See https://github.com/rust-lang/rust/pull/64675 - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:246:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:245:5 | LL | #[plugin_registrar] impl S { } | ^^^^^^^^^^^^^^^^^^^ help: may be removed in a future compiler version warning: use of deprecated attribute `plugin_registrar`: compiler plugins are deprecated. See https://github.com/rust-lang/rust/pull/64675 - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:223:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:222:1 | LL | #[plugin_registrar] | ^^^^^^^^^^^^^^^^^^^ help: may be removed in a future compiler version warning: use of deprecated attribute `plugin_registrar`: compiler plugins are deprecated. See https://github.com/rust-lang/rust/pull/64675 - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:46:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:45:1 | LL | #![plugin_registrar] | ^^^^^^^^^^^^^^^^^^^^ help: may be removed in a future compiler version warning: use of deprecated attribute `crate_id`: no longer used. - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:91:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:90:1 | LL | #![crate_id = "10"] | ^^^^^^^^^^^^^^^^^^^ help: remove this attribute warning: use of deprecated attribute `no_start`: no longer used. - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:100:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:99:1 | LL | #![no_start] | ^^^^^^^^^^^^ help: remove this attribute warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:333:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:332:1 | LL | #[no_mangle] | ^^^^^^^^^^^^ @@ -252,14 +252,14 @@ LL | | } | |_- not a function or static | note: the lint level is defined here - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:40:9 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:39:9 | LL | #![warn(unused_attributes, unknown_lints)] | ^^^^^^^^^^^^^^^^^ = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:500:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:499:1 | LL | #[cold] | ^^^^^^^ @@ -276,7 +276,7 @@ LL | | } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a foreign function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:529:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:528:1 | LL | #[link_name = "1900"] | ^^^^^^^^^^^^^^^^^^^^^ @@ -293,7 +293,7 @@ LL | | } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:568:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:567:1 | LL | #[link_section = "1800"] | ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -310,7 +310,7 @@ LL | | } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:69:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:68:1 | LL | #![cold] | ^^^^^^^^ @@ -318,7 +318,7 @@ LL | #![cold] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a foreign function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:73:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:72:1 | LL | #![link_name = "1900"] | ^^^^^^^^^^^^^^^^^^^^^^ @@ -326,7 +326,7 @@ LL | #![link_name = "1900"] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:76:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:75:1 | LL | #![link_section = "1800"] | ^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -334,7 +334,7 @@ LL | #![link_section = "1800"] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:338:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:337:17 | LL | mod inner { #![no_mangle] } | ------------^^^^^^^^^^^^^-- not a function or static @@ -342,7 +342,7 @@ LL | mod inner { #![no_mangle] } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:345:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:344:5 | LL | #[no_mangle] struct S; | ^^^^^^^^^^^^ --------- not a function or static @@ -350,7 +350,7 @@ LL | #[no_mangle] struct S; = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:350:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:349:5 | LL | #[no_mangle] type T = S; | ^^^^^^^^^^^^ ----------- not a function or static @@ -358,7 +358,7 @@ LL | #[no_mangle] type T = S; = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:355:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:354:5 | LL | #[no_mangle] impl S { } | ^^^^^^^^^^^^ ---------- not a function or static @@ -366,7 +366,7 @@ LL | #[no_mangle] impl S { } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:506:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:505:17 | LL | mod inner { #![cold] } | ------------^^^^^^^^-- not a function @@ -374,7 +374,7 @@ LL | mod inner { #![cold] } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:513:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:512:5 | LL | #[cold] struct S; | ^^^^^^^ --------- not a function @@ -382,7 +382,7 @@ LL | #[cold] struct S; = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:518:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:517:5 | LL | #[cold] type T = S; | ^^^^^^^ ----------- not a function @@ -390,7 +390,7 @@ LL | #[cold] type T = S; = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:523:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:522:5 | LL | #[cold] impl S { } | ^^^^^^^ ---------- not a function @@ -398,7 +398,7 @@ LL | #[cold] impl S { } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a foreign function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:535:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:534:5 | LL | #[link_name = "1900"] | ^^^^^^^^^^^^^^^^^^^^^ @@ -408,13 +408,13 @@ LL | extern "C" { } | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! help: try `#[link(name = "1900")]` instead - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:535:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:534:5 | LL | #[link_name = "1900"] | ^^^^^^^^^^^^^^^^^^^^^ warning: attribute should be applied to a foreign function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:542:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:541:17 | LL | mod inner { #![link_name="1900"] } | ------------^^^^^^^^^^^^^^^^^^^^-- not a foreign function or static @@ -422,7 +422,7 @@ LL | mod inner { #![link_name="1900"] } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a foreign function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:547:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:546:5 | LL | #[link_name = "1900"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^ ---------- not a foreign function or static @@ -430,7 +430,7 @@ LL | #[link_name = "1900"] fn f() { } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a foreign function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:552:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:551:5 | LL | #[link_name = "1900"] struct S; | ^^^^^^^^^^^^^^^^^^^^^ --------- not a foreign function or static @@ -438,7 +438,7 @@ LL | #[link_name = "1900"] struct S; = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a foreign function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:557:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:556:5 | LL | #[link_name = "1900"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^ ----------- not a foreign function or static @@ -446,7 +446,7 @@ LL | #[link_name = "1900"] type T = S; = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a foreign function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:562:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:561:5 | LL | #[link_name = "1900"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^ ---------- not a foreign function or static @@ -454,7 +454,7 @@ LL | #[link_name = "1900"] impl S { } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:574:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:573:17 | LL | mod inner { #![link_section="1800"] } | ------------^^^^^^^^^^^^^^^^^^^^^^^-- not a function or static @@ -462,7 +462,7 @@ LL | mod inner { #![link_section="1800"] } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:581:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:580:5 | LL | #[link_section = "1800"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^^^ --------- not a function or static @@ -470,7 +470,7 @@ LL | #[link_section = "1800"] struct S; = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:586:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:585:5 | LL | #[link_section = "1800"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^^^ ----------- not a function or static @@ -478,7 +478,7 @@ LL | #[link_section = "1800"] type T = S; = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a function or static - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:591:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:590:5 | LL | #[link_section = "1800"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^^^ ---------- not a function or static @@ -486,7 +486,7 @@ LL | #[link_section = "1800"] impl S { } = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: the feature `rust1` has been stable since 1.0.0 and no longer requires an attribute to enable - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:96:12 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:95:12 | LL | #![feature(rust1)] | ^^^^^ @@ -494,847 +494,847 @@ LL | #![feature(rust1)] = note: `#[warn(stable_features)]` on by default warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:46:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:45:1 | LL | #![plugin_registrar] | ^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:60:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:59:1 | LL | #![should_panic] | ^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:61:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:60:1 | LL | #![ignore] | ^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:67:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:66:1 | LL | #![proc_macro_derive()] | ^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:191:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:190:5 | LL | #[macro_use] fn f() { } | ^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:194:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:193:5 | LL | #[macro_use] struct S; | ^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:197:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:196:5 | LL | #[macro_use] type T = S; | ^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:200:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:199:5 | LL | #[macro_use] impl S { } | ^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:204:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:203:1 | LL | #[macro_export] | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:207:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:206:17 | LL | mod inner { #![macro_export] } | ^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:210:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:209:5 | LL | #[macro_export] fn f() { } | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:213:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:212:5 | LL | #[macro_export] struct S; | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:216:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:215:5 | LL | #[macro_export] type T = S; | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:219:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:218:5 | LL | #[macro_export] impl S { } | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:223:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:222:1 | LL | #[plugin_registrar] | ^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:228:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:227:17 | LL | mod inner { #![plugin_registrar] } | ^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:236:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:235:5 | LL | #[plugin_registrar] struct S; | ^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:241:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:240:5 | LL | #[plugin_registrar] type T = S; | ^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:246:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:245:5 | LL | #[plugin_registrar] impl S { } | ^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:301:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:300:5 | LL | #[path = "3800"] fn f() { } | ^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:304:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:303:5 | LL | #[path = "3800"] struct S; | ^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:307:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:306:5 | LL | #[path = "3800"] type T = S; | ^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:310:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:309:5 | LL | #[path = "3800"] impl S { } | ^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:314:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:313:1 | LL | #[automatically_derived] | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:317:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:316:17 | LL | mod inner { #![automatically_derived] } | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:320:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:319:5 | LL | #[automatically_derived] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:323:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:322:5 | LL | #[automatically_derived] struct S; | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:326:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:325:5 | LL | #[automatically_derived] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:329:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:328:5 | LL | #[automatically_derived] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:361:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:360:1 | LL | #[should_panic] | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:364:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:363:17 | LL | mod inner { #![should_panic] } | ^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:367:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:366:5 | LL | #[should_panic] fn f() { } | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:370:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:369:5 | LL | #[should_panic] struct S; | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:373:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:372:5 | LL | #[should_panic] type T = S; | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:376:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:375:5 | LL | #[should_panic] impl S { } | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:380:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:379:1 | LL | #[ignore] | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:383:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:382:17 | LL | mod inner { #![ignore] } | ^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:386:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:385:5 | LL | #[ignore] fn f() { } | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:389:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:388:5 | LL | #[ignore] struct S; | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:392:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:391:5 | LL | #[ignore] type T = S; | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:395:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:394:5 | LL | #[ignore] impl S { } | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:399:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:398:1 | LL | #[no_implicit_prelude] | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:402:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:401:17 | LL | mod inner { #![no_implicit_prelude] } | ^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:405:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:404:5 | LL | #[no_implicit_prelude] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:408:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:407:5 | LL | #[no_implicit_prelude] struct S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:411:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:410:5 | LL | #[no_implicit_prelude] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:414:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:413:5 | LL | #[no_implicit_prelude] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:418:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:417:1 | LL | #[reexport_test_harness_main = "2900"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:421:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:420:17 | LL | mod inner { #![reexport_test_harness_main="2900"] } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:424:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:423:5 | LL | #[reexport_test_harness_main = "2900"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:427:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:426:5 | LL | #[reexport_test_harness_main = "2900"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:430:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:429:5 | LL | #[reexport_test_harness_main = "2900"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:433:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:432:5 | LL | #[reexport_test_harness_main = "2900"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:445:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:444:5 | LL | #[macro_escape] fn f() { } | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:448:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:447:5 | LL | #[macro_escape] struct S; | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:451:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:450:5 | LL | #[macro_escape] type T = S; | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:454:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:453:5 | LL | #[macro_escape] impl S { } | ^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:458:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:457:1 | LL | #[no_std] | ^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:458:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:457:1 | LL | #[no_std] | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:462:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:461:17 | LL | mod inner { #![no_std] } | ^^^^^^^^^^ warning: crate-level attribute should be in the root module - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:462:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:461:17 | LL | mod inner { #![no_std] } | ^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:466:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:465:5 | LL | #[no_std] fn f() { } | ^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:466:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:465:5 | LL | #[no_std] fn f() { } | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:470:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:469:5 | LL | #[no_std] struct S; | ^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:470:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:469:5 | LL | #[no_std] struct S; | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:474:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:473:5 | LL | #[no_std] type T = S; | ^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:474:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:473:5 | LL | #[no_std] type T = S; | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:478:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:477:5 | LL | #[no_std] impl S { } | ^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:478:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:477:5 | LL | #[no_std] impl S { } | ^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:659:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:658:1 | LL | #[crate_name = "0900"] | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:659:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:658:1 | LL | #[crate_name = "0900"] | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:663:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:662:17 | LL | mod inner { #![crate_name="0900"] } | ^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be in the root module - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:663:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:662:17 | LL | mod inner { #![crate_name="0900"] } | ^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:667:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:666:5 | LL | #[crate_name = "0900"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:667:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:666:5 | LL | #[crate_name = "0900"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:671:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:670:5 | LL | #[crate_name = "0900"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:671:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:670:5 | LL | #[crate_name = "0900"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:675:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:674:5 | LL | #[crate_name = "0900"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:675:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:674:5 | LL | #[crate_name = "0900"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:679:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:678:5 | LL | #[crate_name = "0900"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:679:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:678:5 | LL | #[crate_name = "0900"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:684:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:683:1 | LL | #[crate_type = "0800"] | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:684:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:683:1 | LL | #[crate_type = "0800"] | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:688:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:687:17 | LL | mod inner { #![crate_type="0800"] } | ^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be in the root module - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:688:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:687:17 | LL | mod inner { #![crate_type="0800"] } | ^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:692:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:691:5 | LL | #[crate_type = "0800"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:692:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:691:5 | LL | #[crate_type = "0800"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:696:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:695:5 | LL | #[crate_type = "0800"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:696:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:695:5 | LL | #[crate_type = "0800"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:700:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:699:5 | LL | #[crate_type = "0800"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:700:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:699:5 | LL | #[crate_type = "0800"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:704:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:703:5 | LL | #[crate_type = "0800"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:704:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:703:5 | LL | #[crate_type = "0800"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:709:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:708:1 | LL | #[feature(x0600)] | ^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:709:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:708:1 | LL | #[feature(x0600)] | ^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:713:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:712:17 | LL | mod inner { #![feature(x0600)] } | ^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be in the root module - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:713:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:712:17 | LL | mod inner { #![feature(x0600)] } | ^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:717:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:716:5 | LL | #[feature(x0600)] fn f() { } | ^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:717:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:716:5 | LL | #[feature(x0600)] fn f() { } | ^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:721:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:720:5 | LL | #[feature(x0600)] struct S; | ^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:721:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:720:5 | LL | #[feature(x0600)] struct S; | ^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:725:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:724:5 | LL | #[feature(x0600)] type T = S; | ^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:725:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:724:5 | LL | #[feature(x0600)] type T = S; | ^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:729:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:728:5 | LL | #[feature(x0600)] impl S { } | ^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:729:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:728:5 | LL | #[feature(x0600)] impl S { } | ^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:735:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:734:1 | LL | #[no_main] | ^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:735:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:734:1 | LL | #[no_main] | ^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:739:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:738:17 | LL | mod inner { #![no_main] } | ^^^^^^^^^^^ warning: crate-level attribute should be in the root module - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:739:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:738:17 | LL | mod inner { #![no_main] } | ^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:743:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:742:5 | LL | #[no_main] fn f() { } | ^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:743:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:742:5 | LL | #[no_main] fn f() { } | ^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:747:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:746:5 | LL | #[no_main] struct S; | ^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:747:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:746:5 | LL | #[no_main] struct S; | ^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:751:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:750:5 | LL | #[no_main] type T = S; | ^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:751:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:750:5 | LL | #[no_main] type T = S; | ^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:755:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:754:5 | LL | #[no_main] impl S { } | ^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:755:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:754:5 | LL | #[no_main] impl S { } | ^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:773:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:772:1 | LL | #[recursion_limit="0200"] | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:773:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:772:1 | LL | #[recursion_limit="0200"] | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:777:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:776:17 | LL | mod inner { #![recursion_limit="0200"] } | ^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be in the root module - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:777:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:776:17 | LL | mod inner { #![recursion_limit="0200"] } | ^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:781:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:780:5 | LL | #[recursion_limit="0200"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:781:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:780:5 | LL | #[recursion_limit="0200"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:785:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:784:5 | LL | #[recursion_limit="0200"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:785:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:784:5 | LL | #[recursion_limit="0200"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:789:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:788:5 | LL | #[recursion_limit="0200"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:789:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:788:5 | LL | #[recursion_limit="0200"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:793:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:792:5 | LL | #[recursion_limit="0200"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:793:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:792:5 | LL | #[recursion_limit="0200"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:798:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:797:1 | LL | #[type_length_limit="0100"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:798:1 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:797:1 | LL | #[type_length_limit="0100"] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:802:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:801:17 | LL | mod inner { #![type_length_limit="0100"] } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be in the root module - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:802:17 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:801:17 | LL | mod inner { #![type_length_limit="0100"] } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:806:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:805:5 | LL | #[type_length_limit="0100"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:806:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:805:5 | LL | #[type_length_limit="0100"] fn f() { } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:810:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:809:5 | LL | #[type_length_limit="0100"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:810:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:809:5 | LL | #[type_length_limit="0100"] struct S; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:814:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:813:5 | LL | #[type_length_limit="0100"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:814:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:813:5 | LL | #[type_length_limit="0100"] type T = S; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused attribute - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:818:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:817:5 | LL | #[type_length_limit="0100"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]` - --> $DIR/issue-43106-gating-of-builtin-attrs.rs:818:5 + --> $DIR/issue-43106-gating-of-builtin-attrs.rs:817:5 | LL | #[type_length_limit="0100"] impl S { } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/impl-trait/bound-normalization-fail.rs b/src/test/ui/impl-trait/bound-normalization-fail.rs index 5bf3ec733f5d..d3056fb88512 100644 --- a/src/test/ui/impl-trait/bound-normalization-fail.rs +++ b/src/test/ui/impl-trait/bound-normalization-fail.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // edition:2018 #![feature(impl_trait_in_bindings)] diff --git a/src/test/ui/impl-trait/bound-normalization-fail.stderr b/src/test/ui/impl-trait/bound-normalization-fail.stderr index 6958cd97a4ac..ba3a2e7f8d4c 100644 --- a/src/test/ui/impl-trait/bound-normalization-fail.stderr +++ b/src/test/ui/impl-trait/bound-normalization-fail.stderr @@ -1,5 +1,5 @@ warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/bound-normalization-fail.rs:4:12 + --> $DIR/bound-normalization-fail.rs:3:12 | LL | #![feature(impl_trait_in_bindings)] | ^^^^^^^^^^^^^^^^^^^^^^ @@ -8,7 +8,7 @@ LL | #![feature(impl_trait_in_bindings)] = note: see issue #63065 for more information error[E0271]: type mismatch resolving ` as FooLike>::Output == ::Assoc` - --> $DIR/bound-normalization-fail.rs:27:32 + --> $DIR/bound-normalization-fail.rs:26:32 | LL | fn foo_fail() -> impl FooLike { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected associated type, found `()` @@ -21,13 +21,13 @@ LL | fn foo_fail>() -> impl FooLike { | ^^^^^^^^^^^^ error[E0760]: `impl Trait` return type cannot contain a projection or `Self` that references lifetimes from a parent scope - --> $DIR/bound-normalization-fail.rs:43:41 + --> $DIR/bound-normalization-fail.rs:42:41 | LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0271]: type mismatch resolving ` as FooLike>::Output == >::Assoc` - --> $DIR/bound-normalization-fail.rs:43:41 + --> $DIR/bound-normalization-fail.rs:42:41 | LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected associated type, found `()` diff --git a/src/test/ui/impl-trait/issue-55872-1.full_tait.stderr b/src/test/ui/impl-trait/issue-55872-1.full_tait.stderr index 67a500f34d8e..286dd7aafb43 100644 --- a/src/test/ui/impl-trait/issue-55872-1.full_tait.stderr +++ b/src/test/ui/impl-trait/issue-55872-1.full_tait.stderr @@ -1,5 +1,5 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-55872-1.rs:4:32 + --> $DIR/issue-55872-1.rs:3:32 | LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ @@ -8,7 +8,7 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: see issue #63063 for more information error[E0276]: impl has stricter requirements than trait - --> $DIR/issue-55872-1.rs:18:5 + --> $DIR/issue-55872-1.rs:17:5 | LL | fn foo() -> Self::E; | ----------------------- definition of `foo` from trait @@ -17,7 +17,7 @@ LL | fn foo() -> Self::E { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `T: Default` error[E0277]: the trait bound `S: Copy` is not satisfied in `(S, T)` - --> $DIR/issue-55872-1.rs:14:14 + --> $DIR/issue-55872-1.rs:13:14 | LL | type E = impl Copy; | ^^^^^^^^^ within `(S, T)`, the trait `Copy` is not implemented for `S` @@ -29,7 +29,7 @@ LL | impl Bar for S { | ^^^^^^^^^^^^^^^^^^^ error[E0277]: the trait bound `T: Copy` is not satisfied in `(S, T)` - --> $DIR/issue-55872-1.rs:14:14 + --> $DIR/issue-55872-1.rs:13:14 | LL | type E = impl Copy; | ^^^^^^^^^ within `(S, T)`, the trait `Copy` is not implemented for `T` @@ -41,7 +41,7 @@ LL | fn foo() -> Self::E { | ^^^^^^^^^^^^^^^^^^^ error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-55872-1.rs:18:37 + --> $DIR/issue-55872-1.rs:17:37 | LL | fn foo() -> Self::E { | _____________________________________^ diff --git a/src/test/ui/impl-trait/issue-55872-1.min_tait.stderr b/src/test/ui/impl-trait/issue-55872-1.min_tait.stderr index 90225d249d75..653299f4cbce 100644 --- a/src/test/ui/impl-trait/issue-55872-1.min_tait.stderr +++ b/src/test/ui/impl-trait/issue-55872-1.min_tait.stderr @@ -1,5 +1,5 @@ error[E0276]: impl has stricter requirements than trait - --> $DIR/issue-55872-1.rs:18:5 + --> $DIR/issue-55872-1.rs:17:5 | LL | fn foo() -> Self::E; | ----------------------- definition of `foo` from trait @@ -8,7 +8,7 @@ LL | fn foo() -> Self::E { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `T: Default` error[E0277]: the trait bound `S: Copy` is not satisfied in `(S, T)` - --> $DIR/issue-55872-1.rs:14:14 + --> $DIR/issue-55872-1.rs:13:14 | LL | type E = impl Copy; | ^^^^^^^^^ within `(S, T)`, the trait `Copy` is not implemented for `S` @@ -20,7 +20,7 @@ LL | impl Bar for S { | ^^^^^^^^^^^^^^^^^^^ error[E0277]: the trait bound `T: Copy` is not satisfied in `(S, T)` - --> $DIR/issue-55872-1.rs:14:14 + --> $DIR/issue-55872-1.rs:13:14 | LL | type E = impl Copy; | ^^^^^^^^^ within `(S, T)`, the trait `Copy` is not implemented for `T` @@ -32,7 +32,7 @@ LL | fn foo() -> Self::E { | ^^^^^^^^^^^^^^^^^^^ error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-55872-1.rs:18:37 + --> $DIR/issue-55872-1.rs:17:37 | LL | fn foo() -> Self::E { | _____________________________________^ diff --git a/src/test/ui/impl-trait/issue-55872-1.rs b/src/test/ui/impl-trait/issue-55872-1.rs index e5e437cd84b6..a9e9c9b5bebe 100644 --- a/src/test/ui/impl-trait/issue-55872-1.rs +++ b/src/test/ui/impl-trait/issue-55872-1.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] #![cfg_attr(full_tait, feature(type_alias_impl_trait))] diff --git a/src/test/ui/impl-trait/issue-55872-2.full_tait.stderr b/src/test/ui/impl-trait/issue-55872-2.full_tait.stderr index 14a5c0ba97e3..a8fc681a093d 100644 --- a/src/test/ui/impl-trait/issue-55872-2.full_tait.stderr +++ b/src/test/ui/impl-trait/issue-55872-2.full_tait.stderr @@ -1,5 +1,5 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-55872-2.rs:7:32 + --> $DIR/issue-55872-2.rs:6:32 | LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ @@ -8,13 +8,13 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: see issue #63063 for more information error[E0277]: the trait bound `impl Future: Copy` is not satisfied - --> $DIR/issue-55872-2.rs:17:14 + --> $DIR/issue-55872-2.rs:16:14 | LL | type E = impl std::marker::Copy; | ^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `impl Future` error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-55872-2.rs:19:28 + --> $DIR/issue-55872-2.rs:18:28 | LL | fn foo() -> Self::E { | ____________________________^ diff --git a/src/test/ui/impl-trait/issue-55872-2.min_tait.stderr b/src/test/ui/impl-trait/issue-55872-2.min_tait.stderr index c8df502345a3..57f81443dccd 100644 --- a/src/test/ui/impl-trait/issue-55872-2.min_tait.stderr +++ b/src/test/ui/impl-trait/issue-55872-2.min_tait.stderr @@ -1,11 +1,11 @@ error[E0277]: the trait bound `impl Future: Copy` is not satisfied - --> $DIR/issue-55872-2.rs:17:14 + --> $DIR/issue-55872-2.rs:16:14 | LL | type E = impl std::marker::Copy; | ^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `impl Future` error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-55872-2.rs:19:28 + --> $DIR/issue-55872-2.rs:18:28 | LL | fn foo() -> Self::E { | ____________________________^ diff --git a/src/test/ui/impl-trait/issue-55872-2.rs b/src/test/ui/impl-trait/issue-55872-2.rs index 9c2e9b860c4b..cd72b2eec3cf 100644 --- a/src/test/ui/impl-trait/issue-55872-2.rs +++ b/src/test/ui/impl-trait/issue-55872-2.rs @@ -1,5 +1,4 @@ // edition:2018 -// ignore-tidy-linelength // ignore-compare-mode-chalk // revisions: min_tait full_tait diff --git a/src/test/ui/impl-trait/issue-55872.full_tait.stderr b/src/test/ui/impl-trait/issue-55872.full_tait.stderr index 5a35689a7372..e549fec1c229 100644 --- a/src/test/ui/impl-trait/issue-55872.full_tait.stderr +++ b/src/test/ui/impl-trait/issue-55872.full_tait.stderr @@ -1,5 +1,5 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-55872.rs:5:32 + --> $DIR/issue-55872.rs:4:32 | LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ @@ -8,7 +8,7 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: see issue #63063 for more information error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-55872.rs:17:28 + --> $DIR/issue-55872.rs:16:28 | LL | fn foo() -> Self::E { | ____________________________^ diff --git a/src/test/ui/impl-trait/issue-55872.min_tait.stderr b/src/test/ui/impl-trait/issue-55872.min_tait.stderr index 9baf28346438..341dba95cad8 100644 --- a/src/test/ui/impl-trait/issue-55872.min_tait.stderr +++ b/src/test/ui/impl-trait/issue-55872.min_tait.stderr @@ -1,5 +1,5 @@ error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-55872.rs:17:28 + --> $DIR/issue-55872.rs:16:28 | LL | fn foo() -> Self::E { | ____________________________^ diff --git a/src/test/ui/impl-trait/issue-55872.rs b/src/test/ui/impl-trait/issue-55872.rs index 9a31cf521b38..e3fc523feccb 100644 --- a/src/test/ui/impl-trait/issue-55872.rs +++ b/src/test/ui/impl-trait/issue-55872.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-compare-mode-chalk // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] diff --git a/src/test/ui/imports/extern-prelude-extern-crate-fail.rs b/src/test/ui/imports/extern-prelude-extern-crate-fail.rs index 4a0c61202019..feb1ab09dc9e 100644 --- a/src/test/ui/imports/extern-prelude-extern-crate-fail.rs +++ b/src/test/ui/imports/extern-prelude-extern-crate-fail.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // aux-build:two_macros.rs // compile-flags:--extern non_existent diff --git a/src/test/ui/imports/extern-prelude-extern-crate-fail.stderr b/src/test/ui/imports/extern-prelude-extern-crate-fail.stderr index 2d7a1bf468e3..011ea0205082 100644 --- a/src/test/ui/imports/extern-prelude-extern-crate-fail.stderr +++ b/src/test/ui/imports/extern-prelude-extern-crate-fail.stderr @@ -1,5 +1,5 @@ error: macro-expanded `extern crate` items cannot shadow names passed with `--extern` - --> $DIR/extern-prelude-extern-crate-fail.rs:18:9 + --> $DIR/extern-prelude-extern-crate-fail.rs:16:9 | LL | extern crate std as non_existent; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -10,7 +10,7 @@ LL | define_std_as_non_existent!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared crate or module `two_macros` - --> $DIR/extern-prelude-extern-crate-fail.rs:12:9 + --> $DIR/extern-prelude-extern-crate-fail.rs:10:9 | LL | two_macros::m!(); | ^^^^^^^^^^ use of undeclared crate or module `two_macros` diff --git a/src/test/ui/issues/issue-3214.rs b/src/test/ui/issues/issue-3214.rs index 9bb164f1ddd2..ccfaf23b4b9f 100644 --- a/src/test/ui/issues/issue-3214.rs +++ b/src/test/ui/issues/issue-3214.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - fn foo() { struct Foo { x: T, //~ ERROR can't use generic parameters from outer function diff --git a/src/test/ui/issues/issue-3214.stderr b/src/test/ui/issues/issue-3214.stderr index c2268924bc4e..0da095b7fdab 100644 --- a/src/test/ui/issues/issue-3214.stderr +++ b/src/test/ui/issues/issue-3214.stderr @@ -1,5 +1,5 @@ error[E0401]: can't use generic parameters from outer function - --> $DIR/issue-3214.rs:5:12 + --> $DIR/issue-3214.rs:3:12 | LL | fn foo() { | --- - type parameter from outer function @@ -10,7 +10,7 @@ LL | x: T, | ^ use of generic parameter from outer function error[E0107]: this struct takes 0 type arguments but 1 type argument was supplied - --> $DIR/issue-3214.rs:8:22 + --> $DIR/issue-3214.rs:6:22 | LL | impl Drop for Foo { | ^^^--- help: remove these generics @@ -18,13 +18,13 @@ LL | impl Drop for Foo { | expected 0 type arguments | note: struct defined here, with 0 type parameters - --> $DIR/issue-3214.rs:4:12 + --> $DIR/issue-3214.rs:2:12 | LL | struct Foo { | ^^^ error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predicates - --> $DIR/issue-3214.rs:8:10 + --> $DIR/issue-3214.rs:6:10 | LL | impl Drop for Foo { | ^ unconstrained type parameter diff --git a/src/test/ui/issues/issue-45157.rs b/src/test/ui/issues/issue-45157.rs index bd18784289fe..8d2bf22a03c9 100644 --- a/src/test/ui/issues/issue-45157.rs +++ b/src/test/ui/issues/issue-45157.rs @@ -1,6 +1,5 @@ #![allow(unused)] -// ignore-tidy-linelength #[derive(Clone, Copy, Default)] struct S { diff --git a/src/test/ui/issues/issue-45157.stderr b/src/test/ui/issues/issue-45157.stderr index 1b879e0b48c8..57fd8d49c887 100644 --- a/src/test/ui/issues/issue-45157.stderr +++ b/src/test/ui/issues/issue-45157.stderr @@ -1,5 +1,5 @@ error[E0502]: cannot borrow `u` (via `u.z.c`) as immutable because it is also borrowed as mutable (via `u.s.a`) - --> $DIR/issue-45157.rs:28:20 + --> $DIR/issue-45157.rs:27:20 | LL | let mref = &mut u.s.a; | ---------- mutable borrow occurs here (via `u.s.a`) diff --git a/src/test/ui/issues/issue-47725.rs b/src/test/ui/issues/issue-47725.rs index 21108da50061..9ec55be58723 100644 --- a/src/test/ui/issues/issue-47725.rs +++ b/src/test/ui/issues/issue-47725.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![warn(unused_attributes)] //~ NOTE lint level is defined here #[link_name = "foo"] diff --git a/src/test/ui/issues/issue-47725.stderr b/src/test/ui/issues/issue-47725.stderr index b1e8d3292eb9..c7a9bfe317f0 100644 --- a/src/test/ui/issues/issue-47725.stderr +++ b/src/test/ui/issues/issue-47725.stderr @@ -1,11 +1,11 @@ error: malformed `link_name` attribute input - --> $DIR/issue-47725.rs:18:1 + --> $DIR/issue-47725.rs:17:1 | LL | #[link_name] | ^^^^^^^^^^^^ help: must be of the form: `#[link_name = "name"]` warning: attribute should be applied to a foreign function or static - --> $DIR/issue-47725.rs:4:1 + --> $DIR/issue-47725.rs:3:1 | LL | #[link_name = "foo"] | ^^^^^^^^^^^^^^^^^^^^ @@ -14,14 +14,14 @@ LL | struct Foo; | ----------- not a foreign function or static | note: the lint level is defined here - --> $DIR/issue-47725.rs:2:9 + --> $DIR/issue-47725.rs:1:9 | LL | #![warn(unused_attributes)] | ^^^^^^^^^^^^^^^^^ = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! warning: attribute should be applied to a foreign function or static - --> $DIR/issue-47725.rs:9:1 + --> $DIR/issue-47725.rs:8:1 | LL | #[link_name = "foobar"] | ^^^^^^^^^^^^^^^^^^^^^^^ @@ -33,13 +33,13 @@ LL | | } | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! help: try `#[link(name = "foobar")]` instead - --> $DIR/issue-47725.rs:9:1 + --> $DIR/issue-47725.rs:8:1 | LL | #[link_name = "foobar"] | ^^^^^^^^^^^^^^^^^^^^^^^ warning: attribute should be applied to a foreign function or static - --> $DIR/issue-47725.rs:18:1 + --> $DIR/issue-47725.rs:17:1 | LL | #[link_name] | ^^^^^^^^^^^^ @@ -51,7 +51,7 @@ LL | | } | = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! help: try `#[link(name = "...")]` instead - --> $DIR/issue-47725.rs:18:1 + --> $DIR/issue-47725.rs:17:1 | LL | #[link_name] | ^^^^^^^^^^^^ diff --git a/src/test/ui/issues/issue-53251.rs b/src/test/ui/issues/issue-53251.rs index 309b9800b7d3..937271d42f4b 100644 --- a/src/test/ui/issues/issue-53251.rs +++ b/src/test/ui/issues/issue-53251.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - struct S; impl S { diff --git a/src/test/ui/issues/issue-53251.stderr b/src/test/ui/issues/issue-53251.stderr index 5d1a6d4a522f..1676c508a4dc 100644 --- a/src/test/ui/issues/issue-53251.stderr +++ b/src/test/ui/issues/issue-53251.stderr @@ -1,5 +1,5 @@ error[E0107]: this associated function takes 0 type arguments but 1 type argument was supplied - --> $DIR/issue-53251.rs:13:20 + --> $DIR/issue-53251.rs:11:20 | LL | S::f::(); | ^------- help: remove these generics @@ -10,14 +10,14 @@ LL | impl_add!(a b); | --------------- in this macro invocation | note: associated function defined here, with 0 type parameters - --> $DIR/issue-53251.rs:6:8 + --> $DIR/issue-53251.rs:4:8 | LL | fn f() {} | ^ = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error[E0107]: this associated function takes 0 type arguments but 1 type argument was supplied - --> $DIR/issue-53251.rs:13:20 + --> $DIR/issue-53251.rs:11:20 | LL | S::f::(); | ^------- help: remove these generics @@ -28,7 +28,7 @@ LL | impl_add!(a b); | --------------- in this macro invocation | note: associated function defined here, with 0 type parameters - --> $DIR/issue-53251.rs:6:8 + --> $DIR/issue-53251.rs:4:8 | LL | fn f() {} | ^ diff --git a/src/test/ui/issues/issue-54044.rs b/src/test/ui/issues/issue-54044.rs index 3f0b8bc5e384..809ea7a87dbe 100644 --- a/src/test/ui/issues/issue-54044.rs +++ b/src/test/ui/issues/issue-54044.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength #![deny(unused_attributes)] //~ NOTE lint level is defined here #[cold] diff --git a/src/test/ui/issues/issue-54044.stderr b/src/test/ui/issues/issue-54044.stderr index a13e84bbee1a..0200a6a629d8 100644 --- a/src/test/ui/issues/issue-54044.stderr +++ b/src/test/ui/issues/issue-54044.stderr @@ -1,5 +1,5 @@ error: attribute should be applied to a function - --> $DIR/issue-54044.rs:4:1 + --> $DIR/issue-54044.rs:3:1 | LL | #[cold] | ^^^^^^^ @@ -8,14 +8,14 @@ LL | struct Foo; | ----------- not a function | note: the lint level is defined here - --> $DIR/issue-54044.rs:2:9 + --> $DIR/issue-54044.rs:1:9 | LL | #![deny(unused_attributes)] | ^^^^^^^^^^^^^^^^^ = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! error: attribute should be applied to a function - --> $DIR/issue-54044.rs:10:5 + --> $DIR/issue-54044.rs:9:5 | LL | #[cold] | ^^^^^^^ diff --git a/src/test/ui/issues/issue-60622.rs b/src/test/ui/issues/issue-60622.rs index 1d9bd2dd2dc1..1018c88ae55e 100644 --- a/src/test/ui/issues/issue-60622.rs +++ b/src/test/ui/issues/issue-60622.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![deny(warnings)] struct Borked {} diff --git a/src/test/ui/issues/issue-60622.stderr b/src/test/ui/issues/issue-60622.stderr index 47f2f181f2d7..f970a63e4b2f 100644 --- a/src/test/ui/issues/issue-60622.stderr +++ b/src/test/ui/issues/issue-60622.stderr @@ -1,5 +1,5 @@ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/issue-60622.rs:12:11 + --> $DIR/issue-60622.rs:10:11 | LL | fn a(&self) {} | - the late bound lifetime parameter is introduced here @@ -8,7 +8,7 @@ LL | b.a::<'_, T>(); | ^^ | note: the lint level is defined here - --> $DIR/issue-60622.rs:3:9 + --> $DIR/issue-60622.rs:1:9 | LL | #![deny(warnings)] | ^^^^^^^^ @@ -17,7 +17,7 @@ LL | #![deny(warnings)] = note: for more information, see issue #42868 error[E0107]: this associated function takes 0 type arguments but 1 type argument was supplied - --> $DIR/issue-60622.rs:12:7 + --> $DIR/issue-60622.rs:10:7 | LL | b.a::<'_, T>(); | ^ --- help: remove this type argument @@ -25,7 +25,7 @@ LL | b.a::<'_, T>(); | expected 0 type arguments | note: associated function defined here, with 0 type parameters - --> $DIR/issue-60622.rs:8:8 + --> $DIR/issue-60622.rs:6:8 | LL | fn a(&self) {} | ^ diff --git a/src/test/ui/issues/issue-82833-slice-miscompile.rs b/src/test/ui/issues/issue-82833-slice-miscompile.rs index b14e5f6fb12f..8cf6a3137e2d 100644 --- a/src/test/ui/issues/issue-82833-slice-miscompile.rs +++ b/src/test/ui/issues/issue-82833-slice-miscompile.rs @@ -1,6 +1,5 @@ // run-pass // compile-flags: -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Copt-level=0 -Cdebuginfo=2 -// ignore-tidy-linelength // Make sure LLVM does not miscompile this. diff --git a/src/test/ui/kinds-of-primitive-impl.rs b/src/test/ui/kinds-of-primitive-impl.rs index cbd4d7ae904f..b045b050d77a 100644 --- a/src/test/ui/kinds-of-primitive-impl.rs +++ b/src/test/ui/kinds-of-primitive-impl.rs @@ -1,6 +1,3 @@ -// ignore-tidy-linelength - - impl u8 { //~^ error: only a single inherent implementation marked with `#[lang = "u8"]` is allowed for the `u8` primitive pub const B: u8 = 0; diff --git a/src/test/ui/kinds-of-primitive-impl.stderr b/src/test/ui/kinds-of-primitive-impl.stderr index d19c85b17f9e..f1fb29530835 100644 --- a/src/test/ui/kinds-of-primitive-impl.stderr +++ b/src/test/ui/kinds-of-primitive-impl.stderr @@ -1,5 +1,5 @@ error[E0390]: only a single inherent implementation marked with `#[lang = "u8"]` is allowed for the `u8` primitive - --> $DIR/kinds-of-primitive-impl.rs:4:1 + --> $DIR/kinds-of-primitive-impl.rs:1:1 | LL | / impl u8 { LL | | @@ -10,7 +10,7 @@ LL | | } = help: consider using a trait to implement this constant error[E0390]: only a single inherent implementation marked with `#[lang = "str"]` is allowed for the `str` primitive - --> $DIR/kinds-of-primitive-impl.rs:9:1 + --> $DIR/kinds-of-primitive-impl.rs:6:1 | LL | / impl str { LL | | @@ -22,7 +22,7 @@ LL | | } = help: consider using a trait to implement these methods error[E0390]: only a single inherent implementation marked with `#[lang = "char"]` is allowed for the `char` primitive - --> $DIR/kinds-of-primitive-impl.rs:15:1 + --> $DIR/kinds-of-primitive-impl.rs:12:1 | LL | / impl char { LL | | diff --git a/src/test/ui/lint/lint-stability-deprecated.rs b/src/test/ui/lint/lint-stability-deprecated.rs index a6fde11495c5..5bdddf714186 100644 --- a/src/test/ui/lint/lint-stability-deprecated.rs +++ b/src/test/ui/lint/lint-stability-deprecated.rs @@ -3,7 +3,6 @@ // aux-build:inherited_stability.rs // aux-build:stability_cfg1.rs // aux-build:stability-cfg2.rs -// ignore-tidy-linelength #![warn(deprecated)] #![feature(staged_api, unstable_test_feature)] diff --git a/src/test/ui/lint/lint-stability-deprecated.stderr b/src/test/ui/lint/lint-stability-deprecated.stderr index d8dd83b0d06b..47dc8e4a63c0 100644 --- a/src/test/ui/lint/lint-stability-deprecated.stderr +++ b/src/test/ui/lint/lint-stability-deprecated.stderr @@ -1,653 +1,653 @@ warning: use of deprecated function `lint_stability::deprecated`: text - --> $DIR/lint-stability-deprecated.rs:25:9 + --> $DIR/lint-stability-deprecated.rs:24:9 | LL | deprecated(); | ^^^^^^^^^^ | note: the lint level is defined here - --> $DIR/lint-stability-deprecated.rs:7:9 + --> $DIR/lint-stability-deprecated.rs:6:9 | LL | #![warn(deprecated)] | ^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:30:9 + --> $DIR/lint-stability-deprecated.rs:29:9 | LL | Trait::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:32:9 + --> $DIR/lint-stability-deprecated.rs:31:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated function `lint_stability::deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:34:9 + --> $DIR/lint-stability-deprecated.rs:33:9 | LL | deprecated_text(); | ^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:39:9 + --> $DIR/lint-stability-deprecated.rs:38:9 | LL | ... Trait::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:41:9 + --> $DIR/lint-stability-deprecated.rs:40:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated function `lint_stability::deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:43:9 + --> $DIR/lint-stability-deprecated.rs:42:9 | LL | deprecated_unstable(); | ^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:48:9 + --> $DIR/lint-stability-deprecated.rs:47:9 | LL | ... Trait::trait_deprecated_unstable(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:50:9 + --> $DIR/lint-stability-deprecated.rs:49:9 | LL | ... ::trait_deprecated_unstable(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated function `lint_stability::deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:52:9 + --> $DIR/lint-stability-deprecated.rs:51:9 | LL | deprecated_unstable_text(); | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:57:9 + --> $DIR/lint-stability-deprecated.rs:56:9 | LL | ... Trait::trait_deprecated_unstable_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:59:9 + --> $DIR/lint-stability-deprecated.rs:58:9 | LL | ... ::trait_deprecated_unstable_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated struct `lint_stability::DeprecatedStruct`: text - --> $DIR/lint-stability-deprecated.rs:109:17 + --> $DIR/lint-stability-deprecated.rs:108:17 | LL | let _ = DeprecatedStruct { | ^^^^^^^^^^^^^^^^ warning: use of deprecated struct `lint_stability::DeprecatedUnstableStruct`: text - --> $DIR/lint-stability-deprecated.rs:112:17 + --> $DIR/lint-stability-deprecated.rs:111:17 | LL | let _ = DeprecatedUnstableStruct { | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated struct `lint_stability::DeprecatedUnitStruct`: text - --> $DIR/lint-stability-deprecated.rs:119:17 + --> $DIR/lint-stability-deprecated.rs:118:17 | LL | let _ = DeprecatedUnitStruct; | ^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated struct `lint_stability::DeprecatedUnstableUnitStruct`: text - --> $DIR/lint-stability-deprecated.rs:120:17 + --> $DIR/lint-stability-deprecated.rs:119:17 | LL | let _ = DeprecatedUnstableUnitStruct; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated variant `lint_stability::Enum::DeprecatedVariant`: text - --> $DIR/lint-stability-deprecated.rs:124:17 + --> $DIR/lint-stability-deprecated.rs:123:17 | LL | let _ = Enum::DeprecatedVariant; | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated variant `lint_stability::Enum::DeprecatedUnstableVariant`: text - --> $DIR/lint-stability-deprecated.rs:125:17 + --> $DIR/lint-stability-deprecated.rs:124:17 | LL | let _ = Enum::DeprecatedUnstableVariant; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated struct `lint_stability::DeprecatedTupleStruct`: text - --> $DIR/lint-stability-deprecated.rs:129:17 + --> $DIR/lint-stability-deprecated.rs:128:17 | LL | let _ = DeprecatedTupleStruct (1); | ^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated struct `lint_stability::DeprecatedUnstableTupleStruct`: text - --> $DIR/lint-stability-deprecated.rs:130:17 + --> $DIR/lint-stability-deprecated.rs:129:17 | LL | let _ = DeprecatedUnstableTupleStruct (1); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated function `lint_stability::deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:139:25 + --> $DIR/lint-stability-deprecated.rs:138:25 | LL | macro_test_arg!(deprecated_text()); | ^^^^^^^^^^^^^^^ warning: use of deprecated function `lint_stability::deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:140:25 + --> $DIR/lint-stability-deprecated.rs:139:25 | LL | macro_test_arg!(deprecated_unstable_text()); | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated function `lint_stability::deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:141:41 + --> $DIR/lint-stability-deprecated.rs:140:41 | LL | macro_test_arg!(macro_test_arg!(deprecated_text())); | ^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:146:9 + --> $DIR/lint-stability-deprecated.rs:145:9 | LL | Trait::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:148:9 + --> $DIR/lint-stability-deprecated.rs:147:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:150:9 + --> $DIR/lint-stability-deprecated.rs:149:9 | LL | ... Trait::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:152:9 + --> $DIR/lint-stability-deprecated.rs:151:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:154:9 + --> $DIR/lint-stability-deprecated.rs:153:9 | LL | ... Trait::trait_deprecated_unstable(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:156:9 + --> $DIR/lint-stability-deprecated.rs:155:9 | LL | ... ::trait_deprecated_unstable(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:158:9 + --> $DIR/lint-stability-deprecated.rs:157:9 | LL | ... Trait::trait_deprecated_unstable_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:160:9 + --> $DIR/lint-stability-deprecated.rs:159:9 | LL | ... ::trait_deprecated_unstable_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated trait `lint_stability::DeprecatedTrait`: text - --> $DIR/lint-stability-deprecated.rs:188:10 + --> $DIR/lint-stability-deprecated.rs:187:10 | LL | impl DeprecatedTrait for S {} | ^^^^^^^^^^^^^^^ warning: use of deprecated trait `lint_stability::DeprecatedTrait`: text - --> $DIR/lint-stability-deprecated.rs:190:25 + --> $DIR/lint-stability-deprecated.rs:189:25 | LL | trait LocalTrait2 : DeprecatedTrait { } | ^^^^^^^^^^^^^^^ warning: use of deprecated function `inheritance::inherited_stability::unstable_mod::deprecated`: text - --> $DIR/lint-stability-deprecated.rs:209:9 + --> $DIR/lint-stability-deprecated.rs:208:9 | LL | unstable_mod::deprecated(); | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated function `this_crate::deprecated`: text - --> $DIR/lint-stability-deprecated.rs:331:9 + --> $DIR/lint-stability-deprecated.rs:330:9 | LL | deprecated(); | ^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:336:9 + --> $DIR/lint-stability-deprecated.rs:335:9 | LL | Trait::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:338:9 + --> $DIR/lint-stability-deprecated.rs:337:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated function `this_crate::deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:340:9 + --> $DIR/lint-stability-deprecated.rs:339:9 | LL | deprecated_text(); | ^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:345:9 + --> $DIR/lint-stability-deprecated.rs:344:9 | LL | Trait::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:347:9 + --> $DIR/lint-stability-deprecated.rs:346:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated struct `this_crate::DeprecatedStruct`: text - --> $DIR/lint-stability-deprecated.rs:385:17 + --> $DIR/lint-stability-deprecated.rs:384:17 | LL | let _ = DeprecatedStruct { | ^^^^^^^^^^^^^^^^ warning: use of deprecated unit struct `this_crate::DeprecatedUnitStruct`: text - --> $DIR/lint-stability-deprecated.rs:392:17 + --> $DIR/lint-stability-deprecated.rs:391:17 | LL | let _ = DeprecatedUnitStruct; | ^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated unit variant `this_crate::Enum::DeprecatedVariant`: text - --> $DIR/lint-stability-deprecated.rs:396:17 + --> $DIR/lint-stability-deprecated.rs:395:17 | LL | let _ = Enum::DeprecatedVariant; | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated tuple struct `this_crate::DeprecatedTupleStruct`: text - --> $DIR/lint-stability-deprecated.rs:400:17 + --> $DIR/lint-stability-deprecated.rs:399:17 | LL | let _ = DeprecatedTupleStruct (1); | ^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:407:9 + --> $DIR/lint-stability-deprecated.rs:406:9 | LL | Trait::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:409:9 + --> $DIR/lint-stability-deprecated.rs:408:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:411:9 + --> $DIR/lint-stability-deprecated.rs:410:9 | LL | Trait::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:413:9 + --> $DIR/lint-stability-deprecated.rs:412:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated function `this_crate::test_fn_body::fn_in_body`: text - --> $DIR/lint-stability-deprecated.rs:440:9 + --> $DIR/lint-stability-deprecated.rs:439:9 | LL | fn_in_body(); | ^^^^^^^^^^ warning: use of deprecated trait `this_crate::DeprecatedTrait`: text - --> $DIR/lint-stability-deprecated.rs:460:10 + --> $DIR/lint-stability-deprecated.rs:459:10 | LL | impl DeprecatedTrait for S { } | ^^^^^^^^^^^^^^^ warning: use of deprecated trait `this_crate::DeprecatedTrait`: text - --> $DIR/lint-stability-deprecated.rs:462:24 + --> $DIR/lint-stability-deprecated.rs:461:24 | LL | trait LocalTrait : DeprecatedTrait { } | ^^^^^^^^^^^^^^^ warning: use of deprecated function `this_crate::MethodTester::test_method_body::fn_in_body`: text - --> $DIR/lint-stability-deprecated.rs:448:13 + --> $DIR/lint-stability-deprecated.rs:447:13 | LL | fn_in_body(); | ^^^^^^^^^^ warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text - --> $DIR/lint-stability-deprecated.rs:98:48 + --> $DIR/lint-stability-deprecated.rs:97:48 | LL | struct S2(T::TypeDeprecated); | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text - --> $DIR/lint-stability-deprecated.rs:103:13 + --> $DIR/lint-stability-deprecated.rs:102:13 | LL | TypeDeprecated = u16, | ^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:26:13 + --> $DIR/lint-stability-deprecated.rs:25:13 | LL | foo.method_deprecated(); | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:27:9 + --> $DIR/lint-stability-deprecated.rs:26:9 | LL | Foo::method_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:28:9 + --> $DIR/lint-stability-deprecated.rs:27:9 | LL | ::method_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:29:13 + --> $DIR/lint-stability-deprecated.rs:28:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:31:9 + --> $DIR/lint-stability-deprecated.rs:30:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:35:13 + --> $DIR/lint-stability-deprecated.rs:34:13 | LL | ... foo.method_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:36:9 + --> $DIR/lint-stability-deprecated.rs:35:9 | LL | ... Foo::method_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:37:9 + --> $DIR/lint-stability-deprecated.rs:36:9 | LL | ... ::method_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:38:13 + --> $DIR/lint-stability-deprecated.rs:37:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:40:9 + --> $DIR/lint-stability-deprecated.rs:39:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:44:13 + --> $DIR/lint-stability-deprecated.rs:43:13 | LL | ... foo.method_deprecated_unstable(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:45:9 + --> $DIR/lint-stability-deprecated.rs:44:9 | LL | ... Foo::method_deprecated_unstable(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:46:9 + --> $DIR/lint-stability-deprecated.rs:45:9 | LL | ... ::method_deprecated_unstable(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:47:13 + --> $DIR/lint-stability-deprecated.rs:46:13 | LL | foo.trait_deprecated_unstable(); | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:49:9 + --> $DIR/lint-stability-deprecated.rs:48:9 | LL | ... ::trait_deprecated_unstable(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:53:13 + --> $DIR/lint-stability-deprecated.rs:52:13 | LL | ... foo.method_deprecated_unstable_text(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:54:9 + --> $DIR/lint-stability-deprecated.rs:53:9 | LL | ... Foo::method_deprecated_unstable_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::MethodTester::method_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:55:9 + --> $DIR/lint-stability-deprecated.rs:54:9 | LL | ... ::method_deprecated_unstable_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:56:13 + --> $DIR/lint-stability-deprecated.rs:55:13 | LL | ... foo.trait_deprecated_unstable_text(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:58:9 + --> $DIR/lint-stability-deprecated.rs:57:9 | LL | ... ::trait_deprecated_unstable_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated field `lint_stability::DeprecatedStruct::i`: text - --> $DIR/lint-stability-deprecated.rs:110:13 + --> $DIR/lint-stability-deprecated.rs:109:13 | LL | i: 0 | ^^^^ warning: use of deprecated field `lint_stability::DeprecatedUnstableStruct::i`: text - --> $DIR/lint-stability-deprecated.rs:114:13 + --> $DIR/lint-stability-deprecated.rs:113:13 | LL | i: 0 | ^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:145:13 + --> $DIR/lint-stability-deprecated.rs:144:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:147:9 + --> $DIR/lint-stability-deprecated.rs:146:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:149:13 + --> $DIR/lint-stability-deprecated.rs:148:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:151:9 + --> $DIR/lint-stability-deprecated.rs:150:9 | LL | ... ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:153:13 + --> $DIR/lint-stability-deprecated.rs:152:13 | LL | foo.trait_deprecated_unstable(); | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:155:9 + --> $DIR/lint-stability-deprecated.rs:154:9 | LL | ... ::trait_deprecated_unstable(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:157:13 + --> $DIR/lint-stability-deprecated.rs:156:13 | LL | ... foo.trait_deprecated_unstable_text(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:159:9 + --> $DIR/lint-stability-deprecated.rs:158:9 | LL | ... ::trait_deprecated_unstable_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:176:13 + --> $DIR/lint-stability-deprecated.rs:175:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:177:13 + --> $DIR/lint-stability-deprecated.rs:176:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable`: text - --> $DIR/lint-stability-deprecated.rs:178:13 + --> $DIR/lint-stability-deprecated.rs:177:13 | LL | foo.trait_deprecated_unstable(); | ^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `lint_stability::Trait::trait_deprecated_unstable_text`: text - --> $DIR/lint-stability-deprecated.rs:179:13 + --> $DIR/lint-stability-deprecated.rs:178:13 | LL | ... foo.trait_deprecated_unstable_text(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::MethodTester::method_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:332:13 + --> $DIR/lint-stability-deprecated.rs:331:13 | LL | foo.method_deprecated(); | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::MethodTester::method_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:333:9 + --> $DIR/lint-stability-deprecated.rs:332:9 | LL | Foo::method_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::MethodTester::method_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:334:9 + --> $DIR/lint-stability-deprecated.rs:333:9 | LL | ::method_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:335:13 + --> $DIR/lint-stability-deprecated.rs:334:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:337:9 + --> $DIR/lint-stability-deprecated.rs:336:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:341:13 + --> $DIR/lint-stability-deprecated.rs:340:13 | LL | ... foo.method_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:342:9 + --> $DIR/lint-stability-deprecated.rs:341:9 | LL | ... Foo::method_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::MethodTester::method_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:343:9 + --> $DIR/lint-stability-deprecated.rs:342:9 | LL | ... ::method_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:344:13 + --> $DIR/lint-stability-deprecated.rs:343:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:346:9 + --> $DIR/lint-stability-deprecated.rs:345:9 | LL | ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated field `this_crate::DeprecatedStruct::i`: text - --> $DIR/lint-stability-deprecated.rs:387:13 + --> $DIR/lint-stability-deprecated.rs:386:13 | LL | i: 0 | ^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:406:13 + --> $DIR/lint-stability-deprecated.rs:405:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:408:9 + --> $DIR/lint-stability-deprecated.rs:407:9 | LL | ::trait_deprecated(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:410:13 + --> $DIR/lint-stability-deprecated.rs:409:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:412:9 + --> $DIR/lint-stability-deprecated.rs:411:9 | LL | ::trait_deprecated_text(&foo); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated`: text - --> $DIR/lint-stability-deprecated.rs:429:13 + --> $DIR/lint-stability-deprecated.rs:428:13 | LL | foo.trait_deprecated(); | ^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `this_crate::Trait::trait_deprecated_text`: text - --> $DIR/lint-stability-deprecated.rs:430:13 + --> $DIR/lint-stability-deprecated.rs:429:13 | LL | foo.trait_deprecated_text(); | ^^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text - --> $DIR/lint-stability-deprecated.rs:98:48 + --> $DIR/lint-stability-deprecated.rs:97:48 | LL | struct S2(T::TypeDeprecated); | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text - --> $DIR/lint-stability-deprecated.rs:103:13 + --> $DIR/lint-stability-deprecated.rs:102:13 | LL | TypeDeprecated = u16, | ^^^^^^^^^^^^^^^^^^^^ warning: use of deprecated associated type `lint_stability::TraitWithAssociatedTypes::TypeDeprecated`: text - --> $DIR/lint-stability-deprecated.rs:103:13 + --> $DIR/lint-stability-deprecated.rs:102:13 | LL | TypeDeprecated = u16, | ^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/lint/uninitialized-zeroed.rs b/src/test/ui/lint/uninitialized-zeroed.rs index 78d3060886dd..122933c3c4e4 100644 --- a/src/test/ui/lint/uninitialized-zeroed.rs +++ b/src/test/ui/lint/uninitialized-zeroed.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // This test checks that calling `mem::{uninitialized,zeroed}` with certain types results // in a lint. diff --git a/src/test/ui/lint/uninitialized-zeroed.stderr b/src/test/ui/lint/uninitialized-zeroed.stderr index de1b6c761767..0af185ef61b5 100644 --- a/src/test/ui/lint/uninitialized-zeroed.stderr +++ b/src/test/ui/lint/uninitialized-zeroed.stderr @@ -1,5 +1,5 @@ error: the type `&T` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:41:32 + --> $DIR/uninitialized-zeroed.rs:40:32 | LL | let _val: &'static T = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -8,14 +8,14 @@ LL | let _val: &'static T = mem::zeroed(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: the lint level is defined here - --> $DIR/uninitialized-zeroed.rs:7:9 + --> $DIR/uninitialized-zeroed.rs:6:9 | LL | #![deny(invalid_value)] | ^^^^^^^^^^^^^ = note: references must be non-null error: the type `&T` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:42:32 + --> $DIR/uninitialized-zeroed.rs:41:32 | LL | let _val: &'static T = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -26,7 +26,7 @@ LL | let _val: &'static T = mem::uninitialized(); = note: references must be non-null error: the type `Wrap<&T>` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:44:38 + --> $DIR/uninitialized-zeroed.rs:43:38 | LL | let _val: Wrap<&'static T> = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -35,13 +35,13 @@ LL | let _val: Wrap<&'static T> = mem::zeroed(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: references must be non-null (in this struct field) - --> $DIR/uninitialized-zeroed.rs:18:18 + --> $DIR/uninitialized-zeroed.rs:17:18 | LL | struct Wrap { wrapped: T } | ^^^^^^^^^^ error: the type `Wrap<&T>` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:45:38 + --> $DIR/uninitialized-zeroed.rs:44:38 | LL | let _val: Wrap<&'static T> = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -50,13 +50,13 @@ LL | let _val: Wrap<&'static T> = mem::uninitialized(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: references must be non-null (in this struct field) - --> $DIR/uninitialized-zeroed.rs:18:18 + --> $DIR/uninitialized-zeroed.rs:17:18 | LL | struct Wrap { wrapped: T } | ^^^^^^^^^^ error: the type `!` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:52:23 + --> $DIR/uninitialized-zeroed.rs:51:23 | LL | let _val: ! = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -67,7 +67,7 @@ LL | let _val: ! = mem::zeroed(); = note: the `!` type has no valid value error: the type `!` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:53:23 + --> $DIR/uninitialized-zeroed.rs:52:23 | LL | let _val: ! = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -78,7 +78,7 @@ LL | let _val: ! = mem::uninitialized(); = note: the `!` type has no valid value error: the type `(i32, !)` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:55:30 + --> $DIR/uninitialized-zeroed.rs:54:30 | LL | let _val: (i32, !) = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -89,7 +89,7 @@ LL | let _val: (i32, !) = mem::zeroed(); = note: the `!` type has no valid value error: the type `(i32, !)` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:56:30 + --> $DIR/uninitialized-zeroed.rs:55:30 | LL | let _val: (i32, !) = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -100,7 +100,7 @@ LL | let _val: (i32, !) = mem::uninitialized(); = note: the `!` type has no valid value error: the type `Void` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:58:26 + --> $DIR/uninitialized-zeroed.rs:57:26 | LL | let _val: Void = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -111,7 +111,7 @@ LL | let _val: Void = mem::zeroed(); = note: enums with no variants have no valid value error: the type `Void` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:59:26 + --> $DIR/uninitialized-zeroed.rs:58:26 | LL | let _val: Void = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -122,7 +122,7 @@ LL | let _val: Void = mem::uninitialized(); = note: enums with no variants have no valid value error: the type `&i32` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:61:34 + --> $DIR/uninitialized-zeroed.rs:60:34 | LL | let _val: &'static i32 = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -133,7 +133,7 @@ LL | let _val: &'static i32 = mem::zeroed(); = note: references must be non-null error: the type `&i32` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:62:34 + --> $DIR/uninitialized-zeroed.rs:61:34 | LL | let _val: &'static i32 = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -144,7 +144,7 @@ LL | let _val: &'static i32 = mem::uninitialized(); = note: references must be non-null error: the type `Ref` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:64:25 + --> $DIR/uninitialized-zeroed.rs:63:25 | LL | let _val: Ref = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -153,13 +153,13 @@ LL | let _val: Ref = mem::zeroed(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: references must be non-null (in this struct field) - --> $DIR/uninitialized-zeroed.rs:15:12 + --> $DIR/uninitialized-zeroed.rs:14:12 | LL | struct Ref(&'static i32); | ^^^^^^^^^^^^ error: the type `Ref` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:65:25 + --> $DIR/uninitialized-zeroed.rs:64:25 | LL | let _val: Ref = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -168,13 +168,13 @@ LL | let _val: Ref = mem::uninitialized(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: references must be non-null (in this struct field) - --> $DIR/uninitialized-zeroed.rs:15:12 + --> $DIR/uninitialized-zeroed.rs:14:12 | LL | struct Ref(&'static i32); | ^^^^^^^^^^^^ error: the type `fn()` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:67:26 + --> $DIR/uninitialized-zeroed.rs:66:26 | LL | let _val: fn() = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -185,7 +185,7 @@ LL | let _val: fn() = mem::zeroed(); = note: function pointers must be non-null error: the type `fn()` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:68:26 + --> $DIR/uninitialized-zeroed.rs:67:26 | LL | let _val: fn() = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -196,7 +196,7 @@ LL | let _val: fn() = mem::uninitialized(); = note: function pointers must be non-null error: the type `Wrap` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:70:32 + --> $DIR/uninitialized-zeroed.rs:69:32 | LL | let _val: Wrap = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -205,13 +205,13 @@ LL | let _val: Wrap = mem::zeroed(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: function pointers must be non-null (in this struct field) - --> $DIR/uninitialized-zeroed.rs:18:18 + --> $DIR/uninitialized-zeroed.rs:17:18 | LL | struct Wrap { wrapped: T } | ^^^^^^^^^^ error: the type `Wrap` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:71:32 + --> $DIR/uninitialized-zeroed.rs:70:32 | LL | let _val: Wrap = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -220,13 +220,13 @@ LL | let _val: Wrap = mem::uninitialized(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: function pointers must be non-null (in this struct field) - --> $DIR/uninitialized-zeroed.rs:18:18 + --> $DIR/uninitialized-zeroed.rs:17:18 | LL | struct Wrap { wrapped: T } | ^^^^^^^^^^ error: the type `WrapEnum` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:73:36 + --> $DIR/uninitialized-zeroed.rs:72:36 | LL | let _val: WrapEnum = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -235,13 +235,13 @@ LL | let _val: WrapEnum = mem::zeroed(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: function pointers must be non-null (in this enum field) - --> $DIR/uninitialized-zeroed.rs:19:28 + --> $DIR/uninitialized-zeroed.rs:18:28 | LL | enum WrapEnum { Wrapped(T) } | ^ error: the type `WrapEnum` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:74:36 + --> $DIR/uninitialized-zeroed.rs:73:36 | LL | let _val: WrapEnum = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -250,13 +250,13 @@ LL | let _val: WrapEnum = mem::uninitialized(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: function pointers must be non-null (in this enum field) - --> $DIR/uninitialized-zeroed.rs:19:28 + --> $DIR/uninitialized-zeroed.rs:18:28 | LL | enum WrapEnum { Wrapped(T) } | ^ error: the type `Wrap<(RefPair, i32)>` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:76:42 + --> $DIR/uninitialized-zeroed.rs:75:42 | LL | let _val: Wrap<(RefPair, i32)> = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -265,13 +265,13 @@ LL | let _val: Wrap<(RefPair, i32)> = mem::zeroed(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: references must be non-null (in this struct field) - --> $DIR/uninitialized-zeroed.rs:16:16 + --> $DIR/uninitialized-zeroed.rs:15:16 | LL | struct RefPair((&'static i32, i32)); | ^^^^^^^^^^^^^^^^^^^ error: the type `Wrap<(RefPair, i32)>` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:77:42 + --> $DIR/uninitialized-zeroed.rs:76:42 | LL | let _val: Wrap<(RefPair, i32)> = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -280,13 +280,13 @@ LL | let _val: Wrap<(RefPair, i32)> = mem::uninitialized(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: references must be non-null (in this struct field) - --> $DIR/uninitialized-zeroed.rs:16:16 + --> $DIR/uninitialized-zeroed.rs:15:16 | LL | struct RefPair((&'static i32, i32)); | ^^^^^^^^^^^^^^^^^^^ error: the type `NonNull` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:79:34 + --> $DIR/uninitialized-zeroed.rs:78:34 | LL | let _val: NonNull = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -297,7 +297,7 @@ LL | let _val: NonNull = mem::zeroed(); = note: `std::ptr::NonNull` must be non-null error: the type `NonNull` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:80:34 + --> $DIR/uninitialized-zeroed.rs:79:34 | LL | let _val: NonNull = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -308,7 +308,7 @@ LL | let _val: NonNull = mem::uninitialized(); = note: `std::ptr::NonNull` must be non-null error: the type `*const dyn Send` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:82:37 + --> $DIR/uninitialized-zeroed.rs:81:37 | LL | let _val: *const dyn Send = mem::zeroed(); | ^^^^^^^^^^^^^ @@ -319,7 +319,7 @@ LL | let _val: *const dyn Send = mem::zeroed(); = note: the vtable of a wide raw pointer must be non-null error: the type `*const dyn Send` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:83:37 + --> $DIR/uninitialized-zeroed.rs:82:37 | LL | let _val: *const dyn Send = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -330,7 +330,7 @@ LL | let _val: *const dyn Send = mem::uninitialized(); = note: the vtable of a wide raw pointer must be non-null error: the type `bool` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:87:26 + --> $DIR/uninitialized-zeroed.rs:86:26 | LL | let _val: bool = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -341,7 +341,7 @@ LL | let _val: bool = mem::uninitialized(); = note: booleans must be either `true` or `false` error: the type `Wrap` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:90:32 + --> $DIR/uninitialized-zeroed.rs:89:32 | LL | let _val: Wrap = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -350,13 +350,13 @@ LL | let _val: Wrap = mem::uninitialized(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: characters must be a valid Unicode codepoint (in this struct field) - --> $DIR/uninitialized-zeroed.rs:18:18 + --> $DIR/uninitialized-zeroed.rs:17:18 | LL | struct Wrap { wrapped: T } | ^^^^^^^^^^ error: the type `NonBig` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:93:28 + --> $DIR/uninitialized-zeroed.rs:92:28 | LL | let _val: NonBig = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -367,7 +367,7 @@ LL | let _val: NonBig = mem::uninitialized(); = note: `NonBig` must be initialized inside its custom valid range error: the type `Fruit` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:96:27 + --> $DIR/uninitialized-zeroed.rs:95:27 | LL | let _val: Fruit = mem::uninitialized(); | ^^^^^^^^^^^^^^^^^^^^ @@ -376,7 +376,7 @@ LL | let _val: Fruit = mem::uninitialized(); | help: use `MaybeUninit` instead, and only call `assume_init` after initialization is done | note: enums have to be initialized to a variant - --> $DIR/uninitialized-zeroed.rs:27:1 + --> $DIR/uninitialized-zeroed.rs:26:1 | LL | / enum Fruit { LL | | Apple, @@ -385,7 +385,7 @@ LL | | } | |_^ error: the type `&i32` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:99:34 + --> $DIR/uninitialized-zeroed.rs:98:34 | LL | let _val: &'static i32 = mem::transmute(0usize); | ^^^^^^^^^^^^^^^^^^^^^^ @@ -396,7 +396,7 @@ LL | let _val: &'static i32 = mem::transmute(0usize); = note: references must be non-null error: the type `&[i32]` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:100:36 + --> $DIR/uninitialized-zeroed.rs:99:36 | LL | let _val: &'static [i32] = mem::transmute((0usize, 0usize)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -407,7 +407,7 @@ LL | let _val: &'static [i32] = mem::transmute((0usize, 0usize)); = note: references must be non-null error: the type `NonZeroU32` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:101:32 + --> $DIR/uninitialized-zeroed.rs:100:32 | LL | let _val: NonZeroU32 = mem::transmute(0); | ^^^^^^^^^^^^^^^^^ @@ -418,7 +418,7 @@ LL | let _val: NonZeroU32 = mem::transmute(0); = note: `std::num::NonZeroU32` must be non-null error: the type `NonNull` does not permit zero-initialization - --> $DIR/uninitialized-zeroed.rs:104:34 + --> $DIR/uninitialized-zeroed.rs:103:34 | LL | let _val: NonNull = MaybeUninit::zeroed().assume_init(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -429,7 +429,7 @@ LL | let _val: NonNull = MaybeUninit::zeroed().assume_init(); = note: `std::ptr::NonNull` must be non-null error: the type `NonNull` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:105:34 + --> $DIR/uninitialized-zeroed.rs:104:34 | LL | let _val: NonNull = MaybeUninit::uninit().assume_init(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -440,7 +440,7 @@ LL | let _val: NonNull = MaybeUninit::uninit().assume_init(); = note: `std::ptr::NonNull` must be non-null error: the type `bool` does not permit being left uninitialized - --> $DIR/uninitialized-zeroed.rs:106:26 + --> $DIR/uninitialized-zeroed.rs:105:26 | LL | let _val: bool = MaybeUninit::uninit().assume_init(); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/loops/loops-reject-duplicate-labels-2.rs b/src/test/ui/loops/loops-reject-duplicate-labels-2.rs index a0f3aeffe9f7..3a860f508ff7 100644 --- a/src/test/ui/loops/loops-reject-duplicate-labels-2.rs +++ b/src/test/ui/loops/loops-reject-duplicate-labels-2.rs @@ -1,6 +1,5 @@ // check-pass -// ignore-tidy-linelength // Issue #21633: reject duplicate loop labels in function bodies. // diff --git a/src/test/ui/loops/loops-reject-duplicate-labels-2.stderr b/src/test/ui/loops/loops-reject-duplicate-labels-2.stderr index 724c36e5203e..6c53d04e1079 100644 --- a/src/test/ui/loops/loops-reject-duplicate-labels-2.stderr +++ b/src/test/ui/loops/loops-reject-duplicate-labels-2.stderr @@ -1,5 +1,5 @@ warning: label name `'fl` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels-2.rs:14:7 + --> $DIR/loops-reject-duplicate-labels-2.rs:13:7 | LL | { 'fl: for _ in 0..10 { break; } } | --- first declared here @@ -7,7 +7,7 @@ LL | { 'fl: loop { break; } } | ^^^ label `'fl` already in scope warning: label name `'lf` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels-2.rs:16:7 + --> $DIR/loops-reject-duplicate-labels-2.rs:15:7 | LL | { 'lf: loop { break; } } | --- first declared here @@ -15,7 +15,7 @@ LL | { 'lf: for _ in 0..10 { break; } } | ^^^ label `'lf` already in scope warning: label name `'wl` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels-2.rs:18:7 + --> $DIR/loops-reject-duplicate-labels-2.rs:17:7 | LL | { 'wl: while 2 > 1 { break; } } | --- first declared here @@ -23,7 +23,7 @@ LL | { 'wl: loop { break; } } | ^^^ label `'wl` already in scope warning: label name `'lw` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels-2.rs:20:7 + --> $DIR/loops-reject-duplicate-labels-2.rs:19:7 | LL | { 'lw: loop { break; } } | --- first declared here @@ -31,7 +31,7 @@ LL | { 'lw: while 2 > 1 { break; } } | ^^^ label `'lw` already in scope warning: label name `'fw` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels-2.rs:22:7 + --> $DIR/loops-reject-duplicate-labels-2.rs:21:7 | LL | { 'fw: for _ in 0..10 { break; } } | --- first declared here @@ -39,7 +39,7 @@ LL | { 'fw: while 2 > 1 { break; } } | ^^^ label `'fw` already in scope warning: label name `'wf` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels-2.rs:24:7 + --> $DIR/loops-reject-duplicate-labels-2.rs:23:7 | LL | { 'wf: while 2 > 1 { break; } } | --- first declared here @@ -47,7 +47,7 @@ LL | { 'wf: for _ in 0..10 { break; } } | ^^^ label `'wf` already in scope warning: label name `'tl` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels-2.rs:26:7 + --> $DIR/loops-reject-duplicate-labels-2.rs:25:7 | LL | { 'tl: while let Some(_) = None:: { break; } } | --- first declared here @@ -55,7 +55,7 @@ LL | { 'tl: loop { break; } } | ^^^ label `'tl` already in scope warning: label name `'lt` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels-2.rs:28:7 + --> $DIR/loops-reject-duplicate-labels-2.rs:27:7 | LL | { 'lt: loop { break; } } | --- first declared here diff --git a/src/test/ui/loops/loops-reject-duplicate-labels.rs b/src/test/ui/loops/loops-reject-duplicate-labels.rs index a501ac18588f..d9334ce38571 100644 --- a/src/test/ui/loops/loops-reject-duplicate-labels.rs +++ b/src/test/ui/loops/loops-reject-duplicate-labels.rs @@ -1,6 +1,5 @@ // check-pass -// ignore-tidy-linelength // Issue #21633: reject duplicate loop labels in function bodies. // This is testing the exact cases that are in the issue description. diff --git a/src/test/ui/loops/loops-reject-duplicate-labels.stderr b/src/test/ui/loops/loops-reject-duplicate-labels.stderr index 2d1128120179..5bdf64849f30 100644 --- a/src/test/ui/loops/loops-reject-duplicate-labels.stderr +++ b/src/test/ui/loops/loops-reject-duplicate-labels.stderr @@ -1,5 +1,5 @@ warning: label name `'fl` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels.rs:11:5 + --> $DIR/loops-reject-duplicate-labels.rs:10:5 | LL | 'fl: for _ in 0..10 { break; } | --- first declared here @@ -7,7 +7,7 @@ LL | 'fl: loop { break; } | ^^^ label `'fl` already in scope warning: label name `'lf` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels.rs:14:5 + --> $DIR/loops-reject-duplicate-labels.rs:13:5 | LL | 'lf: loop { break; } | --- first declared here @@ -15,7 +15,7 @@ LL | 'lf: for _ in 0..10 { break; } | ^^^ label `'lf` already in scope warning: label name `'wl` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels.rs:16:5 + --> $DIR/loops-reject-duplicate-labels.rs:15:5 | LL | 'wl: while 2 > 1 { break; } | --- first declared here @@ -23,7 +23,7 @@ LL | 'wl: loop { break; } | ^^^ label `'wl` already in scope warning: label name `'lw` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels.rs:18:5 + --> $DIR/loops-reject-duplicate-labels.rs:17:5 | LL | 'lw: loop { break; } | --- first declared here @@ -31,7 +31,7 @@ LL | 'lw: while 2 > 1 { break; } | ^^^ label `'lw` already in scope warning: label name `'fw` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels.rs:20:5 + --> $DIR/loops-reject-duplicate-labels.rs:19:5 | LL | 'fw: for _ in 0..10 { break; } | --- first declared here @@ -39,7 +39,7 @@ LL | 'fw: while 2 > 1 { break; } | ^^^ label `'fw` already in scope warning: label name `'wf` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels.rs:22:5 + --> $DIR/loops-reject-duplicate-labels.rs:21:5 | LL | 'wf: while 2 > 1 { break; } | --- first declared here @@ -47,7 +47,7 @@ LL | 'wf: for _ in 0..10 { break; } | ^^^ label `'wf` already in scope warning: label name `'tl` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels.rs:24:5 + --> $DIR/loops-reject-duplicate-labels.rs:23:5 | LL | 'tl: while let Some(_) = None:: { break; } | --- first declared here @@ -55,7 +55,7 @@ LL | 'tl: loop { break; } | ^^^ label `'tl` already in scope warning: label name `'lt` shadows a label name that is already in scope - --> $DIR/loops-reject-duplicate-labels.rs:26:5 + --> $DIR/loops-reject-duplicate-labels.rs:25:5 | LL | 'lt: loop { break; } | --- first declared here diff --git a/src/test/ui/macros/macro-or-patterns-back-compat.fixed b/src/test/ui/macros/macro-or-patterns-back-compat.fixed index 4e8b057457c3..f089f0fda4e7 100644 --- a/src/test/ui/macros/macro-or-patterns-back-compat.fixed +++ b/src/test/ui/macros/macro-or-patterns-back-compat.fixed @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // run-rustfix #![feature(edition_macro_pats)] diff --git a/src/test/ui/macros/macro-or-patterns-back-compat.rs b/src/test/ui/macros/macro-or-patterns-back-compat.rs index 023abae36d06..0252581d5f16 100644 --- a/src/test/ui/macros/macro-or-patterns-back-compat.rs +++ b/src/test/ui/macros/macro-or-patterns-back-compat.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // run-rustfix #![feature(edition_macro_pats)] diff --git a/src/test/ui/macros/macro-or-patterns-back-compat.stderr b/src/test/ui/macros/macro-or-patterns-back-compat.stderr index 29bbd696033c..d8f19fa58077 100644 --- a/src/test/ui/macros/macro-or-patterns-back-compat.stderr +++ b/src/test/ui/macros/macro-or-patterns-back-compat.stderr @@ -1,29 +1,29 @@ error: the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro - --> $DIR/macro-or-patterns-back-compat.rs:7:21 + --> $DIR/macro-or-patterns-back-compat.rs:6:21 | LL | macro_rules! foo { ($x:pat | $y:pat) => {} } | ^^^^^^ help: use pat2015 to preserve semantics: `$x:pat2015` | note: the lint level is defined here - --> $DIR/macro-or-patterns-back-compat.rs:5:9 + --> $DIR/macro-or-patterns-back-compat.rs:4:9 | LL | #![deny(or_patterns_back_compat)] | ^^^^^^^^^^^^^^^^^^^^^^^ error: the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro - --> $DIR/macro-or-patterns-back-compat.rs:8:23 + --> $DIR/macro-or-patterns-back-compat.rs:7:23 | LL | macro_rules! bar { ($($x:pat)+ | $($y:pat)+) => {} } | ^^^^^^ help: use pat2015 to preserve semantics: `$x:pat2015` error: the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro - --> $DIR/macro-or-patterns-back-compat.rs:11:21 + --> $DIR/macro-or-patterns-back-compat.rs:10:21 | LL | macro_rules! ogg { ($x:pat | $y:pat2015) => {} } | ^^^^^^ help: use pat2015 to preserve semantics: `$x:pat2015` error: the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro - --> $DIR/macro-or-patterns-back-compat.rs:13:26 + --> $DIR/macro-or-patterns-back-compat.rs:12:26 | LL | ( $expr:expr , $( $( $pat:pat )|+ => $expr_arm:expr ),+ ) => { | ^^^^^^^^ help: use pat2015 to preserve semantics: `$pat:pat2015` diff --git a/src/test/ui/methods/method-call-lifetime-args-fail.rs b/src/test/ui/methods/method-call-lifetime-args-fail.rs index 8a840ba62cc0..af1738512527 100644 --- a/src/test/ui/methods/method-call-lifetime-args-fail.rs +++ b/src/test/ui/methods/method-call-lifetime-args-fail.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - struct S; impl S { diff --git a/src/test/ui/methods/method-call-lifetime-args-fail.stderr b/src/test/ui/methods/method-call-lifetime-args-fail.stderr index 34a2e3dec2ec..2907309c27c7 100644 --- a/src/test/ui/methods/method-call-lifetime-args-fail.stderr +++ b/src/test/ui/methods/method-call-lifetime-args-fail.stderr @@ -1,5 +1,5 @@ error[E0107]: this associated function takes 2 lifetime arguments but only 1 lifetime argument was supplied - --> $DIR/method-call-lifetime-args-fail.rs:18:7 + --> $DIR/method-call-lifetime-args-fail.rs:16:7 | LL | S.early::<'static>(); | ^^^^^ ------- supplied 1 lifetime argument @@ -7,7 +7,7 @@ LL | S.early::<'static>(); | expected 2 lifetime arguments | note: associated function defined here, with 2 lifetime parameters: `'a`, `'b` - --> $DIR/method-call-lifetime-args-fail.rs:8:8 + --> $DIR/method-call-lifetime-args-fail.rs:6:8 | LL | fn early<'a, 'b>(self) -> (&'a u8, &'b u8) { loop {} } | ^^^^^ -- -- @@ -17,7 +17,7 @@ LL | S.early::<'static, 'b>(); | ^^^^ error[E0107]: this associated function takes 2 lifetime arguments but 3 lifetime arguments were supplied - --> $DIR/method-call-lifetime-args-fail.rs:20:7 + --> $DIR/method-call-lifetime-args-fail.rs:18:7 | LL | S.early::<'static, 'static, 'static>(); | ^^^^^ --------- help: remove this lifetime argument @@ -25,19 +25,31 @@ LL | S.early::<'static, 'static, 'static>(); | expected 2 lifetime arguments | note: associated function defined here, with 2 lifetime parameters: `'a`, `'b` - --> $DIR/method-call-lifetime-args-fail.rs:8:8 + --> $DIR/method-call-lifetime-args-fail.rs:6:8 | LL | fn early<'a, 'b>(self) -> (&'a u8, &'b u8) { loop {} } | ^^^^^ -- -- error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:29:15 + --> $DIR/method-call-lifetime-args-fail.rs:27:15 | LL | S::late::<'static>(S, &0, &0); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:6:13 + --> $DIR/method-call-lifetime-args-fail.rs:4:13 + | +LL | fn late<'a, 'b>(self, _: &'a u8, _: &'b u8) {} + | ^^ + +error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present + --> $DIR/method-call-lifetime-args-fail.rs:29:15 + | +LL | S::late::<'static, 'static>(S, &0, &0); + | ^^^^^^^ + | +note: the late bound lifetime parameter is introduced here + --> $DIR/method-call-lifetime-args-fail.rs:4:13 | LL | fn late<'a, 'b>(self, _: &'a u8, _: &'b u8) {} | ^^ @@ -45,59 +57,59 @@ LL | fn late<'a, 'b>(self, _: &'a u8, _: &'b u8) {} error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present --> $DIR/method-call-lifetime-args-fail.rs:31:15 | -LL | S::late::<'static, 'static>(S, &0, &0); - | ^^^^^^^ - | -note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:6:13 - | -LL | fn late<'a, 'b>(self, _: &'a u8, _: &'b u8) {} - | ^^ - -error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:33:15 - | LL | S::late::<'static, 'static, 'static>(S, &0, &0); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:6:13 + --> $DIR/method-call-lifetime-args-fail.rs:4:13 | LL | fn late<'a, 'b>(self, _: &'a u8, _: &'b u8) {} | ^^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:36:21 + --> $DIR/method-call-lifetime-args-fail.rs:34:21 | LL | S::late_early::<'static, 'static>(S, &0); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:9:19 + --> $DIR/method-call-lifetime-args-fail.rs:7:19 | LL | fn late_early<'a, 'b>(self, _: &'a u8) -> &'b u8 { loop {} } | ^^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:38:21 + --> $DIR/method-call-lifetime-args-fail.rs:36:21 | LL | S::late_early::<'static, 'static, 'static>(S, &0); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:9:19 + --> $DIR/method-call-lifetime-args-fail.rs:7:19 | LL | fn late_early<'a, 'b>(self, _: &'a u8) -> &'b u8 { loop {} } | ^^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:42:24 + --> $DIR/method-call-lifetime-args-fail.rs:40:24 | LL | S::late_implicit::<'static>(S, &0, &0); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:7:31 + --> $DIR/method-call-lifetime-args-fail.rs:5:31 + | +LL | fn late_implicit(self, _: &u8, _: &u8) {} + | ^ + +error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present + --> $DIR/method-call-lifetime-args-fail.rs:42:24 + | +LL | S::late_implicit::<'static, 'static>(S, &0, &0); + | ^^^^^^^ + | +note: the late bound lifetime parameter is introduced here + --> $DIR/method-call-lifetime-args-fail.rs:5:31 | LL | fn late_implicit(self, _: &u8, _: &u8) {} | ^ @@ -105,101 +117,89 @@ LL | fn late_implicit(self, _: &u8, _: &u8) {} error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present --> $DIR/method-call-lifetime-args-fail.rs:44:24 | -LL | S::late_implicit::<'static, 'static>(S, &0, &0); - | ^^^^^^^ - | -note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:7:31 - | -LL | fn late_implicit(self, _: &u8, _: &u8) {} - | ^ - -error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:46:24 - | LL | S::late_implicit::<'static, 'static, 'static>(S, &0, &0); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:7:31 + --> $DIR/method-call-lifetime-args-fail.rs:5:31 | LL | fn late_implicit(self, _: &u8, _: &u8) {} | ^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:49:30 + --> $DIR/method-call-lifetime-args-fail.rs:47:30 | LL | S::late_implicit_early::<'static, 'static>(S, &0); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:10:41 + --> $DIR/method-call-lifetime-args-fail.rs:8:41 | LL | fn late_implicit_early<'b>(self, _: &u8) -> &'b u8 { loop {} } | ^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:51:30 + --> $DIR/method-call-lifetime-args-fail.rs:49:30 | LL | S::late_implicit_early::<'static, 'static, 'static>(S, &0); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:10:41 + --> $DIR/method-call-lifetime-args-fail.rs:8:41 | LL | fn late_implicit_early<'b>(self, _: &u8) -> &'b u8 { loop {} } | ^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:54:35 + --> $DIR/method-call-lifetime-args-fail.rs:52:35 | LL | S::late_implicit_self_early::<'static, 'static>(&S); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:11:37 + --> $DIR/method-call-lifetime-args-fail.rs:9:37 | LL | fn late_implicit_self_early<'b>(&self) -> &'b u8 { loop {} } | ^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:56:35 + --> $DIR/method-call-lifetime-args-fail.rs:54:35 | LL | S::late_implicit_self_early::<'static, 'static, 'static>(&S); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:11:37 + --> $DIR/method-call-lifetime-args-fail.rs:9:37 | LL | fn late_implicit_self_early<'b>(&self) -> &'b u8 { loop {} } | ^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:59:28 + --> $DIR/method-call-lifetime-args-fail.rs:57:28 | LL | S::late_unused_early::<'static, 'static>(S); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:12:26 + --> $DIR/method-call-lifetime-args-fail.rs:10:26 | LL | fn late_unused_early<'a, 'b>(self) -> &'b u8 { loop {} } | ^^ error: cannot specify lifetime arguments explicitly if late bound lifetime parameters are present - --> $DIR/method-call-lifetime-args-fail.rs:61:28 + --> $DIR/method-call-lifetime-args-fail.rs:59:28 | LL | S::late_unused_early::<'static, 'static, 'static>(S); | ^^^^^^^ | note: the late bound lifetime parameter is introduced here - --> $DIR/method-call-lifetime-args-fail.rs:12:26 + --> $DIR/method-call-lifetime-args-fail.rs:10:26 | LL | fn late_unused_early<'a, 'b>(self) -> &'b u8 { loop {} } | ^^ error[E0107]: this associated function takes 2 lifetime arguments but only 1 lifetime argument was supplied - --> $DIR/method-call-lifetime-args-fail.rs:65:8 + --> $DIR/method-call-lifetime-args-fail.rs:63:8 | LL | S::early::<'static>(S); | ^^^^^ ------- supplied 1 lifetime argument @@ -207,7 +207,7 @@ LL | S::early::<'static>(S); | expected 2 lifetime arguments | note: associated function defined here, with 2 lifetime parameters: `'a`, `'b` - --> $DIR/method-call-lifetime-args-fail.rs:8:8 + --> $DIR/method-call-lifetime-args-fail.rs:6:8 | LL | fn early<'a, 'b>(self) -> (&'a u8, &'b u8) { loop {} } | ^^^^^ -- -- @@ -217,7 +217,7 @@ LL | S::early::<'static, 'b>(S); | ^^^^ error[E0107]: this associated function takes 2 lifetime arguments but 3 lifetime arguments were supplied - --> $DIR/method-call-lifetime-args-fail.rs:67:8 + --> $DIR/method-call-lifetime-args-fail.rs:65:8 | LL | S::early::<'static, 'static, 'static>(S); | ^^^^^ --------- help: remove this lifetime argument @@ -225,7 +225,7 @@ LL | S::early::<'static, 'static, 'static>(S); | expected 2 lifetime arguments | note: associated function defined here, with 2 lifetime parameters: `'a`, `'b` - --> $DIR/method-call-lifetime-args-fail.rs:8:8 + --> $DIR/method-call-lifetime-args-fail.rs:6:8 | LL | fn early<'a, 'b>(self) -> (&'a u8, &'b u8) { loop {} } | ^^^^^ -- -- diff --git a/src/test/ui/nll/issue-51268.rs b/src/test/ui/nll/issue-51268.rs index 12d0449abb19..dcdedf7d4c51 100644 --- a/src/test/ui/nll/issue-51268.rs +++ b/src/test/ui/nll/issue-51268.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - struct Bar; impl Bar { diff --git a/src/test/ui/nll/issue-51268.stderr b/src/test/ui/nll/issue-51268.stderr index 420c94f8e1bd..e6dadc9f6ce3 100644 --- a/src/test/ui/nll/issue-51268.stderr +++ b/src/test/ui/nll/issue-51268.stderr @@ -1,5 +1,5 @@ error[E0502]: cannot borrow `self.thing` as mutable because it is also borrowed as immutable - --> $DIR/issue-51268.rs:16:9 + --> $DIR/issue-51268.rs:14:9 | LL | self.thing.bar(|| { | ^ --- -- immutable borrow occurs here diff --git a/src/test/ui/nll/issue-57100.rs b/src/test/ui/nll/issue-57100.rs index c7f3e9d73036..f15929334bb4 100644 --- a/src/test/ui/nll/issue-57100.rs +++ b/src/test/ui/nll/issue-57100.rs @@ -1,6 +1,5 @@ #![allow(unused)] -// ignore-tidy-linelength // This tests the error messages for borrows of union fields when the unions are embedded in other // structs or unions. diff --git a/src/test/ui/nll/issue-57100.stderr b/src/test/ui/nll/issue-57100.stderr index 5f733c14036b..523c3e8d0a2c 100644 --- a/src/test/ui/nll/issue-57100.stderr +++ b/src/test/ui/nll/issue-57100.stderr @@ -1,5 +1,5 @@ error[E0502]: cannot borrow `r.r2_union.f3_union` (via `r.r2_union.f3_union.s2_leaf.l1_u8`) as immutable because it is also borrowed as mutable (via `r.r2_union.f3_union.s1_leaf.l1_u8`) - --> $DIR/issue-57100.rs:43:20 + --> $DIR/issue-57100.rs:42:20 | LL | let mref = &mut r.r2_union.f3_union.s1_leaf.l1_u8; | -------------------------------------- mutable borrow occurs here (via `r.r2_union.f3_union.s1_leaf.l1_u8`) @@ -13,7 +13,7 @@ LL | println!("{} {}", mref, nref) = note: `r.r2_union.f3_union.s2_leaf.l1_u8` is a field of the union `Second`, so it overlaps the field `r.r2_union.f3_union.s1_leaf.l1_u8` error[E0502]: cannot borrow `r.r2_union` (via `r.r2_union.f1_leaf.l1_u8`) as immutable because it is also borrowed as mutable (via `r.r2_union.f2_leaf.l1_u8`) - --> $DIR/issue-57100.rs:61:20 + --> $DIR/issue-57100.rs:60:20 | LL | let mref = &mut r.r2_union.f2_leaf.l1_u8; | ----------------------------- mutable borrow occurs here (via `r.r2_union.f2_leaf.l1_u8`) diff --git a/src/test/ui/non-ice-error-on-worker-io-fail.rs b/src/test/ui/non-ice-error-on-worker-io-fail.rs index 30779fc65c0f..134e7d420e3e 100644 --- a/src/test/ui/non-ice-error-on-worker-io-fail.rs +++ b/src/test/ui/non-ice-error-on-worker-io-fail.rs @@ -24,7 +24,6 @@ // On Linux, we get an error like the below // normalize-stderr-test "couldn't create a temp dir.*" -> "io error modifying /does-not-exist/" -// ignore-tidy-linelength // ignore-windows - this is a unix-specific test // ignore-emscripten - the file-system issues do not replicate here // ignore-wasm - the file-system issues do not replicate here diff --git a/src/test/ui/panic-runtime/two-panic-runtimes.rs b/src/test/ui/panic-runtime/two-panic-runtimes.rs index c968b5ea1e18..7ec658ebcf2e 100644 --- a/src/test/ui/panic-runtime/two-panic-runtimes.rs +++ b/src/test/ui/panic-runtime/two-panic-runtimes.rs @@ -1,7 +1,6 @@ // build-fail // dont-check-compiler-stderr // error-pattern:cannot link together two panic runtimes: panic_runtime_unwind and panic_runtime_unwind2 -// ignore-tidy-linelength // aux-build:panic-runtime-unwind.rs // aux-build:panic-runtime-unwind2.rs // aux-build:panic-runtime-lang-items.rs diff --git a/src/test/ui/panic-runtime/unwind-tables-panic-required.rs b/src/test/ui/panic-runtime/unwind-tables-panic-required.rs index 6393a27046b8..79e91879051c 100644 --- a/src/test/ui/panic-runtime/unwind-tables-panic-required.rs +++ b/src/test/ui/panic-runtime/unwind-tables-panic-required.rs @@ -3,7 +3,6 @@ // // dont-check-compiler-stderr // compile-flags: -C panic=unwind -C force-unwind-tables=no -// ignore-tidy-linelength // // error-pattern: panic=unwind requires unwind tables, they cannot be disabled with `-C force-unwind-tables=no`. diff --git a/src/test/ui/panic-runtime/unwind-tables-target-required.rs b/src/test/ui/panic-runtime/unwind-tables-target-required.rs index 14c178937641..3abb52b675a6 100644 --- a/src/test/ui/panic-runtime/unwind-tables-target-required.rs +++ b/src/test/ui/panic-runtime/unwind-tables-target-required.rs @@ -3,7 +3,6 @@ // // only-x86_64-windows-msvc // compile-flags: -C force-unwind-tables=no -// ignore-tidy-linelength // // error-pattern: target requires unwind tables, they cannot be disabled with `-C force-unwind-tables=no`. diff --git a/src/test/ui/parser/duplicate-visibility.rs b/src/test/ui/parser/duplicate-visibility.rs index 97f19b3da452..87ba230eab55 100644 --- a/src/test/ui/parser/duplicate-visibility.rs +++ b/src/test/ui/parser/duplicate-visibility.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - fn main() {} extern "C" { diff --git a/src/test/ui/parser/duplicate-visibility.stderr b/src/test/ui/parser/duplicate-visibility.stderr index 6ac27078ea38..d9815fc7395b 100644 --- a/src/test/ui/parser/duplicate-visibility.stderr +++ b/src/test/ui/parser/duplicate-visibility.stderr @@ -1,5 +1,5 @@ error: expected one of `(`, `async`, `const`, `default`, `extern`, `fn`, `pub`, `unsafe`, or `use`, found keyword `pub` - --> $DIR/duplicate-visibility.rs:6:9 + --> $DIR/duplicate-visibility.rs:4:9 | LL | extern "C" { | - while parsing this item list starting here diff --git a/src/test/ui/parser/issue-66357-unexpected-unreachable.rs b/src/test/ui/parser/issue-66357-unexpected-unreachable.rs index 5ec143fae234..aed428bfc2a7 100644 --- a/src/test/ui/parser/issue-66357-unexpected-unreachable.rs +++ b/src/test/ui/parser/issue-66357-unexpected-unreachable.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // The problem in #66357 was that the call trace: // // - parse_fn_block_decl diff --git a/src/test/ui/parser/issue-66357-unexpected-unreachable.stderr b/src/test/ui/parser/issue-66357-unexpected-unreachable.stderr index c3810999d239..332711df72f3 100644 --- a/src/test/ui/parser/issue-66357-unexpected-unreachable.stderr +++ b/src/test/ui/parser/issue-66357-unexpected-unreachable.stderr @@ -1,11 +1,11 @@ error: expected one of `,` or `:`, found `(` - --> $DIR/issue-66357-unexpected-unreachable.rs:14:13 + --> $DIR/issue-66357-unexpected-unreachable.rs:12:13 | LL | fn f() { |[](* } | ^ expected one of `,` or `:` error: expected one of `&`, `(`, `)`, `-`, `...`, `..=`, `..`, `[`, `_`, `box`, `mut`, `ref`, `|`, identifier, or path, found `*` - --> $DIR/issue-66357-unexpected-unreachable.rs:14:14 + --> $DIR/issue-66357-unexpected-unreachable.rs:12:14 | LL | fn f() { |[](* } | -^ help: `)` may belong here diff --git a/src/test/ui/parser/unicode-quote-chars.rs b/src/test/ui/parser/unicode-quote-chars.rs index eeaea3628bbe..868d2b227b74 100644 --- a/src/test/ui/parser/unicode-quote-chars.rs +++ b/src/test/ui/parser/unicode-quote-chars.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - fn main() { println!(“hello world”); //~^ ERROR unknown start of token: \u{201c} diff --git a/src/test/ui/parser/unicode-quote-chars.stderr b/src/test/ui/parser/unicode-quote-chars.stderr index d9ec92b3f8a8..04ea0c6e95f3 100644 --- a/src/test/ui/parser/unicode-quote-chars.stderr +++ b/src/test/ui/parser/unicode-quote-chars.stderr @@ -1,5 +1,5 @@ error: unknown start of token: \u{201c} - --> $DIR/unicode-quote-chars.rs:4:14 + --> $DIR/unicode-quote-chars.rs:2:14 | LL | println!(“hello world”); | ^ @@ -10,7 +10,7 @@ LL | println!("hello world"); | ^^^^^^^^^^^^^ error: unknown start of token: \u{201d} - --> $DIR/unicode-quote-chars.rs:4:26 + --> $DIR/unicode-quote-chars.rs:2:26 | LL | println!(“hello world”); | ^ @@ -21,7 +21,7 @@ LL | println!(“hello world"); | ^ error: expected `,`, found `world` - --> $DIR/unicode-quote-chars.rs:4:21 + --> $DIR/unicode-quote-chars.rs:2:21 | LL | println!(“hello world”); | ^^^^^ expected `,` diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs b/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs index 75658c490c4e..7c9aa51e7484 100644 --- a/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs +++ b/src/test/ui/pattern/usefulness/refutable-pattern-errors.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - fn func((1, (Some(1), 2..=3)): (isize, (Option, isize))) { } //~^ ERROR refutable pattern in function argument: `(_, _)` not covered diff --git a/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr b/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr index 99af71cadfc1..74ec646e31cc 100644 --- a/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr +++ b/src/test/ui/pattern/usefulness/refutable-pattern-errors.stderr @@ -1,5 +1,5 @@ error[E0005]: refutable pattern in function argument: `(_, _)` not covered - --> $DIR/refutable-pattern-errors.rs:3:9 + --> $DIR/refutable-pattern-errors.rs:1:9 | LL | fn func((1, (Some(1), 2..=3)): (isize, (Option, isize))) { } | ^^^^^^^^^^^^^^^^^^^^^ pattern `(_, _)` not covered @@ -7,7 +7,7 @@ LL | fn func((1, (Some(1), 2..=3)): (isize, (Option, isize))) { } = note: the matched value is of type `(isize, (Option, isize))` error[E0005]: refutable pattern in local binding: `(i32::MIN..=0_i32, _)` and `(2_i32..=i32::MAX, _)` not covered - --> $DIR/refutable-pattern-errors.rs:7:9 + --> $DIR/refutable-pattern-errors.rs:5:9 | LL | let (1, (Some(1), 2..=3)) = (1, (None, 2)); | ^^^^^^^^^^^^^^^^^^^^^ patterns `(i32::MIN..=0_i32, _)` and `(2_i32..=i32::MAX, _)` not covered diff --git a/src/test/ui/privacy/associated-item-privacy-trait.rs b/src/test/ui/privacy/associated-item-privacy-trait.rs index b4e98debcf3f..c07aeed99c74 100644 --- a/src/test/ui/privacy/associated-item-privacy-trait.rs +++ b/src/test/ui/privacy/associated-item-privacy-trait.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![feature(decl_macro, associated_type_defaults)] #![allow(unused, private_in_public)] diff --git a/src/test/ui/privacy/associated-item-privacy-trait.stderr b/src/test/ui/privacy/associated-item-privacy-trait.stderr index 8e58a2fa08d7..e36ce8d54150 100644 --- a/src/test/ui/privacy/associated-item-privacy-trait.stderr +++ b/src/test/ui/privacy/associated-item-privacy-trait.stderr @@ -1,5 +1,5 @@ error: type `for<'r> fn(&'r priv_trait::Pub) {::method}` is private - --> $DIR/associated-item-privacy-trait.rs:17:21 + --> $DIR/associated-item-privacy-trait.rs:15:21 | LL | let value = ::method; | ^^^^^^^^^^^^^^^^^^^^^^^ private type @@ -10,7 +10,7 @@ LL | priv_trait::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `for<'r> fn(&'r priv_trait::Pub) {::method}` is private - --> $DIR/associated-item-privacy-trait.rs:19:9 + --> $DIR/associated-item-privacy-trait.rs:17:9 | LL | value; | ^^^^^ private type @@ -21,7 +21,7 @@ LL | priv_trait::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `for<'r> fn(&'r Self) {::method}` is private - --> $DIR/associated-item-privacy-trait.rs:21:13 + --> $DIR/associated-item-privacy-trait.rs:19:13 | LL | Pub.method(); | ^^^^^^ private type @@ -32,7 +32,7 @@ LL | priv_trait::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: associated constant `::CONST` is private - --> $DIR/associated-item-privacy-trait.rs:23:9 + --> $DIR/associated-item-privacy-trait.rs:21:9 | LL | ::CONST; | ^^^^^^^^^^^^^^^^^^^^^^ private associated constant @@ -43,7 +43,7 @@ LL | priv_trait::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: associated type `::AssocTy` is private - --> $DIR/associated-item-privacy-trait.rs:25:16 + --> $DIR/associated-item-privacy-trait.rs:23:16 | LL | let _: ::AssocTy; | ^^^^^^^^^^^^^^^^^^^^^^^^ private associated type @@ -54,7 +54,7 @@ LL | priv_trait::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: trait `PrivTr` is private - --> $DIR/associated-item-privacy-trait.rs:27:34 + --> $DIR/associated-item-privacy-trait.rs:25:34 | LL | pub type InSignatureTy = ::AssocTy; | ^^^^^^^^^^^^^^^^^^^^^^^^ private trait @@ -65,7 +65,7 @@ LL | priv_trait::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: trait `PrivTr` is private - --> $DIR/associated-item-privacy-trait.rs:29:34 + --> $DIR/associated-item-privacy-trait.rs:27:34 | LL | pub trait InSignatureTr: PrivTr {} | ^^^^^^ private trait @@ -76,7 +76,7 @@ LL | priv_trait::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: trait `PrivTr` is private - --> $DIR/associated-item-privacy-trait.rs:31:14 + --> $DIR/associated-item-privacy-trait.rs:29:14 | LL | impl PrivTr for u8 {} | ^^^^^^ private trait @@ -87,7 +87,7 @@ LL | priv_trait::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_signature::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:48:21 + --> $DIR/associated-item-privacy-trait.rs:46:21 | LL | let value = ::method; | ^^^^^^^^^^^^^^^^^^^^^^ private type @@ -98,7 +98,7 @@ LL | priv_signature::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_signature::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:50:9 + --> $DIR/associated-item-privacy-trait.rs:48:9 | LL | value; | ^^^^^ private type @@ -109,7 +109,7 @@ LL | priv_signature::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_signature::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:52:13 + --> $DIR/associated-item-privacy-trait.rs:50:13 | LL | Pub.method(loop {}); | ^^^^^^ private type @@ -120,7 +120,7 @@ LL | priv_signature::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:69:21 + --> $DIR/associated-item-privacy-trait.rs:67:21 | LL | let value = ::method::; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ private type @@ -131,7 +131,7 @@ LL | priv_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:71:9 + --> $DIR/associated-item-privacy-trait.rs:69:9 | LL | value; | ^^^^^ private type @@ -142,7 +142,7 @@ LL | priv_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:73:9 + --> $DIR/associated-item-privacy-trait.rs:71:9 | LL | Pub.method::(); | ^^^^^^^^^^^^^^^^^^^^ private type @@ -153,7 +153,7 @@ LL | priv_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:93:21 + --> $DIR/associated-item-privacy-trait.rs:91:21 | LL | let value = ::method; | ^^^^^^^^^^^^^^^^^^^^^^ private type @@ -164,7 +164,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:95:9 + --> $DIR/associated-item-privacy-trait.rs:93:9 | LL | value; | ^^^^^ private type @@ -175,7 +175,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:97:21 + --> $DIR/associated-item-privacy-trait.rs:95:21 | LL | let value = >::method; | ^^^^^^^^^^^^^^^^^^^^^^^^^ private type @@ -186,7 +186,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:99:9 + --> $DIR/associated-item-privacy-trait.rs:97:9 | LL | value; | ^^^^^ private type @@ -197,7 +197,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:101:9 + --> $DIR/associated-item-privacy-trait.rs:99:9 | LL | Pub.method(); | ^^^^^^^^^^^^ private type @@ -208,7 +208,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:104:21 + --> $DIR/associated-item-privacy-trait.rs:102:21 | LL | let value = >::method; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ private type @@ -219,7 +219,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:106:9 + --> $DIR/associated-item-privacy-trait.rs:104:9 | LL | value; | ^^^^^ private type @@ -230,7 +230,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:108:9 + --> $DIR/associated-item-privacy-trait.rs:106:9 | LL | Priv.method(); | ^^^^^^^^^^^^^ private type @@ -241,7 +241,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:111:9 + --> $DIR/associated-item-privacy-trait.rs:109:9 | LL | ::CONST; | ^^^^^^^^^^^^^^^^^^^^^ private type @@ -252,7 +252,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:113:9 + --> $DIR/associated-item-privacy-trait.rs:111:9 | LL | >::CONST; | ^^^^^^^^^^^^^^^^^^^^^^^^ private type @@ -263,7 +263,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:115:9 + --> $DIR/associated-item-privacy-trait.rs:113:9 | LL | >::CONST; | ^^^^^^^^^^^^^^^^^^^^^^^^^ private type @@ -274,7 +274,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:119:30 + --> $DIR/associated-item-privacy-trait.rs:117:30 | LL | let _: >::AssocTy; | ^ private type @@ -285,7 +285,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:121:17 + --> $DIR/associated-item-privacy-trait.rs:119:17 | LL | let _: >::AssocTy; | ^^^^ private type @@ -296,7 +296,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:124:35 + --> $DIR/associated-item-privacy-trait.rs:122:35 | LL | pub type InSignatureTy1 = ::AssocTy; | ^^^^^^^^^^^^^^^^^^^^^^^ private type @@ -307,7 +307,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:126:35 + --> $DIR/associated-item-privacy-trait.rs:124:35 | LL | pub type InSignatureTy2 = >::AssocTy; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ private type @@ -318,7 +318,7 @@ LL | priv_parent_substs::mac!(); = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) error: type `priv_parent_substs::Priv` is private - --> $DIR/associated-item-privacy-trait.rs:128:14 + --> $DIR/associated-item-privacy-trait.rs:126:14 | LL | impl PubTr for u8 {} | ^^^^^ private type diff --git a/src/test/ui/proc-macro/meta-macro-hygiene.rs b/src/test/ui/proc-macro/meta-macro-hygiene.rs index 7e839f747f33..2536b2fa9021 100644 --- a/src/test/ui/proc-macro/meta-macro-hygiene.rs +++ b/src/test/ui/proc-macro/meta-macro-hygiene.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // aux-build:make-macro.rs // aux-build:meta-macro.rs // edition:2018 diff --git a/src/test/ui/proc-macro/meta-macro-hygiene.stdout b/src/test/ui/proc-macro/meta-macro-hygiene.stdout index aa51fc8240d6..b7a37ab10ed5 100644 --- a/src/test/ui/proc-macro/meta-macro-hygiene.stdout +++ b/src/test/ui/proc-macro/meta-macro-hygiene.stdout @@ -1,8 +1,7 @@ Def site: $DIR/auxiliary/make-macro.rs:7:9: 7:56 (#5) -Input: TokenStream [Ident { ident: "$crate", span: $DIR/meta-macro-hygiene.rs:24:37: 24:43 (#4) }, Punct { ch: ':', spacing: Joint, span: $DIR/meta-macro-hygiene.rs:24:43: 24:45 (#4) }, Punct { ch: ':', spacing: Alone, span: $DIR/meta-macro-hygiene.rs:24:43: 24:45 (#4) }, Ident { ident: "dummy", span: $DIR/meta-macro-hygiene.rs:24:45: 24:50 (#4) }, Punct { ch: '!', spacing: Alone, span: $DIR/meta-macro-hygiene.rs:24:50: 24:51 (#4) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/meta-macro-hygiene.rs:24:51: 24:53 (#4) }] +Input: TokenStream [Ident { ident: "$crate", span: $DIR/meta-macro-hygiene.rs:23:37: 23:43 (#4) }, Punct { ch: ':', spacing: Joint, span: $DIR/meta-macro-hygiene.rs:23:43: 23:45 (#4) }, Punct { ch: ':', spacing: Alone, span: $DIR/meta-macro-hygiene.rs:23:43: 23:45 (#4) }, Ident { ident: "dummy", span: $DIR/meta-macro-hygiene.rs:23:45: 23:50 (#4) }, Punct { ch: '!', spacing: Alone, span: $DIR/meta-macro-hygiene.rs:23:50: 23:51 (#4) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/meta-macro-hygiene.rs:23:51: 23:53 (#4) }] Respanned: TokenStream [Ident { ident: "$crate", span: $DIR/auxiliary/make-macro.rs:7:9: 7:56 (#5) }, Punct { ch: ':', spacing: Joint, span: $DIR/auxiliary/make-macro.rs:7:9: 7:56 (#5) }, Punct { ch: ':', spacing: Alone, span: $DIR/auxiliary/make-macro.rs:7:9: 7:56 (#5) }, Ident { ident: "dummy", span: $DIR/auxiliary/make-macro.rs:7:9: 7:56 (#5) }, Punct { ch: '!', spacing: Alone, span: $DIR/auxiliary/make-macro.rs:7:9: 7:56 (#5) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/auxiliary/make-macro.rs:7:9: 7:56 (#5) }] #![feature /* 0#0 */(prelude_import)] -// ignore-tidy-linelength // aux-build:make-macro.rs // aux-build:meta-macro.rs // edition:2018 diff --git a/src/test/ui/regions/regions-enum-not-wf.rs b/src/test/ui/regions/regions-enum-not-wf.rs index 6de08f66d753..8b491ee4e303 100644 --- a/src/test/ui/regions/regions-enum-not-wf.rs +++ b/src/test/ui/regions/regions-enum-not-wf.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Various examples of structs whose fields are not well-formed. #![allow(dead_code)] diff --git a/src/test/ui/regions/regions-enum-not-wf.stderr b/src/test/ui/regions/regions-enum-not-wf.stderr index 36686eaf92f3..553a3e71c169 100644 --- a/src/test/ui/regions/regions-enum-not-wf.stderr +++ b/src/test/ui/regions/regions-enum-not-wf.stderr @@ -1,5 +1,5 @@ error[E0309]: the parameter type `T` may not live long enough - --> $DIR/regions-enum-not-wf.rs:19:18 + --> $DIR/regions-enum-not-wf.rs:17:18 | LL | enum Ref1<'a, T> { | - help: consider adding an explicit lifetime bound...: `T: 'a` @@ -7,7 +7,7 @@ LL | Ref1Variant1(RequireOutlives<'a, T>), | ^^^^^^^^^^^^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds error[E0309]: the parameter type `T` may not live long enough - --> $DIR/regions-enum-not-wf.rs:24:25 + --> $DIR/regions-enum-not-wf.rs:22:25 | LL | enum Ref2<'a, T> { | - help: consider adding an explicit lifetime bound...: `T: 'a` @@ -16,7 +16,7 @@ LL | Ref2Variant2(isize, RequireOutlives<'a, T>), | ^^^^^^^^^^^^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds error[E0309]: the parameter type `T` may not live long enough - --> $DIR/regions-enum-not-wf.rs:37:23 + --> $DIR/regions-enum-not-wf.rs:35:23 | LL | enum RefDouble<'a, 'b, T> { | - help: consider adding an explicit lifetime bound...: `T: 'b` diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs b/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs index 6de08f66d753..8b491ee4e303 100644 --- a/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs +++ b/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Various examples of structs whose fields are not well-formed. #![allow(dead_code)] diff --git a/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr b/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr index 36686eaf92f3..553a3e71c169 100644 --- a/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr +++ b/src/test/ui/rfc-2093-infer-outlives/regions-enum-not-wf.stderr @@ -1,5 +1,5 @@ error[E0309]: the parameter type `T` may not live long enough - --> $DIR/regions-enum-not-wf.rs:19:18 + --> $DIR/regions-enum-not-wf.rs:17:18 | LL | enum Ref1<'a, T> { | - help: consider adding an explicit lifetime bound...: `T: 'a` @@ -7,7 +7,7 @@ LL | Ref1Variant1(RequireOutlives<'a, T>), | ^^^^^^^^^^^^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds error[E0309]: the parameter type `T` may not live long enough - --> $DIR/regions-enum-not-wf.rs:24:25 + --> $DIR/regions-enum-not-wf.rs:22:25 | LL | enum Ref2<'a, T> { | - help: consider adding an explicit lifetime bound...: `T: 'a` @@ -16,7 +16,7 @@ LL | Ref2Variant2(isize, RequireOutlives<'a, T>), | ^^^^^^^^^^^^^^^^^^^^^^ ...so that the type `T` will meet its required lifetime bounds error[E0309]: the parameter type `T` may not live long enough - --> $DIR/regions-enum-not-wf.rs:37:23 + --> $DIR/regions-enum-not-wf.rs:35:23 | LL | enum RefDouble<'a, 'b, T> { | - help: consider adding an explicit lifetime bound...: `T: 'b` diff --git a/src/test/ui/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs b/src/test/ui/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs index 4d23a1911a3c..9736d1b964da 100644 --- a/src/test/ui/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs +++ b/src/test/ui/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs @@ -1,6 +1,5 @@ // build-fail // ignore-emscripten -// ignore-tidy-linelength #![feature(repr_simd, platform_intrinsics)] #![allow(non_camel_case_types)] #[repr(simd)] diff --git a/src/test/ui/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.stderr b/src/test/ui/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.stderr index 1ed472a485d1..0e88540bcc8e 100644 --- a/src/test/ui/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.stderr +++ b/src/test/ui/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.stderr @@ -1,11 +1,11 @@ error[E0511]: invalid monomorphization of `simd_saturating_add` intrinsic: expected element type `f32` of vector type `f32x4` to be a signed or unsigned integer type - --> $DIR/simd-intrinsic-generic-arithmetic-saturating.rs:34:9 + --> $DIR/simd-intrinsic-generic-arithmetic-saturating.rs:33:9 | LL | simd_saturating_add(z, z); | ^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0511]: invalid monomorphization of `simd_saturating_sub` intrinsic: expected element type `f32` of vector type `f32x4` to be a signed or unsigned integer type - --> $DIR/simd-intrinsic-generic-arithmetic-saturating.rs:36:9 + --> $DIR/simd-intrinsic-generic-arithmetic-saturating.rs:35:9 | LL | simd_saturating_sub(z, z); | ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/simd/simd-type-generic-monomorphisation.rs b/src/test/ui/simd/simd-type-generic-monomorphisation.rs index 0275f0ce4c15..12f9d65d77af 100644 --- a/src/test/ui/simd/simd-type-generic-monomorphisation.rs +++ b/src/test/ui/simd/simd-type-generic-monomorphisation.rs @@ -2,7 +2,6 @@ #![feature(repr_simd, platform_intrinsics)] -// ignore-tidy-linelength // error-pattern:monomorphising SIMD type `Simd2` with a non-primitive-scalar (integer/float/pointer) element type `X` diff --git a/src/test/ui/simd/simd-type.rs b/src/test/ui/simd/simd-type.rs index 73d032a0c8e5..d82c70b8d826 100644 --- a/src/test/ui/simd/simd-type.rs +++ b/src/test/ui/simd/simd-type.rs @@ -1,7 +1,6 @@ #![feature(repr_simd)] #![allow(non_camel_case_types)] -// ignore-tidy-linelength #[repr(simd)] struct empty; //~ ERROR SIMD vector cannot be empty diff --git a/src/test/ui/simd/simd-type.stderr b/src/test/ui/simd/simd-type.stderr index 823f10f5daf2..4e4a19ea32ad 100644 --- a/src/test/ui/simd/simd-type.stderr +++ b/src/test/ui/simd/simd-type.stderr @@ -1,35 +1,35 @@ error[E0075]: SIMD vector cannot be empty - --> $DIR/simd-type.rs:7:1 + --> $DIR/simd-type.rs:6:1 | LL | struct empty; | ^^^^^^^^^^^^^ error[E0075]: SIMD vector cannot be empty - --> $DIR/simd-type.rs:10:1 + --> $DIR/simd-type.rs:9:1 | LL | struct empty2([f32; 0]); | ^^^^^^^^^^^^^^^^^^^^^^^^ error[E0076]: SIMD vector should be homogeneous - --> $DIR/simd-type.rs:16:1 + --> $DIR/simd-type.rs:15:1 | LL | struct i64f64(i64, f64); | ^^^^^^^^^^^^^^^^^^^^^^^^ SIMD elements must have the same type error[E0077]: SIMD vector element type should be a primitive scalar (integer/float/pointer) type - --> $DIR/simd-type.rs:21:1 + --> $DIR/simd-type.rs:20:1 | LL | struct FooV(Foo, Foo); | ^^^^^^^^^^^^^^^^^^^^^^ error[E0077]: SIMD vector element type should be a primitive scalar (integer/float/pointer) type - --> $DIR/simd-type.rs:24:1 + --> $DIR/simd-type.rs:23:1 | LL | struct FooV2([Foo; 2]); | ^^^^^^^^^^^^^^^^^^^^^^^ error[E0075]: SIMD vector cannot have more than 32768 elements - --> $DIR/simd-type.rs:27:1 + --> $DIR/simd-type.rs:26:1 | LL | struct TooBig([f32; 65536]); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/single-primitive-inherent-impl.rs b/src/test/ui/single-primitive-inherent-impl.rs index baa23396c162..75c62feec32d 100644 --- a/src/test/ui/single-primitive-inherent-impl.rs +++ b/src/test/ui/single-primitive-inherent-impl.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - #![crate_type = "lib"] #![feature(lang_items)] #![no_std] diff --git a/src/test/ui/single-primitive-inherent-impl.stderr b/src/test/ui/single-primitive-inherent-impl.stderr index 50a0d5bef86d..349a12eac05a 100644 --- a/src/test/ui/single-primitive-inherent-impl.stderr +++ b/src/test/ui/single-primitive-inherent-impl.stderr @@ -1,5 +1,5 @@ error[E0390]: only a single inherent implementation marked with `#[lang = "str"]` is allowed for the `str` primitive - --> $DIR/single-primitive-inherent-impl.rs:11:1 + --> $DIR/single-primitive-inherent-impl.rs:9:1 | LL | / impl str { LL | | diff --git a/src/test/ui/stability-attribute/generics-default-stability-where.rs b/src/test/ui/stability-attribute/generics-default-stability-where.rs index 3fd14e25d0ef..4afbca262649 100644 --- a/src/test/ui/stability-attribute/generics-default-stability-where.rs +++ b/src/test/ui/stability-attribute/generics-default-stability-where.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // aux-build:unstable_generic_param.rs extern crate unstable_generic_param; diff --git a/src/test/ui/stability-attribute/generics-default-stability-where.stderr b/src/test/ui/stability-attribute/generics-default-stability-where.stderr index 19fa09f311ba..61253adc892b 100644 --- a/src/test/ui/stability-attribute/generics-default-stability-where.stderr +++ b/src/test/ui/stability-attribute/generics-default-stability-where.stderr @@ -1,5 +1,5 @@ error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability-where.rs:8:45 + --> $DIR/generics-default-stability-where.rs:7:45 | LL | impl Trait3 for T where T: Trait2 { | ^^^^^ diff --git a/src/test/ui/stability-attribute/generics-default-stability.rs b/src/test/ui/stability-attribute/generics-default-stability.rs index d6f28e3e447e..67f2334efc88 100644 --- a/src/test/ui/stability-attribute/generics-default-stability.rs +++ b/src/test/ui/stability-attribute/generics-default-stability.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // aux-build:unstable_generic_param.rs #![feature(unstable_default6)] diff --git a/src/test/ui/stability-attribute/generics-default-stability.stderr b/src/test/ui/stability-attribute/generics-default-stability.stderr index 45194413ccee..99523f8eb645 100644 --- a/src/test/ui/stability-attribute/generics-default-stability.stderr +++ b/src/test/ui/stability-attribute/generics-default-stability.stderr @@ -1,5 +1,5 @@ error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:17:13 + --> $DIR/generics-default-stability.rs:16:13 | LL | impl Trait1 for S { | ^^^^^ @@ -7,7 +7,7 @@ LL | impl Trait1 for S { = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:21:13 + --> $DIR/generics-default-stability.rs:20:13 | LL | impl Trait1 for S { | ^^^^^ @@ -15,7 +15,7 @@ LL | impl Trait1 for S { = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:25:13 + --> $DIR/generics-default-stability.rs:24:13 | LL | impl Trait2 for S { | ^^^^^ @@ -23,7 +23,7 @@ LL | impl Trait2 for S { = help: add `#![feature(unstable_default)]` to the crate attributes to enable warning: use of deprecated struct `unstable_generic_param::Struct4`: test - --> $DIR/generics-default-stability.rs:84:29 + --> $DIR/generics-default-stability.rs:83:29 | LL | let _: Struct4 = Struct4 { field: 1 }; | ^^^^^^^ @@ -31,217 +31,217 @@ LL | let _: Struct4 = Struct4 { field: 1 }; = note: `#[warn(deprecated)]` on by default warning: use of deprecated struct `unstable_generic_param::Struct4`: test - --> $DIR/generics-default-stability.rs:84:12 + --> $DIR/generics-default-stability.rs:83:12 | LL | let _: Struct4 = Struct4 { field: 1 }; | ^^^^^^^^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct4`: test - --> $DIR/generics-default-stability.rs:89:12 + --> $DIR/generics-default-stability.rs:88:12 | LL | let _: Struct4 = STRUCT4; | ^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct4`: test - --> $DIR/generics-default-stability.rs:90:12 + --> $DIR/generics-default-stability.rs:89:12 | LL | let _: Struct4 = STRUCT4; | ^^^^^^^^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct4`: test - --> $DIR/generics-default-stability.rs:91:29 + --> $DIR/generics-default-stability.rs:90:29 | LL | let _: Struct4 = Struct4 { field: 0 }; | ^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct4`: test - --> $DIR/generics-default-stability.rs:91:12 + --> $DIR/generics-default-stability.rs:90:12 | LL | let _: Struct4 = Struct4 { field: 0 }; | ^^^^^^^^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct5`: test - --> $DIR/generics-default-stability.rs:97:29 + --> $DIR/generics-default-stability.rs:96:29 | LL | let _: Struct5 = Struct5 { field: 1 }; | ^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct5`: test - --> $DIR/generics-default-stability.rs:97:12 + --> $DIR/generics-default-stability.rs:96:12 | LL | let _: Struct5 = Struct5 { field: 1 }; | ^^^^^^^^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct5`: test - --> $DIR/generics-default-stability.rs:102:12 + --> $DIR/generics-default-stability.rs:101:12 | LL | let _: Struct5 = STRUCT5; | ^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct5`: test - --> $DIR/generics-default-stability.rs:103:12 + --> $DIR/generics-default-stability.rs:102:12 | LL | let _: Struct5 = STRUCT5; | ^^^^^^^^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct5`: test - --> $DIR/generics-default-stability.rs:105:29 + --> $DIR/generics-default-stability.rs:104:29 | LL | let _: Struct5 = Struct5 { field: 0 }; | ^^^^^^^ warning: use of deprecated struct `unstable_generic_param::Struct5`: test - --> $DIR/generics-default-stability.rs:105:12 + --> $DIR/generics-default-stability.rs:104:12 | LL | let _: Struct5 = Struct5 { field: 0 }; | ^^^^^^^^^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias4`: test - --> $DIR/generics-default-stability.rs:160:28 + --> $DIR/generics-default-stability.rs:159:28 | LL | let _: Alias4 = Alias4::Some(1); | ^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias4`: test - --> $DIR/generics-default-stability.rs:160:12 + --> $DIR/generics-default-stability.rs:159:12 | LL | let _: Alias4 = Alias4::Some(1); | ^^^^^^^^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias4`: test - --> $DIR/generics-default-stability.rs:164:12 + --> $DIR/generics-default-stability.rs:163:12 | LL | let _: Alias4 = ALIAS4; | ^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias4`: test - --> $DIR/generics-default-stability.rs:165:12 + --> $DIR/generics-default-stability.rs:164:12 | LL | let _: Alias4 = ALIAS4; | ^^^^^^^^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias4`: test - --> $DIR/generics-default-stability.rs:166:28 + --> $DIR/generics-default-stability.rs:165:28 | LL | let _: Alias4 = Alias4::Some(0); | ^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias4`: test - --> $DIR/generics-default-stability.rs:166:12 + --> $DIR/generics-default-stability.rs:165:12 | LL | let _: Alias4 = Alias4::Some(0); | ^^^^^^^^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias5`: test - --> $DIR/generics-default-stability.rs:171:28 + --> $DIR/generics-default-stability.rs:170:28 | LL | let _: Alias5 = Alias5::Some(1); | ^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias5`: test - --> $DIR/generics-default-stability.rs:171:12 + --> $DIR/generics-default-stability.rs:170:12 | LL | let _: Alias5 = Alias5::Some(1); | ^^^^^^^^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias5`: test - --> $DIR/generics-default-stability.rs:175:12 + --> $DIR/generics-default-stability.rs:174:12 | LL | let _: Alias5 = ALIAS5; | ^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias5`: test - --> $DIR/generics-default-stability.rs:176:12 + --> $DIR/generics-default-stability.rs:175:12 | LL | let _: Alias5 = ALIAS5; | ^^^^^^^^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias5`: test - --> $DIR/generics-default-stability.rs:178:28 + --> $DIR/generics-default-stability.rs:177:28 | LL | let _: Alias5 = Alias5::Some(0); | ^^^^^^ warning: use of deprecated type alias `unstable_generic_param::Alias5`: test - --> $DIR/generics-default-stability.rs:178:12 + --> $DIR/generics-default-stability.rs:177:12 | LL | let _: Alias5 = Alias5::Some(0); | ^^^^^^^^^^^^^ warning: use of deprecated variant `unstable_generic_param::Enum4::Some`: test - --> $DIR/generics-default-stability.rs:232:27 + --> $DIR/generics-default-stability.rs:231:27 | LL | let _: Enum4 = Enum4::Some(1); | ^^^^^^^^^^^ warning: use of deprecated enum `unstable_generic_param::Enum4`: test - --> $DIR/generics-default-stability.rs:232:12 + --> $DIR/generics-default-stability.rs:231:12 | LL | let _: Enum4 = Enum4::Some(1); | ^^^^^^^^^^^^ warning: use of deprecated enum `unstable_generic_param::Enum4`: test - --> $DIR/generics-default-stability.rs:236:12 + --> $DIR/generics-default-stability.rs:235:12 | LL | let _: Enum4 = ENUM4; | ^^^^^ warning: use of deprecated enum `unstable_generic_param::Enum4`: test - --> $DIR/generics-default-stability.rs:237:12 + --> $DIR/generics-default-stability.rs:236:12 | LL | let _: Enum4 = ENUM4; | ^^^^^^^^^^^^ warning: use of deprecated variant `unstable_generic_param::Enum4::Some`: test - --> $DIR/generics-default-stability.rs:238:27 + --> $DIR/generics-default-stability.rs:237:27 | LL | let _: Enum4 = Enum4::Some(0); | ^^^^^^^^^^^ warning: use of deprecated enum `unstable_generic_param::Enum4`: test - --> $DIR/generics-default-stability.rs:238:12 + --> $DIR/generics-default-stability.rs:237:12 | LL | let _: Enum4 = Enum4::Some(0); | ^^^^^^^^^^^^ warning: use of deprecated variant `unstable_generic_param::Enum5::Some`: test - --> $DIR/generics-default-stability.rs:243:27 + --> $DIR/generics-default-stability.rs:242:27 | LL | let _: Enum5 = Enum5::Some(1); | ^^^^^^^^^^^ warning: use of deprecated enum `unstable_generic_param::Enum5`: test - --> $DIR/generics-default-stability.rs:243:12 + --> $DIR/generics-default-stability.rs:242:12 | LL | let _: Enum5 = Enum5::Some(1); | ^^^^^^^^^^^^ warning: use of deprecated enum `unstable_generic_param::Enum5`: test - --> $DIR/generics-default-stability.rs:247:12 + --> $DIR/generics-default-stability.rs:246:12 | LL | let _: Enum5 = ENUM5; | ^^^^^ warning: use of deprecated enum `unstable_generic_param::Enum5`: test - --> $DIR/generics-default-stability.rs:248:12 + --> $DIR/generics-default-stability.rs:247:12 | LL | let _: Enum5 = ENUM5; | ^^^^^^^^^^^^ warning: use of deprecated variant `unstable_generic_param::Enum5::Some`: test - --> $DIR/generics-default-stability.rs:250:27 + --> $DIR/generics-default-stability.rs:249:27 | LL | let _: Enum5 = Enum5::Some(0); | ^^^^^^^^^^^ warning: use of deprecated enum `unstable_generic_param::Enum5`: test - --> $DIR/generics-default-stability.rs:250:12 + --> $DIR/generics-default-stability.rs:249:12 | LL | let _: Enum5 = Enum5::Some(0); | ^^^^^^^^^^^^ error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:36:20 + --> $DIR/generics-default-stability.rs:35:20 | LL | let _: Struct1 = Struct1 { field: 1 }; | ^^^^^ @@ -249,7 +249,7 @@ LL | let _: Struct1 = Struct1 { field: 1 }; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:40:20 + --> $DIR/generics-default-stability.rs:39:20 | LL | let _: Struct1 = STRUCT1; | ^^^^^ @@ -257,7 +257,7 @@ LL | let _: Struct1 = STRUCT1; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:41:20 + --> $DIR/generics-default-stability.rs:40:20 | LL | let _: Struct1 = Struct1 { field: 0 }; | ^^^^^ @@ -265,7 +265,7 @@ LL | let _: Struct1 = Struct1 { field: 0 }; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:70:27 + --> $DIR/generics-default-stability.rs:69:27 | LL | let _: Struct3 = STRUCT3; | ^^^^^ @@ -273,7 +273,7 @@ LL | let _: Struct3 = STRUCT3; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:72:27 + --> $DIR/generics-default-stability.rs:71:27 | LL | let _: Struct3 = Struct3 { field1: 0, field2: 0 }; | ^^^^^ @@ -281,7 +281,7 @@ LL | let _: Struct3 = Struct3 { field1: 0, field2: 0 }; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:73:27 + --> $DIR/generics-default-stability.rs:72:27 | LL | let _: Struct3 = Struct3 { field1: 0, field2: 0 }; | ^^^^^ @@ -289,7 +289,7 @@ LL | let _: Struct3 = Struct3 { field1: 0, field2: 0 }; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:97:20 + --> $DIR/generics-default-stability.rs:96:20 | LL | let _: Struct5 = Struct5 { field: 1 }; | ^^^^^ @@ -297,7 +297,7 @@ LL | let _: Struct5 = Struct5 { field: 1 }; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:103:20 + --> $DIR/generics-default-stability.rs:102:20 | LL | let _: Struct5 = STRUCT5; | ^^^^^ @@ -305,7 +305,7 @@ LL | let _: Struct5 = STRUCT5; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:105:20 + --> $DIR/generics-default-stability.rs:104:20 | LL | let _: Struct5 = Struct5 { field: 0 }; | ^^^^^ @@ -313,7 +313,7 @@ LL | let _: Struct5 = Struct5 { field: 0 }; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:113:19 + --> $DIR/generics-default-stability.rs:112:19 | LL | let _: Alias1 = Alias1::Some(1); | ^^^^^ @@ -321,7 +321,7 @@ LL | let _: Alias1 = Alias1::Some(1); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:117:19 + --> $DIR/generics-default-stability.rs:116:19 | LL | let _: Alias1 = ALIAS1; | ^^^^^ @@ -329,7 +329,7 @@ LL | let _: Alias1 = ALIAS1; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:118:19 + --> $DIR/generics-default-stability.rs:117:19 | LL | let _: Alias1 = Alias1::Some(0); | ^^^^^ @@ -337,7 +337,7 @@ LL | let _: Alias1 = Alias1::Some(0); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:146:26 + --> $DIR/generics-default-stability.rs:145:26 | LL | let _: Alias3 = ALIAS3; | ^^^^^ @@ -345,7 +345,7 @@ LL | let _: Alias3 = ALIAS3; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:148:26 + --> $DIR/generics-default-stability.rs:147:26 | LL | let _: Alias3 = Alias3::Ok(0); | ^^^^^ @@ -353,7 +353,7 @@ LL | let _: Alias3 = Alias3::Ok(0); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:149:26 + --> $DIR/generics-default-stability.rs:148:26 | LL | let _: Alias3 = Alias3::Ok(0); | ^^^^^ @@ -361,7 +361,7 @@ LL | let _: Alias3 = Alias3::Ok(0); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:171:19 + --> $DIR/generics-default-stability.rs:170:19 | LL | let _: Alias5 = Alias5::Some(1); | ^^^^^ @@ -369,7 +369,7 @@ LL | let _: Alias5 = Alias5::Some(1); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:176:19 + --> $DIR/generics-default-stability.rs:175:19 | LL | let _: Alias5 = ALIAS5; | ^^^^^ @@ -377,7 +377,7 @@ LL | let _: Alias5 = ALIAS5; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:178:19 + --> $DIR/generics-default-stability.rs:177:19 | LL | let _: Alias5 = Alias5::Some(0); | ^^^^^ @@ -385,7 +385,7 @@ LL | let _: Alias5 = Alias5::Some(0); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:185:18 + --> $DIR/generics-default-stability.rs:184:18 | LL | let _: Enum1 = Enum1::Some(1); | ^^^^^ @@ -393,7 +393,7 @@ LL | let _: Enum1 = Enum1::Some(1); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:189:18 + --> $DIR/generics-default-stability.rs:188:18 | LL | let _: Enum1 = ENUM1; | ^^^^^ @@ -401,7 +401,7 @@ LL | let _: Enum1 = ENUM1; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:190:18 + --> $DIR/generics-default-stability.rs:189:18 | LL | let _: Enum1 = Enum1::Some(0); | ^^^^^ @@ -409,7 +409,7 @@ LL | let _: Enum1 = Enum1::Some(0); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:218:25 + --> $DIR/generics-default-stability.rs:217:25 | LL | let _: Enum3 = ENUM3; | ^^^^^ @@ -417,7 +417,7 @@ LL | let _: Enum3 = ENUM3; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:220:25 + --> $DIR/generics-default-stability.rs:219:25 | LL | let _: Enum3 = Enum3::Ok(0); | ^^^^^ @@ -425,7 +425,7 @@ LL | let _: Enum3 = Enum3::Ok(0); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:221:25 + --> $DIR/generics-default-stability.rs:220:25 | LL | let _: Enum3 = Enum3::Ok(0); | ^^^^^ @@ -433,7 +433,7 @@ LL | let _: Enum3 = Enum3::Ok(0); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:243:18 + --> $DIR/generics-default-stability.rs:242:18 | LL | let _: Enum5 = Enum5::Some(1); | ^^^^^ @@ -441,7 +441,7 @@ LL | let _: Enum5 = Enum5::Some(1); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:248:18 + --> $DIR/generics-default-stability.rs:247:18 | LL | let _: Enum5 = ENUM5; | ^^^^^ @@ -449,7 +449,7 @@ LL | let _: Enum5 = ENUM5; = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'unstable_default' - --> $DIR/generics-default-stability.rs:250:18 + --> $DIR/generics-default-stability.rs:249:18 | LL | let _: Enum5 = Enum5::Some(0); | ^^^^^ @@ -457,7 +457,7 @@ LL | let _: Enum5 = Enum5::Some(0); = help: add `#![feature(unstable_default)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'box_alloc_param' - --> $DIR/generics-default-stability.rs:257:24 + --> $DIR/generics-default-stability.rs:256:24 | LL | let _: Box1 = Box1::new(1); | ^^^^^^ @@ -465,25 +465,25 @@ LL | let _: Box1 = Box1::new(1); = help: add `#![feature(box_alloc_param)]` to the crate attributes to enable warning: use of deprecated field `unstable_generic_param::Struct4::field`: test - --> $DIR/generics-default-stability.rs:84:39 + --> $DIR/generics-default-stability.rs:83:39 | LL | let _: Struct4 = Struct4 { field: 1 }; | ^^^^^^^^ warning: use of deprecated field `unstable_generic_param::Struct4::field`: test - --> $DIR/generics-default-stability.rs:91:39 + --> $DIR/generics-default-stability.rs:90:39 | LL | let _: Struct4 = Struct4 { field: 0 }; | ^^^^^^^^ warning: use of deprecated field `unstable_generic_param::Struct5::field`: test - --> $DIR/generics-default-stability.rs:97:39 + --> $DIR/generics-default-stability.rs:96:39 | LL | let _: Struct5 = Struct5 { field: 1 }; | ^^^^^^^^ warning: use of deprecated field `unstable_generic_param::Struct5::field`: test - --> $DIR/generics-default-stability.rs:105:39 + --> $DIR/generics-default-stability.rs:104:39 | LL | let _: Struct5 = Struct5 { field: 0 }; | ^^^^^^^^ diff --git a/src/test/ui/structs/structure-constructor-type-mismatch.rs b/src/test/ui/structs/structure-constructor-type-mismatch.rs index 56c8ffb3e65b..efc6304a6f74 100644 --- a/src/test/ui/structs/structure-constructor-type-mismatch.rs +++ b/src/test/ui/structs/structure-constructor-type-mismatch.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - struct Point { x: T, y: T, diff --git a/src/test/ui/structs/structure-constructor-type-mismatch.stderr b/src/test/ui/structs/structure-constructor-type-mismatch.stderr index 461141496729..643812786813 100644 --- a/src/test/ui/structs/structure-constructor-type-mismatch.stderr +++ b/src/test/ui/structs/structure-constructor-type-mismatch.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:19:12 + --> $DIR/structure-constructor-type-mismatch.rs:17:12 | LL | x: 1, | ^ @@ -8,7 +8,7 @@ LL | x: 1, | help: use a float literal: `1.0` error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:22:12 + --> $DIR/structure-constructor-type-mismatch.rs:20:12 | LL | y: 2, | ^ @@ -17,7 +17,7 @@ LL | y: 2, | help: use a float literal: `2.0` error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:28:12 + --> $DIR/structure-constructor-type-mismatch.rs:26:12 | LL | x: 3, | ^ @@ -26,7 +26,7 @@ LL | x: 3, | help: use a float literal: `3.0` error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:31:12 + --> $DIR/structure-constructor-type-mismatch.rs:29:12 | LL | y: 4, | ^ @@ -35,7 +35,7 @@ LL | y: 4, | help: use a float literal: `4.0` error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:37:12 + --> $DIR/structure-constructor-type-mismatch.rs:35:12 | LL | x: 5, | ^ @@ -44,7 +44,7 @@ LL | x: 5, | help: use a float literal: `5.0` error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:44:12 + --> $DIR/structure-constructor-type-mismatch.rs:42:12 | LL | x: 7, | ^ @@ -53,7 +53,7 @@ LL | x: 7, | help: use a float literal: `7.0` error[E0107]: this type alias takes 0 type arguments but 1 type argument was supplied - --> $DIR/structure-constructor-type-mismatch.rs:50:15 + --> $DIR/structure-constructor-type-mismatch.rs:48:15 | LL | let pt3 = PointF:: { | ^^^^^^------- help: remove these generics @@ -61,13 +61,13 @@ LL | let pt3 = PointF:: { | expected 0 type arguments | note: type alias defined here, with 0 type parameters - --> $DIR/structure-constructor-type-mismatch.rs:8:6 + --> $DIR/structure-constructor-type-mismatch.rs:6:6 | LL | type PointF = Point; | ^^^^^^ error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:51:12 + --> $DIR/structure-constructor-type-mismatch.rs:49:12 | LL | x: 9, | ^ @@ -76,7 +76,7 @@ LL | x: 9, | help: use a float literal: `9.0` error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:52:12 + --> $DIR/structure-constructor-type-mismatch.rs:50:12 | LL | y: 10, | ^^ @@ -85,7 +85,7 @@ LL | y: 10, | help: use a float literal: `10.0` error[E0107]: this type alias takes 0 type arguments but 1 type argument was supplied - --> $DIR/structure-constructor-type-mismatch.rs:56:9 + --> $DIR/structure-constructor-type-mismatch.rs:54:9 | LL | PointF:: { .. } => {} | ^^^^^^------- help: remove these generics @@ -93,13 +93,13 @@ LL | PointF:: { .. } => {} | expected 0 type arguments | note: type alias defined here, with 0 type parameters - --> $DIR/structure-constructor-type-mismatch.rs:8:6 + --> $DIR/structure-constructor-type-mismatch.rs:6:6 | LL | type PointF = Point; | ^^^^^^ error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:56:9 + --> $DIR/structure-constructor-type-mismatch.rs:54:9 | LL | match (Point { x: 1, y: 2 }) { | ---------------------- this expression has type `Point<{integer}>` @@ -110,7 +110,7 @@ LL | PointF:: { .. } => {} found struct `Point` error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:61:9 + --> $DIR/structure-constructor-type-mismatch.rs:59:9 | LL | match (Point { x: 1, y: 2 }) { | ---------------------- this expression has type `Point<{integer}>` @@ -121,7 +121,7 @@ LL | PointF { .. } => {} found struct `Point` error[E0308]: mismatched types - --> $DIR/structure-constructor-type-mismatch.rs:69:9 + --> $DIR/structure-constructor-type-mismatch.rs:67:9 | LL | match (Pair { x: 1, y: 2 }) { | --------------------- this expression has type `Pair<{integer}, {integer}>` diff --git a/src/test/ui/symbol-names/impl1.legacy.stderr b/src/test/ui/symbol-names/impl1.legacy.stderr index bd32a39a65cb..b6012e41594b 100644 --- a/src/test/ui/symbol-names/impl1.legacy.stderr +++ b/src/test/ui/symbol-names/impl1.legacy.stderr @@ -1,71 +1,71 @@ error: symbol-name(_ZN5impl13foo3Foo3bar17) - --> $DIR/impl1.rs:15:9 + --> $DIR/impl1.rs:14:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling(impl1::foo::Foo::bar::) - --> $DIR/impl1.rs:15:9 + --> $DIR/impl1.rs:14:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt(impl1::foo::Foo::bar) - --> $DIR/impl1.rs:15:9 + --> $DIR/impl1.rs:14:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: def-path(foo::Foo::bar) - --> $DIR/impl1.rs:22:9 + --> $DIR/impl1.rs:21:9 | LL | #[rustc_def_path] | ^^^^^^^^^^^^^^^^^ error: symbol-name(_ZN5impl13bar33_$LT$impl$u20$impl1..foo..Foo$GT$3baz17) - --> $DIR/impl1.rs:33:9 + --> $DIR/impl1.rs:32:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling(impl1::bar::::baz::) - --> $DIR/impl1.rs:33:9 + --> $DIR/impl1.rs:32:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt(impl1::bar::::baz) - --> $DIR/impl1.rs:33:9 + --> $DIR/impl1.rs:32:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: def-path(bar::::baz) - --> $DIR/impl1.rs:40:9 + --> $DIR/impl1.rs:39:9 | LL | #[rustc_def_path] | ^^^^^^^^^^^^^^^^^ error: symbol-name(_ZN209_$LT$$u5b$$RF$dyn$u20$impl1..Foo$u2b$Assoc$u20$$u3d$$u20$extern$u20$$u22$C$u22$$u20$fn$LP$$RF$u8$C$$u20$...$RP$$u2b$impl1..AutoTrait$u3b$$u20$3$u5d$$u20$as$u20$impl1..main..$u7b$$u7b$closure$u7d$$u7d$..Bar$GT$6method17) - --> $DIR/impl1.rs:63:13 + --> $DIR/impl1.rs:62:13 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling(<[&dyn impl1::Foo+Assoc = extern "C" fn(&u8, ::.)+impl1::AutoTrait; 3] as impl1::main::{{closure}}::Bar>::method::) - --> $DIR/impl1.rs:63:13 + --> $DIR/impl1.rs:62:13 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt(<[&dyn impl1::Foo+Assoc = extern "C" fn(&u8, ::.)+impl1::AutoTrait; 3] as impl1::main::{{closure}}::Bar>::method) - --> $DIR/impl1.rs:63:13 + --> $DIR/impl1.rs:62:13 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: def-path(<[&dyn Foo extern "C" fn(&'r u8, ...)> + AutoTrait; 3] as main::{closure#1}::Bar>::method) - --> $DIR/impl1.rs:70:13 + --> $DIR/impl1.rs:69:13 | LL | #[rustc_def_path] | ^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/symbol-names/impl1.rs b/src/test/ui/symbol-names/impl1.rs index 771695330d8b..b0b31a57d069 100644 --- a/src/test/ui/symbol-names/impl1.rs +++ b/src/test/ui/symbol-names/impl1.rs @@ -1,5 +1,4 @@ // build-fail -// ignore-tidy-linelength // revisions: legacy v0 //[legacy]compile-flags: -Z symbol-mangling-version=legacy //[v0]compile-flags: -Z symbol-mangling-version=v0 diff --git a/src/test/ui/symbol-names/impl1.stderr b/src/test/ui/symbol-names/impl1.stderr deleted file mode 100644 index 20e48782a3a9..000000000000 --- a/src/test/ui/symbol-names/impl1.stderr +++ /dev/null @@ -1,26 +0,0 @@ -error: symbol-name(_ZN5impl13foo3Foo3bar17he53b9bee7600ed8dE) - --> $DIR/impl1.rs:8:9 - | -LL | #[rustc_symbol_name] - | ^^^^^^^^^^^^^^^^^^^^ - -error: def-path(foo::Foo::bar) - --> $DIR/impl1.rs:9:9 - | -LL | #[rustc_def_path] - | ^^^^^^^^^^^^^^^^^ - -error: symbol-name(_ZN5impl13bar33_$LT$impl$u20$impl1..foo..Foo$GT$3baz17h86c41f0462d901d4E) - --> $DIR/impl1.rs:18:9 - | -LL | #[rustc_symbol_name] - | ^^^^^^^^^^^^^^^^^^^^ - -error: def-path(bar::::baz) - --> $DIR/impl1.rs:19:9 - | -LL | #[rustc_def_path] - | ^^^^^^^^^^^^^^^^^ - -error: aborting due to 4 previous errors - diff --git a/src/test/ui/symbol-names/impl1.v0.stderr b/src/test/ui/symbol-names/impl1.v0.stderr index 3a6610935d6e..e5b0deee36e3 100644 --- a/src/test/ui/symbol-names/impl1.v0.stderr +++ b/src/test/ui/symbol-names/impl1.v0.stderr @@ -1,71 +1,71 @@ error: symbol-name(_RNvMNtCs21hi0yVfW1J_5impl13fooNtB2_3Foo3bar) - --> $DIR/impl1.rs:15:9 + --> $DIR/impl1.rs:14:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling(::bar) - --> $DIR/impl1.rs:15:9 + --> $DIR/impl1.rs:14:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt(::bar) - --> $DIR/impl1.rs:15:9 + --> $DIR/impl1.rs:14:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: def-path(foo::Foo::bar) - --> $DIR/impl1.rs:22:9 + --> $DIR/impl1.rs:21:9 | LL | #[rustc_def_path] | ^^^^^^^^^^^^^^^^^ error: symbol-name(_RNvMNtCs21hi0yVfW1J_5impl13barNtNtB4_3foo3Foo3baz) - --> $DIR/impl1.rs:33:9 + --> $DIR/impl1.rs:32:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling(::baz) - --> $DIR/impl1.rs:33:9 + --> $DIR/impl1.rs:32:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt(::baz) - --> $DIR/impl1.rs:33:9 + --> $DIR/impl1.rs:32:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: def-path(bar::::baz) - --> $DIR/impl1.rs:40:9 + --> $DIR/impl1.rs:39:9 | LL | #[rustc_def_path] | ^^^^^^^^^^^^^^^^^ error: symbol-name(_RNvXNCNvCs21hi0yVfW1J_5impl14mains_0ARDNtB6_3Foop5AssocFG_KCRL0_hvEuNtB6_9AutoTraitEL_j3_NtB2_3Bar6method) - --> $DIR/impl1.rs:63:13 + --> $DIR/impl1.rs:62:13 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling(<[&dyn impl1[17891616a171812d]::Foo extern "C" fn(&'a u8, ...)> + impl1[17891616a171812d]::AutoTrait; 3: usize] as impl1[17891616a171812d]::main::{closure#1}::Bar>::method) - --> $DIR/impl1.rs:63:13 + --> $DIR/impl1.rs:62:13 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt(<[&dyn impl1::Foo extern "C" fn(&'a u8, ...)> + impl1::AutoTrait; 3] as impl1::main::{closure#1}::Bar>::method) - --> $DIR/impl1.rs:63:13 + --> $DIR/impl1.rs:62:13 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: def-path(<[&dyn Foo extern "C" fn(&'r u8, ...)> + AutoTrait; 3] as main::{closure#1}::Bar>::method) - --> $DIR/impl1.rs:70:13 + --> $DIR/impl1.rs:69:13 | LL | #[rustc_def_path] | ^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/symbol-names/issue-60925.legacy.stderr b/src/test/ui/symbol-names/issue-60925.legacy.stderr index 65cc62b4d1dd..835767839923 100644 --- a/src/test/ui/symbol-names/issue-60925.legacy.stderr +++ b/src/test/ui/symbol-names/issue-60925.legacy.stderr @@ -1,17 +1,17 @@ error: symbol-name(_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17h6244e5288326926aE) - --> $DIR/issue-60925.rs:22:9 + --> $DIR/issue-60925.rs:21:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling(issue_60925::foo::Foo::foo::h6244e5288326926a) - --> $DIR/issue-60925.rs:22:9 + --> $DIR/issue-60925.rs:21:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt(issue_60925::foo::Foo::foo) - --> $DIR/issue-60925.rs:22:9 + --> $DIR/issue-60925.rs:21:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/symbol-names/issue-60925.rs b/src/test/ui/symbol-names/issue-60925.rs index 47c9230c0edf..3238eb1e579f 100644 --- a/src/test/ui/symbol-names/issue-60925.rs +++ b/src/test/ui/symbol-names/issue-60925.rs @@ -1,5 +1,4 @@ // build-fail -// ignore-tidy-linelength // revisions: legacy v0 //[legacy]compile-flags: -Z symbol-mangling-version=legacy //[v0]compile-flags: -Z symbol-mangling-version=v0 diff --git a/src/test/ui/symbol-names/issue-60925.stderr b/src/test/ui/symbol-names/issue-60925.stderr deleted file mode 100644 index ae753f0cebbc..000000000000 --- a/src/test/ui/symbol-names/issue-60925.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error: symbol-name(_ZN11issue_609253foo36Foo$LT$issue_60925..llv$6d$..Foo$GT$3foo17h059a991a004536adE) - --> $DIR/issue-60925.rs:16:9 - | -LL | #[rustc_symbol_name] - | ^^^^^^^^^^^^^^^^^^^^ - -error: demangling(issue_60925::foo::Foo $DIR/issue-60925.rs:16:9 - | -LL | #[rustc_symbol_name] - | ^^^^^^^^^^^^^^^^^^^^ - -error: demangling-alt(issue_60925::foo::Foo $DIR/issue-60925.rs:16:9 - | -LL | #[rustc_symbol_name] - | ^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 3 previous errors - diff --git a/src/test/ui/symbol-names/issue-60925.v0.stderr b/src/test/ui/symbol-names/issue-60925.v0.stderr index aed60a58af91..6a5885e1ea32 100644 --- a/src/test/ui/symbol-names/issue-60925.v0.stderr +++ b/src/test/ui/symbol-names/issue-60925.v0.stderr @@ -1,17 +1,17 @@ error: symbol-name(_RNvMNtCs21hi0yVfW1J_11issue_609253fooINtB2_3FooNtNtB4_4llvm3FooE3foo) - --> $DIR/issue-60925.rs:22:9 + --> $DIR/issue-60925.rs:21:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling(>::foo) - --> $DIR/issue-60925.rs:22:9 + --> $DIR/issue-60925.rs:21:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt(>::foo) - --> $DIR/issue-60925.rs:22:9 + --> $DIR/issue-60925.rs:21:9 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/symbol-names/issue-75326.legacy.stderr b/src/test/ui/symbol-names/issue-75326.legacy.stderr index 2ad16bdb8166..aadc0cf43a21 100644 --- a/src/test/ui/symbol-names/issue-75326.legacy.stderr +++ b/src/test/ui/symbol-names/issue-75326.legacy.stderr @@ -1,17 +1,17 @@ error: symbol-name(_ZN72_$LT$issue_75326..Foo$LT$I$C$E$GT$$u20$as$u20$issue_75326..Iterator2$GT$4next17SYMBOL_HASH) - --> $DIR/issue-75326.rs:42:5 + --> $DIR/issue-75326.rs:41:5 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling( as issue_75326::Iterator2>::next::SYMBOL_HASH) - --> $DIR/issue-75326.rs:42:5 + --> $DIR/issue-75326.rs:41:5 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt( as issue_75326::Iterator2>::next) - --> $DIR/issue-75326.rs:42:5 + --> $DIR/issue-75326.rs:41:5 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/symbol-names/issue-75326.rs b/src/test/ui/symbol-names/issue-75326.rs index faf36715b190..4d061cafef3b 100644 --- a/src/test/ui/symbol-names/issue-75326.rs +++ b/src/test/ui/symbol-names/issue-75326.rs @@ -1,5 +1,4 @@ // build-fail -// ignore-tidy-linelength // revisions: legacy v0 //[legacy]compile-flags: -Z symbol-mangling-version=legacy //[v0]compile-flags: -Z symbol-mangling-version=v0 diff --git a/src/test/ui/symbol-names/issue-75326.v0.stderr b/src/test/ui/symbol-names/issue-75326.v0.stderr index 1f57952acd64..98844aafb655 100644 --- a/src/test/ui/symbol-names/issue-75326.v0.stderr +++ b/src/test/ui/symbol-names/issue-75326.v0.stderr @@ -1,17 +1,17 @@ error: symbol-name(_RNvXINICs21hi0yVfW1J_11issue_75326s_0pppEINtB5_3FooppENtB5_9Iterator24nextB5_) - --> $DIR/issue-75326.rs:42:5 + --> $DIR/issue-75326.rs:41:5 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling( as issue_75326[17891616a171812d]::Iterator2>::next) - --> $DIR/issue-75326.rs:42:5 + --> $DIR/issue-75326.rs:41:5 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ error: demangling-alt( as issue_75326::Iterator2>::next) - --> $DIR/issue-75326.rs:42:5 + --> $DIR/issue-75326.rs:41:5 | LL | #[rustc_symbol_name] | ^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs b/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs index 5772450477c1..e4abb96b4bff 100644 --- a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs +++ b/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // Check that creating/matching on an enum variant through an alias with // the wrong braced/unit form is caught as an error. diff --git a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr b/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr index b0de3ee42e33..f80abade0fd5 100644 --- a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr +++ b/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr @@ -1,23 +1,23 @@ error[E0533]: expected unit struct, unit variant or constant, found struct variant `Alias::Braced` - --> $DIR/incorrect-variant-form-through-alias-caught.rs:10:5 + --> $DIR/incorrect-variant-form-through-alias-caught.rs:8:5 | LL | Alias::Braced; | ^^^^^^^^^^^^^ error[E0533]: expected unit struct, unit variant or constant, found struct variant `Alias::Braced` - --> $DIR/incorrect-variant-form-through-alias-caught.rs:12:9 + --> $DIR/incorrect-variant-form-through-alias-caught.rs:10:9 | LL | let Alias::Braced = panic!(); | ^^^^^^^^^^^^^ error[E0164]: expected tuple struct or tuple variant, found struct variant `Alias::Braced` - --> $DIR/incorrect-variant-form-through-alias-caught.rs:14:9 + --> $DIR/incorrect-variant-form-through-alias-caught.rs:12:9 | LL | let Alias::Braced(..) = panic!(); | ^^^^^^^^^^^^^^^^^ not a tuple variant or struct error[E0618]: expected function, found enum variant `Alias::Unit` - --> $DIR/incorrect-variant-form-through-alias-caught.rs:17:5 + --> $DIR/incorrect-variant-form-through-alias-caught.rs:15:5 | LL | enum Enum { Braced {}, Unit, Tuple() } | ---- `Alias::Unit` defined here @@ -33,7 +33,7 @@ LL | Alias::Unit; | ^^^^^^^^^^^ error[E0164]: expected tuple struct or tuple variant, found unit variant `Alias::Unit` - --> $DIR/incorrect-variant-form-through-alias-caught.rs:19:9 + --> $DIR/incorrect-variant-form-through-alias-caught.rs:17:9 | LL | let Alias::Unit() = panic!(); | ^^^^^^^^^^^^^ not a tuple variant or struct diff --git a/src/test/ui/type-alias-impl-trait/issue-53598.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53598.full_tait.stderr index 8c2d713c1607..ee4b7eef0bdc 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53598.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-53598.full_tait.stderr @@ -1,5 +1,5 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-53598.rs:5:32 + --> $DIR/issue-53598.rs:4:32 | LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ @@ -8,7 +8,7 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: see issue #63063 for more information error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-53598.rs:24:42 + --> $DIR/issue-53598.rs:23:42 | LL | fn foo(_: T) -> Self::Item { | __________________________________________^ diff --git a/src/test/ui/type-alias-impl-trait/issue-53598.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53598.min_tait.stderr index cb5d6ec80403..728721b6dbd7 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53598.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-53598.min_tait.stderr @@ -1,5 +1,5 @@ error: type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-53598.rs:24:42 + --> $DIR/issue-53598.rs:23:42 | LL | fn foo(_: T) -> Self::Item { | __________________________________________^ diff --git a/src/test/ui/type-alias-impl-trait/issue-53598.rs b/src/test/ui/type-alias-impl-trait/issue-53598.rs index 1388c587db95..38067a722237 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53598.rs +++ b/src/test/ui/type-alias-impl-trait/issue-53598.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-compare-mode-chalk // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] diff --git a/src/test/ui/type-alias-impl-trait/issue-57700.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-57700.full_tait.stderr index f92a5997a9bf..4336532cdbba 100644 --- a/src/test/ui/type-alias-impl-trait/issue-57700.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-57700.full_tait.stderr @@ -1,5 +1,5 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-57700.rs:6:32 + --> $DIR/issue-57700.rs:5:32 | LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ @@ -8,7 +8,7 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: see issue #63063 for more information error: type parameter `impl Deref` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-57700.rs:20:58 + --> $DIR/issue-57700.rs:19:58 | LL | fn foo(self: impl Deref) -> Self::Bar { | __________________________________________________________^ diff --git a/src/test/ui/type-alias-impl-trait/issue-57700.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-57700.min_tait.stderr index 1aaa42b99ac6..47ab31cd797b 100644 --- a/src/test/ui/type-alias-impl-trait/issue-57700.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-57700.min_tait.stderr @@ -1,5 +1,5 @@ error: type parameter `impl Deref` is part of concrete type but not used in parameter list for the `impl Trait` type alias - --> $DIR/issue-57700.rs:20:58 + --> $DIR/issue-57700.rs:19:58 | LL | fn foo(self: impl Deref) -> Self::Bar { | __________________________________________________________^ diff --git a/src/test/ui/type-alias-impl-trait/issue-57700.rs b/src/test/ui/type-alias-impl-trait/issue-57700.rs index c7a123ad2405..476a188cde69 100644 --- a/src/test/ui/type-alias-impl-trait/issue-57700.rs +++ b/src/test/ui/type-alias-impl-trait/issue-57700.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength // ignore-compare-mode-chalk #![feature(arbitrary_self_types)] // revisions: min_tait full_tait diff --git a/src/test/ui/union/union-deref.rs b/src/test/ui/union/union-deref.rs index df598eea9ef0..48f5b36bd17f 100644 --- a/src/test/ui/union/union-deref.rs +++ b/src/test/ui/union/union-deref.rs @@ -1,4 +1,3 @@ -// ignore-tidy-linelength //! Test the part of RFC 2514 that is about not applying `DerefMut` coercions //! of union fields. #![feature(untagged_unions)] diff --git a/src/test/ui/union/union-deref.stderr b/src/test/ui/union/union-deref.stderr index f7722764cd3f..6af050bc4b79 100644 --- a/src/test/ui/union/union-deref.stderr +++ b/src/test/ui/union/union-deref.stderr @@ -1,5 +1,5 @@ error: not automatically applying `DerefMut` on `ManuallyDrop` union field - --> $DIR/union-deref.rs:15:14 + --> $DIR/union-deref.rs:14:14 | LL | unsafe { u.f.0 = Vec::new() }; | ^^^ @@ -8,7 +8,7 @@ LL | unsafe { u.f.0 = Vec::new() }; = help: add an explicit `*` if that is desired, or call `ptr::write` to not run the destructor error: not automatically applying `DerefMut` on `ManuallyDrop` union field - --> $DIR/union-deref.rs:17:19 + --> $DIR/union-deref.rs:16:19 | LL | unsafe { &mut u.f.0 }; | ^^^ @@ -17,7 +17,7 @@ LL | unsafe { &mut u.f.0 }; = help: add an explicit `*` if that is desired, or call `ptr::write` to not run the destructor error: not automatically applying `DerefMut` on `ManuallyDrop` union field - --> $DIR/union-deref.rs:19:14 + --> $DIR/union-deref.rs:18:14 | LL | unsafe { u.f.0.push(0) }; | ^^^ @@ -26,7 +26,7 @@ LL | unsafe { u.f.0.push(0) }; = help: add an explicit `*` if that is desired, or call `ptr::write` to not run the destructor error: not automatically applying `DerefMut` on `ManuallyDrop` union field - --> $DIR/union-deref.rs:23:14 + --> $DIR/union-deref.rs:22:14 | LL | unsafe { u.f.0.0 = Vec::new() }; | ^^^^^ @@ -35,7 +35,7 @@ LL | unsafe { u.f.0.0 = Vec::new() }; = help: add an explicit `*` if that is desired, or call `ptr::write` to not run the destructor error: not automatically applying `DerefMut` on `ManuallyDrop` union field - --> $DIR/union-deref.rs:25:19 + --> $DIR/union-deref.rs:24:19 | LL | unsafe { &mut u.f.0.0 }; | ^^^^^ @@ -44,7 +44,7 @@ LL | unsafe { &mut u.f.0.0 }; = help: add an explicit `*` if that is desired, or call `ptr::write` to not run the destructor error: not automatically applying `DerefMut` on `ManuallyDrop` union field - --> $DIR/union-deref.rs:27:14 + --> $DIR/union-deref.rs:26:14 | LL | unsafe { u.f.0.0.push(0) }; | ^^^^^ diff --git a/src/test/ui/unsized/return-unsized-from-trait-method.rs b/src/test/ui/unsized/return-unsized-from-trait-method.rs index 2d265d5db5c1..ebe6edd10101 100644 --- a/src/test/ui/unsized/return-unsized-from-trait-method.rs +++ b/src/test/ui/unsized/return-unsized-from-trait-method.rs @@ -1,5 +1,3 @@ -// ignore-tidy-linelength - // regression test for #26376 trait Foo { diff --git a/src/test/ui/unsized/return-unsized-from-trait-method.stderr b/src/test/ui/unsized/return-unsized-from-trait-method.stderr index 7ecdd2861667..4dd7cf5e02fc 100644 --- a/src/test/ui/unsized/return-unsized-from-trait-method.stderr +++ b/src/test/ui/unsized/return-unsized-from-trait-method.stderr @@ -1,5 +1,5 @@ error[E0161]: cannot move a value of type [u8]: the size of [u8] cannot be statically determined - --> $DIR/return-unsized-from-trait-method.rs:11:17 + --> $DIR/return-unsized-from-trait-method.rs:9:17 | LL | let _ = f.foo(); | ^^^^^^^ From 8a058926ecd6d0988714f8f7a5a31293c533f8c6 Mon Sep 17 00:00:00 2001 From: SlightlyOutOfPhase Date: Sat, 3 Apr 2021 16:32:59 -0400 Subject: [PATCH 32/62] List trait impls before methods from deref in the sidebar of Rustdoc's output --- src/librustdoc/html/render/mod.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 07bd26a4c5eb..2bc90e0a3c9f 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -1931,13 +1931,6 @@ fn sidebar_assoc_items(cx: &Context<'_>, out: &mut Buffer, it: &clean::Item) { } if v.iter().any(|i| i.inner_impl().trait_.is_some()) { - if let Some(impl_) = v - .iter() - .filter(|i| i.inner_impl().trait_.is_some()) - .find(|i| i.inner_impl().trait_.def_id_full(cache) == cx.cache.deref_trait_did) - { - sidebar_deref_methods(cx, out, impl_, v); - } let format_impls = |impls: Vec<&Impl>| { let mut links = FxHashSet::default(); @@ -2005,6 +1998,14 @@ fn sidebar_assoc_items(cx: &Context<'_>, out: &mut Buffer, it: &clean::Item) { ); write_sidebar_links(out, blanket_format); } + + if let Some(impl_) = v + .iter() + .filter(|i| i.inner_impl().trait_.is_some()) + .find(|i| i.inner_impl().trait_.def_id_full(cache) == cx.cache.deref_trait_did) + { + sidebar_deref_methods(cx, out, impl_, v); + } } } } From 72502e889c1b30aa95d76be22bfdb359efd9ba74 Mon Sep 17 00:00:00 2001 From: SlightlyOutOfPhase Date: Sat, 3 Apr 2021 17:00:07 -0400 Subject: [PATCH 33/62] Remove trailing whitespace --- src/librustdoc/html/render/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 2bc90e0a3c9f..f6b676228f99 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -1998,7 +1998,7 @@ fn sidebar_assoc_items(cx: &Context<'_>, out: &mut Buffer, it: &clean::Item) { ); write_sidebar_links(out, blanket_format); } - + if let Some(impl_) = v .iter() .filter(|i| i.inner_impl().trait_.is_some()) From 13e482bf8384062eb0360603a895ffdbfe2cc95a Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sat, 3 Apr 2021 15:14:23 +0200 Subject: [PATCH 34/62] Remove unneeded INITIAL_IDS const --- src/librustdoc/config.rs | 1 - src/librustdoc/html/markdown.rs | 15 +++++++++------ src/librustdoc/html/render/context.rs | 7 ++----- src/librustdoc/html/render/mod.rs | 18 ------------------ 4 files changed, 11 insertions(+), 30 deletions(-) diff --git a/src/librustdoc/config.rs b/src/librustdoc/config.rs index 246e0ebbb2ba..5df52e498b53 100644 --- a/src/librustdoc/config.rs +++ b/src/librustdoc/config.rs @@ -507,7 +507,6 @@ impl Options { let edition = config::parse_crate_edition(&matches); let mut id_map = html::markdown::IdMap::new(); - id_map.populate(&html::render::INITIAL_IDS); let external_html = match ExternalHtml::load( &matches.opt_strs("html-in-header"), &matches.opt_strs("html-before-content"), diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index cdccb1c85812..509f17305577 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -1356,6 +1356,9 @@ fn init_id_map() -> FxHashMap { map.insert("rustdoc-vars".to_owned(), 1); map.insert("sidebar-vars".to_owned(), 1); map.insert("copy-path".to_owned(), 1); + map.insert("help".to_owned(), 1); + map.insert("TOC".to_owned(), 1); + map.insert("render-detail".to_owned(), 1); // This is the list of IDs used by rustdoc sections. map.insert("fields".to_owned(), 1); map.insert("variants".to_owned(), 1); @@ -1365,6 +1368,12 @@ fn init_id_map() -> FxHashMap { map.insert("trait-implementations".to_owned(), 1); map.insert("synthetic-implementations".to_owned(), 1); map.insert("blanket-implementations".to_owned(), 1); + map.insert("associated-types".to_owned(), 1); + map.insert("associated-const".to_owned(), 1); + map.insert("required-methods".to_owned(), 1); + map.insert("provided-methods".to_owned(), 1); + map.insert("implementors".to_owned(), 1); + map.insert("synthetic-implementors".to_owned(), 1); map } @@ -1373,12 +1382,6 @@ impl IdMap { IdMap { map: init_id_map() } } - crate fn populate, S: AsRef + ToString>(&mut self, ids: I) { - for id in ids { - let _ = self.derive(id); - } - } - crate fn derive + ToString>(&mut self, candidate: S) -> String { let id = match self.map.get_mut(candidate.as_ref()) { None => candidate.to_string(), diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs index 07c850a20a9a..1a993f360a16 100644 --- a/src/librustdoc/html/render/context.rs +++ b/src/librustdoc/html/render/context.rs @@ -18,7 +18,7 @@ use super::print_item::{full_path, item_path, print_item}; use super::write_shared::write_shared; use super::{ print_sidebar, settings, AllTypes, NameDoc, SharedContext, StylePath, BASIC_KEYWORDS, - CURRENT_DEPTH, INITIAL_IDS, + CURRENT_DEPTH, }; use crate::clean::{self, AttributesExt}; @@ -423,14 +423,11 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> { } fn make_child_renderer(&self) -> Self { - let mut id_map = IdMap::new(); - id_map.populate(&INITIAL_IDS); - Self { current: self.current.clone(), dst: self.dst.clone(), render_redirect_pages: self.render_redirect_pages, - id_map: RefCell::new(id_map), + id_map: RefCell::new(IdMap::new()), deref_id_map: RefCell::new(FxHashMap::default()), shared: Rc::clone(&self.shared), cache: Rc::clone(&self.cache), diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 07bd26a4c5eb..3a557a3f719b 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -283,24 +283,6 @@ crate struct StylePath { thread_local!(crate static CURRENT_DEPTH: Cell = Cell::new(0)); -crate const INITIAL_IDS: [&'static str; 15] = [ - "main", - "search", - "help", - "TOC", - "render-detail", - "associated-types", - "associated-const", - "required-methods", - "provided-methods", - "implementors", - "synthetic-implementors", - "implementors-list", - "synthetic-implementors-list", - "methods", - "implementations", -]; - fn write_srclink(cx: &Context<'_>, item: &clean::Item, buf: &mut Buffer) { if let Some(l) = cx.src_href(item) { write!(buf, "[src]", l) From 3bd241f95b6992d73f159c00551069e2c3424747 Mon Sep 17 00:00:00 2001 From: The8472 Date: Fri, 2 Apr 2021 23:06:05 +0200 Subject: [PATCH 35/62] cleanup leak after test to make miri happy --- library/alloc/tests/vec.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/library/alloc/tests/vec.rs b/library/alloc/tests/vec.rs index b926c697d58a..026d3f63bb77 100644 --- a/library/alloc/tests/vec.rs +++ b/library/alloc/tests/vec.rs @@ -1078,12 +1078,21 @@ fn test_from_iter_specialization_panic_during_drop_leaks() { } } + let mut to_free: *mut Droppable = core::ptr::null_mut(); + let mut cap = 0; + let _ = std::panic::catch_unwind(AssertUnwindSafe(|| { - let v = vec![Droppable::DroppedTwice(Box::new(123)), Droppable::PanicOnDrop]; + let mut v = vec![Droppable::DroppedTwice(Box::new(123)), Droppable::PanicOnDrop]; + to_free = v.as_mut_ptr(); + cap = v.capacity(); let _ = v.into_iter().take(0).collect::>(); })); assert_eq!(unsafe { DROP_COUNTER }, 1); + // clean up the leak to keep miri happy + unsafe { + Vec::from_raw_parts(to_free, 0, cap); + } } #[test] From 572873fce0365cbba75557458ee5d7cb744bac12 Mon Sep 17 00:00:00 2001 From: the8472 Date: Sun, 4 Apr 2021 01:38:58 +0200 Subject: [PATCH 36/62] suggestion from review Co-authored-by: Ralf Jung --- library/alloc/tests/vec.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/alloc/tests/vec.rs b/library/alloc/tests/vec.rs index 026d3f63bb77..cdd18520c599 100644 --- a/library/alloc/tests/vec.rs +++ b/library/alloc/tests/vec.rs @@ -1091,7 +1091,7 @@ fn test_from_iter_specialization_panic_during_drop_leaks() { assert_eq!(unsafe { DROP_COUNTER }, 1); // clean up the leak to keep miri happy unsafe { - Vec::from_raw_parts(to_free, 0, cap); + drop(Vec::from_raw_parts(to_free, 0, cap)); } } From a3d0fa8008c75c543c37d6f5af6414ae83874974 Mon Sep 17 00:00:00 2001 From: AngelicosPhosphoros Date: Sun, 4 Apr 2021 02:42:56 +0300 Subject: [PATCH 37/62] Add `#[inline]` to IpAddr methods Add some inlines to trivial methods of IpAddr Closes https://github.com/rust-lang/rust/issues/77583 --- library/std/src/net/ip.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/std/src/net/ip.rs b/library/std/src/net/ip.rs index 7f8c33dac561..da2415e36107 100644 --- a/library/std/src/net/ip.rs +++ b/library/std/src/net/ip.rs @@ -993,6 +993,7 @@ impl Ord for Ipv4Addr { } impl IntoInner for Ipv4Addr { + #[inline] fn into_inner(self) -> c::in_addr { self.inner } @@ -1800,11 +1801,13 @@ impl Ord for Ipv6Addr { } impl AsInner for Ipv6Addr { + #[inline] fn as_inner(&self) -> &c::in6_addr { &self.inner } } impl FromInner for Ipv6Addr { + #[inline] fn from_inner(addr: c::in6_addr) -> Ipv6Addr { Ipv6Addr { inner: addr } } From 5d1747bf07311f893829728c0e26e088794651e1 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 4 Apr 2021 11:24:25 +0200 Subject: [PATCH 38/62] rely on intra-doc links Co-authored-by: Yuki Okushi --- library/core/src/ptr/mod.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/library/core/src/ptr/mod.rs b/library/core/src/ptr/mod.rs index ba14b1abdb2e..bed5e0b89989 100644 --- a/library/core/src/ptr/mod.rs +++ b/library/core/src/ptr/mod.rs @@ -1548,8 +1548,6 @@ fnptr_impls_args! { A, B, C, D, E, F, G, H, I, J, K, L } /// See [`addr_of_mut`] for how to create a pointer to ininitialized data. /// Doing that with `addr_of` would not make much sense since one could only /// read the data, and that would be Undefined Behavior. -/// -/// [`addr_of_mut`]: macro.addr_of_mut.html #[stable(feature = "raw_ref_macros", since = "1.51.0")] #[rustc_macro_transparency = "semitransparent"] #[allow_internal_unstable(raw_ref_op)] From ddc53f809b89001c08296b5b49fe1fcad1e566d5 Mon Sep 17 00:00:00 2001 From: Amanieu d'Antras Date: Sun, 4 Apr 2021 08:09:56 +0100 Subject: [PATCH 39/62] Allow clobbering unsupported registers in asm! Previously registers could only be marked as clobbered if the target feature for that register was enabled. This restriction is now removed. --- compiler/rustc_ast_lowering/src/expr.rs | 82 +++++++++++++++---------- compiler/rustc_codegen_llvm/src/asm.rs | 27 +++++++- src/test/codegen/asm-target-clobbers.rs | 21 +++++++ 3 files changed, 97 insertions(+), 33 deletions(-) create mode 100644 src/test/codegen/asm-target-clobbers.rs diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs index 32fb8d1c8f46..d5a9d7ee6e36 100644 --- a/compiler/rustc_ast_lowering/src/expr.rs +++ b/compiler/rustc_ast_lowering/src/expr.rs @@ -1499,46 +1499,64 @@ impl<'hir> LoweringContext<'_, 'hir> { // previous iteration. required_features.clear(); - // Validate register classes against currently enabled target - // features. We check that at least one type is available for - // the current target. let reg_class = reg.reg_class(); if reg_class == asm::InlineAsmRegClass::Err { continue; } - for &(_, feature) in reg_class.supported_types(asm_arch.unwrap()) { - if let Some(feature) = feature { - if self.sess.target_features.contains(&Symbol::intern(feature)) { + + // We ignore target feature requirements for clobbers: if the + // feature is disabled then the compiler doesn't care what we + // do with the registers. + // + // Note that this is only possible for explicit register + // operands, which cannot be used in the asm string. + let is_clobber = matches!( + op, + hir::InlineAsmOperand::Out { + reg: asm::InlineAsmRegOrRegClass::Reg(_), + late: _, + expr: None + } + ); + + if !is_clobber { + // Validate register classes against currently enabled target + // features. We check that at least one type is available for + // the current target. + for &(_, feature) in reg_class.supported_types(asm_arch.unwrap()) { + if let Some(feature) = feature { + if self.sess.target_features.contains(&Symbol::intern(feature)) { + required_features.clear(); + break; + } else { + required_features.push(feature); + } + } else { required_features.clear(); break; - } else { - required_features.push(feature); } - } else { - required_features.clear(); - break; } - } - // We are sorting primitive strs here and can use unstable sort here - required_features.sort_unstable(); - required_features.dedup(); - match &required_features[..] { - [] => {} - [feature] => { - let msg = format!( - "register class `{}` requires the `{}` target feature", - reg_class.name(), - feature - ); - sess.struct_span_err(op_sp, &msg).emit(); - } - features => { - let msg = format!( - "register class `{}` requires at least one target feature: {}", - reg_class.name(), - features.join(", ") - ); - sess.struct_span_err(op_sp, &msg).emit(); + // We are sorting primitive strs here and can use unstable sort here + required_features.sort_unstable(); + required_features.dedup(); + match &required_features[..] { + [] => {} + [feature] => { + let msg = format!( + "register class `{}` requires the `{}` target feature", + reg_class.name(), + feature + ); + sess.struct_span_err(op_sp, &msg).emit(); + } + features => { + let msg = format!( + "register class `{}` requires at least one target feature: {}", + reg_class.name(), + features.join(", ") + ); + sess.struct_span_err(op_sp, &msg).emit(); + } } } diff --git a/compiler/rustc_codegen_llvm/src/asm.rs b/compiler/rustc_codegen_llvm/src/asm.rs index e7d359c4f149..84b091d8d4d7 100644 --- a/compiler/rustc_codegen_llvm/src/asm.rs +++ b/compiler/rustc_codegen_llvm/src/asm.rs @@ -14,7 +14,7 @@ use rustc_data_structures::fx::FxHashMap; use rustc_hir as hir; use rustc_middle::ty::layout::TyAndLayout; use rustc_middle::{bug, span_bug}; -use rustc_span::{Pos, Span}; +use rustc_span::{Pos, Span, Symbol}; use rustc_target::abi::*; use rustc_target::asm::*; @@ -125,15 +125,39 @@ impl AsmBuilderMethods<'tcx> for Builder<'a, 'll, 'tcx> { // Collect the types of output operands let mut constraints = vec![]; + let mut clobbers = vec![]; let mut output_types = vec![]; let mut op_idx = FxHashMap::default(); for (idx, op) in operands.iter().enumerate() { match *op { InlineAsmOperandRef::Out { reg, late, place } => { + let is_target_supported = |reg_class: InlineAsmRegClass| { + for &(_, feature) in reg_class.supported_types(asm_arch) { + if let Some(feature) = feature { + if self.tcx.sess.target_features.contains(&Symbol::intern(feature)) + { + return true; + } + } else { + // Register class is unconditionally supported + return true; + } + } + false + }; + let mut layout = None; let ty = if let Some(ref place) = place { layout = Some(&place.layout); llvm_fixup_output_type(self.cx, reg.reg_class(), &place.layout) + } else if !is_target_supported(reg.reg_class()) { + // We turn discarded outputs into clobber constraints + // if the target feature needed by the register class is + // disabled. This is necessary otherwise LLVM will try + // to actually allocate a register for the dummy output. + assert!(matches!(reg, InlineAsmRegOrRegClass::Reg(_))); + clobbers.push(format!("~{}", reg_to_llvm(reg, None))); + continue; } else { // If the output is discarded, we don't really care what // type is used. We're just using this to tell LLVM to @@ -244,6 +268,7 @@ impl AsmBuilderMethods<'tcx> for Builder<'a, 'll, 'tcx> { } } + constraints.append(&mut clobbers); if !options.contains(InlineAsmOptions::PRESERVES_FLAGS) { match asm_arch { InlineAsmArch::AArch64 | InlineAsmArch::Arm => { diff --git a/src/test/codegen/asm-target-clobbers.rs b/src/test/codegen/asm-target-clobbers.rs new file mode 100644 index 000000000000..f637cdcd2344 --- /dev/null +++ b/src/test/codegen/asm-target-clobbers.rs @@ -0,0 +1,21 @@ +// only-x86_64 +// revisions: base avx512 +// [avx512]compile-flags: -C target-feature=+avx512f + +#![crate_type = "rlib"] +#![feature(asm)] + +// CHECK-LABEL: @avx512_clobber +// base: call void asm sideeffect inteldialect "", "~{xmm31}"() +// avx512: call float asm sideeffect inteldialect "", "=&{xmm31}"() +#[no_mangle] +pub unsafe fn avx512_clobber() { + asm!("", out("zmm31") _, options(nostack, nomem, preserves_flags)); +} + +// CHECK-LABEL: @eax_clobber +// CHECK: call i32 asm sideeffect inteldialect "", "=&{ax}"() +#[no_mangle] +pub unsafe fn eax_clobber() { + asm!("", out("eax") _, options(nostack, nomem, preserves_flags)); +} From 31d0459207d3623cabf931ed6b272b45592c2a7e Mon Sep 17 00:00:00 2001 From: Amanieu d'Antras Date: Sun, 4 Apr 2021 10:49:44 +0100 Subject: [PATCH 40/62] Update clobber example in the asm documentation --- src/doc/unstable-book/src/library-features/asm.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/doc/unstable-book/src/library-features/asm.md b/src/doc/unstable-book/src/library-features/asm.md index c0e23b834d15..25d8629a38f1 100644 --- a/src/doc/unstable-book/src/library-features/asm.md +++ b/src/doc/unstable-book/src/library-features/asm.md @@ -306,13 +306,19 @@ fn call_foo(arg: i32) { sym foo, // 1st argument in rdi, which is caller-saved inout("rdi") arg => _, - // All caller-saved registers must be marked as clobberred + // All caller-saved registers must be marked as clobbered out("rax") _, out("rcx") _, out("rdx") _, out("rsi") _, out("r8") _, out("r9") _, out("r10") _, out("r11") _, out("xmm0") _, out("xmm1") _, out("xmm2") _, out("xmm3") _, out("xmm4") _, out("xmm5") _, out("xmm6") _, out("xmm7") _, out("xmm8") _, out("xmm9") _, out("xmm10") _, out("xmm11") _, out("xmm12") _, out("xmm13") _, out("xmm14") _, out("xmm15") _, + // Also mark AVX-512 registers as clobbered. This is accepted by the + // compiler even if AVX-512 is not enabled on the current target. + out("xmm16") _, out("xmm17") _, out("xmm18") _, out("xmm19") _, + out("xmm20") _, out("xmm21") _, out("xmm22") _, out("xmm13") _, + out("xmm24") _, out("xmm25") _, out("xmm26") _, out("xmm27") _, + out("xmm28") _, out("xmm29") _, out("xmm30") _, out("xmm31") _, ) } } From a41d41cbc66b81111704a8787bf408b78de7730d Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 24 Mar 2021 21:42:04 +0100 Subject: [PATCH 41/62] Fix error codes check run and ensure it will not go unnoticed again --- src/tools/tidy/src/error_codes_check.rs | 40 +++++++++++++++++-------- src/tools/tidy/src/main.rs | 2 +- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/tools/tidy/src/error_codes_check.rs b/src/tools/tidy/src/error_codes_check.rs index a7199fdfce66..55f824b63f2e 100644 --- a/src/tools/tidy/src/error_codes_check.rs +++ b/src/tools/tidy/src/error_codes_check.rs @@ -48,6 +48,8 @@ fn check_error_code_explanation( } fn check_if_error_code_is_test_in_explanation(f: &str, err_code: &str) -> bool { + let mut ignore_found = false; + for line in f.lines() { let s = line.trim(); if s.starts_with("#### Note: this error code is no longer emitted by the compiler") { @@ -56,13 +58,13 @@ fn check_if_error_code_is_test_in_explanation(f: &str, err_code: &str) -> bool { if s.starts_with("```") { if s.contains("compile_fail") && s.contains(err_code) { return true; - } else if s.contains('(') { + } else if s.contains("ignore") { // It's very likely that we can't actually make it fail compilation... - return true; + ignore_found = true; } } } - false + ignore_found } macro_rules! some_or_continue { @@ -164,18 +166,32 @@ fn extract_error_codes_from_tests(f: &str, error_codes: &mut HashMap = HashMap::new(); - super::walk(path, &mut |path| super::filter_dirs(path), &mut |entry, contents| { - let file_name = entry.file_name(); - if file_name == "error_codes.rs" { - extract_error_codes(contents, &mut error_codes, entry.path(), &mut errors); - } else if entry.path().extension() == Some(OsStr::new("stderr")) { - extract_error_codes_from_tests(contents, &mut error_codes); - } - }); + for path in paths { + super::walk(path, &mut |path| super::filter_dirs(path), &mut |entry, contents| { + let file_name = entry.file_name(); + if file_name == "error_codes.rs" { + extract_error_codes(contents, &mut error_codes, entry.path(), &mut errors); + found_explanations += 1; + } else if entry.path().extension() == Some(OsStr::new("stderr")) { + extract_error_codes_from_tests(contents, &mut error_codes); + found_tests += 1; + } + }); + } + if found_explanations == 0 { + eprintln!("No error code explanation was tested!"); + *bad = true; + } + if found_tests == 0 { + eprintln!("No error code was found in compilation errors!"); + *bad = true; + } if errors.is_empty() { println!("Found {} error codes", error_codes.len()); diff --git a/src/tools/tidy/src/main.rs b/src/tools/tidy/src/main.rs index f190a9e57cec..10356a2fdc5f 100644 --- a/src/tools/tidy/src/main.rs +++ b/src/tools/tidy/src/main.rs @@ -65,7 +65,7 @@ fn main() { // Checks that only make sense for the compiler. check!(errors, &compiler_path); - check!(error_codes_check, &src_path); + check!(error_codes_check, &[&src_path, &compiler_path]); // Checks that only make sense for the std libs. check!(pal, &library_path); From fbf1bec48228a5c6c16073319cd4c9a54ec28c9f Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Mon, 8 Mar 2021 15:05:03 +0300 Subject: [PATCH 42/62] resolve/expand: Cache intermediate results of `#[derive]` expansion --- compiler/rustc_builtin_macros/src/derive.rs | 57 ++++++++------ compiler/rustc_expand/src/base.rs | 9 +-- compiler/rustc_expand/src/expand.rs | 2 +- compiler/rustc_resolve/src/lib.rs | 15 +++- compiler/rustc_resolve/src/macros.rs | 87 ++++++++++++--------- 5 files changed, 97 insertions(+), 73 deletions(-) diff --git a/compiler/rustc_builtin_macros/src/derive.rs b/compiler/rustc_builtin_macros/src/derive.rs index 0da2c1c1021f..1bb050a40cee 100644 --- a/compiler/rustc_builtin_macros/src/derive.rs +++ b/compiler/rustc_builtin_macros/src/derive.rs @@ -1,6 +1,6 @@ use crate::cfg_eval::cfg_eval; -use rustc_ast::{self as ast, token, ItemKind, MetaItemKind, NestedMetaItem, StmtKind}; +use rustc_ast::{self as ast, attr, token, ItemKind, MetaItemKind, NestedMetaItem, StmtKind}; use rustc_errors::{struct_span_err, Applicability}; use rustc_expand::base::{Annotatable, ExpandResult, ExtCtxt, Indeterminate, MultiItemModifier}; use rustc_feature::AttributeTemplate; @@ -26,32 +26,39 @@ impl MultiItemModifier for Expander { return ExpandResult::Ready(vec![item]); } - let template = - AttributeTemplate { list: Some("Trait1, Trait2, ..."), ..Default::default() }; - let attr = ecx.attribute(meta_item.clone()); - validate_attr::check_builtin_attribute(&sess.parse_sess, &attr, sym::derive, template); + let result = + ecx.resolver.resolve_derives(ecx.current_expansion.id, ecx.force_mode, &|| { + let template = + AttributeTemplate { list: Some("Trait1, Trait2, ..."), ..Default::default() }; + let attr = attr::mk_attr_outer(meta_item.clone()); + validate_attr::check_builtin_attribute( + &sess.parse_sess, + &attr, + sym::derive, + template, + ); - let derives: Vec<_> = attr - .meta_item_list() - .unwrap_or_default() - .into_iter() - .filter_map(|nested_meta| match nested_meta { - NestedMetaItem::MetaItem(meta) => Some(meta), - NestedMetaItem::Literal(lit) => { - // Reject `#[derive("Debug")]`. - report_unexpected_literal(sess, &lit); - None - } - }) - .map(|meta| { - // Reject `#[derive(Debug = "value", Debug(abc))]`, but recover the paths. - report_path_args(sess, &meta); - meta.path - }) - .collect(); + attr.meta_item_list() + .unwrap_or_default() + .into_iter() + .filter_map(|nested_meta| match nested_meta { + NestedMetaItem::MetaItem(meta) => Some(meta), + NestedMetaItem::Literal(lit) => { + // Reject `#[derive("Debug")]`. + report_unexpected_literal(sess, &lit); + None + } + }) + .map(|meta| { + // Reject `#[derive(Debug = "value", Debug(abc))]`, but recover the paths. + report_path_args(sess, &meta); + meta.path + }) + .map(|path| (path, None)) + .collect() + }); - // FIXME: Try to cache intermediate results to avoid collecting same paths multiple times. - match ecx.resolver.resolve_derives(ecx.current_expansion.id, derives, ecx.force_mode) { + match result { Ok(()) => ExpandResult::Ready(cfg_eval(ecx, item)), Err(Indeterminate) => ExpandResult::Retry(item), } diff --git a/compiler/rustc_expand/src/base.rs b/compiler/rustc_expand/src/base.rs index 594b9a82ad06..a2035ee3c6ec 100644 --- a/compiler/rustc_expand/src/base.rs +++ b/compiler/rustc_expand/src/base.rs @@ -868,6 +868,8 @@ impl SyntaxExtension { /// Error type that denotes indeterminacy. pub struct Indeterminate; +pub type DeriveResolutions = Vec<(ast::Path, Option>)>; + pub trait ResolverExpand { fn next_node_id(&mut self) -> NodeId; @@ -904,15 +906,12 @@ pub trait ResolverExpand { fn resolve_derives( &mut self, expn_id: ExpnId, - derives: Vec, force: bool, + derive_paths: &dyn Fn() -> DeriveResolutions, ) -> Result<(), Indeterminate>; /// Take resolutions for paths inside the `#[derive(...)]` attribute with the given `ExpnId` /// back from resolver. - fn take_derive_resolutions( - &mut self, - expn_id: ExpnId, - ) -> Option, ast::Path)>>; + fn take_derive_resolutions(&mut self, expn_id: ExpnId) -> Option; /// Path resolution logic for `#[cfg_accessible(path)]`. fn cfg_accessible(&mut self, expn_id: ExpnId, path: &ast::Path) -> Result; } diff --git a/compiler/rustc_expand/src/expand.rs b/compiler/rustc_expand/src/expand.rs index 470788a972aa..53e2b4e6accb 100644 --- a/compiler/rustc_expand/src/expand.rs +++ b/compiler/rustc_expand/src/expand.rs @@ -515,7 +515,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> { invocations.reserve(derives.len()); derives .into_iter() - .map(|(_exts, path)| { + .map(|(path, _exts)| { // FIXME: Consider using the derive resolutions (`_exts`) // instead of enqueuing the derives to be resolved again later. let expn_id = ExpnId::fresh(None); diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs index fe5078f26bd9..9488ce14a54e 100644 --- a/compiler/rustc_resolve/src/lib.rs +++ b/compiler/rustc_resolve/src/lib.rs @@ -37,7 +37,7 @@ use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexMap}; use rustc_data_structures::ptr_key::PtrKey; use rustc_data_structures::sync::Lrc; use rustc_errors::{struct_span_err, Applicability, DiagnosticBuilder}; -use rustc_expand::base::{SyntaxExtension, SyntaxExtensionKind}; +use rustc_expand::base::{DeriveResolutions, SyntaxExtension, SyntaxExtensionKind}; use rustc_hir::def::Namespace::*; use rustc_hir::def::{self, CtorOf, DefKind, NonMacroAttrKind, PartialRes}; use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, LocalDefId, CRATE_DEF_INDEX}; @@ -851,6 +851,12 @@ enum BuiltinMacroState { AlreadySeen(Span), } +struct DeriveData { + resolutions: DeriveResolutions, + helper_attrs: Vec, + has_derive_copy: bool, +} + /// The main resolver class. /// /// This is the visitor that walks the whole crate. @@ -973,8 +979,9 @@ pub struct Resolver<'a> { output_macro_rules_scopes: FxHashMap>, /// Helper attributes that are in scope for the given expansion. helper_attrs: FxHashMap>, - /// Resolutions for paths inside the `#[derive(...)]` attribute with the given `ExpnId`. - derive_resolutions: FxHashMap, ast::Path)>>, + /// Ready or in-progress results of resolving paths inside the `#[derive(...)]` attribute + /// with the given `ExpnId`. + derive_data: FxHashMap, /// Avoid duplicated errors for "name already defined". name_already_seen: FxHashMap, @@ -1310,7 +1317,7 @@ impl<'a> Resolver<'a> { invocation_parent_scopes: Default::default(), output_macro_rules_scopes: Default::default(), helper_attrs: Default::default(), - derive_resolutions: Default::default(), + derive_data: Default::default(), local_macro_def_scopes: FxHashMap::default(), name_already_seen: FxHashMap::default(), potentially_unused_imports: Vec::new(), diff --git a/compiler/rustc_resolve/src/macros.rs b/compiler/rustc_resolve/src/macros.rs index d238f65c941a..567a99e4abf5 100644 --- a/compiler/rustc_resolve/src/macros.rs +++ b/compiler/rustc_resolve/src/macros.rs @@ -4,7 +4,7 @@ use crate::imports::ImportResolver; use crate::Namespace::*; use crate::{AmbiguityError, AmbiguityErrorMisc, AmbiguityKind, BuiltinMacroState, Determinacy}; -use crate::{CrateLint, ParentScope, ResolutionError, Resolver, Scope, ScopeSet, Weak}; +use crate::{CrateLint, DeriveData, ParentScope, ResolutionError, Resolver, Scope, ScopeSet, Weak}; use crate::{ModuleKind, ModuleOrUniformRoot, NameBinding, PathResult, Segment, ToNameBinding}; use rustc_ast::{self as ast, Inline, ItemKind, ModKind, NodeId}; use rustc_ast_lowering::ResolverAstLowering; @@ -14,8 +14,8 @@ use rustc_data_structures::fx::FxHashSet; use rustc_data_structures::ptr_key::PtrKey; use rustc_data_structures::sync::Lrc; use rustc_errors::struct_span_err; -use rustc_expand::base::Annotatable; -use rustc_expand::base::{Indeterminate, ResolverExpand, SyntaxExtension, SyntaxExtensionKind}; +use rustc_expand::base::{Annotatable, DeriveResolutions, Indeterminate, ResolverExpand}; +use rustc_expand::base::{SyntaxExtension, SyntaxExtensionKind}; use rustc_expand::compile_declarative_macro; use rustc_expand::expand::{AstFragment, Invocation, InvocationKind, SupportsMacroExpansion}; use rustc_feature::is_builtin_attr_name; @@ -359,8 +359,8 @@ impl<'a> ResolverExpand for Resolver<'a> { fn resolve_derives( &mut self, expn_id: ExpnId, - derives: Vec, force: bool, + derive_paths: &dyn Fn() -> DeriveResolutions, ) -> Result<(), Indeterminate> { // Block expansion of the container until we resolve all derives in it. // This is required for two reasons: @@ -368,49 +368,60 @@ impl<'a> ResolverExpand for Resolver<'a> { // is applied, so they have to be produced by the container's expansion rather // than by individual derives. // - Derives in the container need to know whether one of them is a built-in `Copy`. - // FIXME: Try to cache intermediate results to avoid resolving same derives multiple times. + // Temporarily take the data to avoid borrow checker conflicts. + let mut derive_data = mem::take(&mut self.derive_data); + let entry = derive_data.entry(expn_id).or_insert_with(|| DeriveData { + resolutions: derive_paths(), + helper_attrs: Vec::new(), + has_derive_copy: false, + }); let parent_scope = self.invocation_parent_scopes[&expn_id]; - let mut exts = Vec::new(); - let mut helper_attrs = Vec::new(); - let mut has_derive_copy = false; - for path in derives { - exts.push(( - match self.resolve_macro_path( - &path, - Some(MacroKind::Derive), - &parent_scope, - true, - force, - ) { - Ok((Some(ext), _)) => { - let span = - path.segments.last().unwrap().ident.span.normalize_to_macros_2_0(); - helper_attrs - .extend(ext.helper_attrs.iter().map(|name| Ident::new(*name, span))); - has_derive_copy |= ext.builtin_name == Some(sym::Copy); - ext - } - Ok(_) | Err(Determinacy::Determined) => self.dummy_ext(MacroKind::Derive), - Err(Determinacy::Undetermined) => return Err(Indeterminate), - }, - path, - )) + for (path, opt_ext) in &mut entry.resolutions { + if opt_ext.is_none() { + *opt_ext = Some( + match self.resolve_macro_path( + &path, + Some(MacroKind::Derive), + &parent_scope, + true, + force, + ) { + Ok((Some(ext), _)) => { + if !ext.helper_attrs.is_empty() { + let last_seg = path.segments.last().unwrap(); + let span = last_seg.ident.span.normalize_to_macros_2_0(); + entry.helper_attrs.extend( + ext.helper_attrs.iter().map(|name| Ident::new(*name, span)), + ); + } + entry.has_derive_copy |= ext.builtin_name == Some(sym::Copy); + ext + } + Ok(_) | Err(Determinacy::Determined) => self.dummy_ext(MacroKind::Derive), + Err(Determinacy::Undetermined) => { + assert!(self.derive_data.is_empty()); + self.derive_data = derive_data; + return Err(Indeterminate); + } + }, + ); + } } - self.derive_resolutions.insert(expn_id, exts); - self.helper_attrs.insert(expn_id, helper_attrs); + // If we get to here, then `derive_data` for the given `expn_id` will only be accessed by + // `take_derive_resolutions` later, so we can steal `helper_attrs` instead of cloning them. + self.helper_attrs.insert(expn_id, mem::take(&mut entry.helper_attrs)); // Mark this derive as having `Copy` either if it has `Copy` itself or if its parent derive // has `Copy`, to support cases like `#[derive(Clone, Copy)] #[derive(Debug)]`. - if has_derive_copy || self.has_derive_copy(parent_scope.expansion) { + if entry.has_derive_copy || self.has_derive_copy(parent_scope.expansion) { self.containers_deriving_copy.insert(expn_id); } + assert!(self.derive_data.is_empty()); + self.derive_data = derive_data; Ok(()) } - fn take_derive_resolutions( - &mut self, - expn_id: ExpnId, - ) -> Option, ast::Path)>> { - self.derive_resolutions.remove(&expn_id) + fn take_derive_resolutions(&mut self, expn_id: ExpnId) -> Option { + self.derive_data.remove(&expn_id).map(|data| data.resolutions) } // The function that implements the resolution logic of `#[cfg_accessible(path)]`. From b96584485a43c561d90eb262651ecb87d1d98d2a Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Sun, 4 Apr 2021 17:51:31 +0300 Subject: [PATCH 43/62] resolve: Stable order for derive helper attributes --- compiler/rustc_resolve/src/lib.rs | 2 +- compiler/rustc_resolve/src/macros.rs | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs index 9488ce14a54e..d474e9902110 100644 --- a/compiler/rustc_resolve/src/lib.rs +++ b/compiler/rustc_resolve/src/lib.rs @@ -853,7 +853,7 @@ enum BuiltinMacroState { struct DeriveData { resolutions: DeriveResolutions, - helper_attrs: Vec, + helper_attrs: Vec<(usize, Ident)>, has_derive_copy: bool, } diff --git a/compiler/rustc_resolve/src/macros.rs b/compiler/rustc_resolve/src/macros.rs index 567a99e4abf5..10e27f33c299 100644 --- a/compiler/rustc_resolve/src/macros.rs +++ b/compiler/rustc_resolve/src/macros.rs @@ -376,7 +376,7 @@ impl<'a> ResolverExpand for Resolver<'a> { has_derive_copy: false, }); let parent_scope = self.invocation_parent_scopes[&expn_id]; - for (path, opt_ext) in &mut entry.resolutions { + for (i, (path, opt_ext)) in entry.resolutions.iter_mut().enumerate() { if opt_ext.is_none() { *opt_ext = Some( match self.resolve_macro_path( @@ -391,7 +391,9 @@ impl<'a> ResolverExpand for Resolver<'a> { let last_seg = path.segments.last().unwrap(); let span = last_seg.ident.span.normalize_to_macros_2_0(); entry.helper_attrs.extend( - ext.helper_attrs.iter().map(|name| Ident::new(*name, span)), + ext.helper_attrs + .iter() + .map(|name| (i, Ident::new(*name, span))), ); } entry.has_derive_copy |= ext.builtin_name == Some(sym::Copy); @@ -407,9 +409,10 @@ impl<'a> ResolverExpand for Resolver<'a> { ); } } - // If we get to here, then `derive_data` for the given `expn_id` will only be accessed by - // `take_derive_resolutions` later, so we can steal `helper_attrs` instead of cloning them. - self.helper_attrs.insert(expn_id, mem::take(&mut entry.helper_attrs)); + // Sort helpers in a stable way independent from the derive resolution order. + entry.helper_attrs.sort_by_key(|(i, _)| *i); + self.helper_attrs + .insert(expn_id, entry.helper_attrs.iter().map(|(_, ident)| *ident).collect()); // Mark this derive as having `Copy` either if it has `Copy` itself or if its parent derive // has `Copy`, to support cases like `#[derive(Clone, Copy)] #[derive(Debug)]`. if entry.has_derive_copy || self.has_derive_copy(parent_scope.expansion) { From da66a31572e0f49981d6b958ecdd95397ecf2d3f Mon Sep 17 00:00:00 2001 From: Gus Caplan Date: Wed, 30 Dec 2020 12:52:21 -0600 Subject: [PATCH 44/62] wasm64 --- compiler/rustc_codegen_llvm/src/attributes.rs | 2 +- compiler/rustc_codegen_llvm/src/back/write.rs | 5 +- .../src/debuginfo/metadata.rs | 4 +- compiler/rustc_codegen_ssa/src/back/linker.rs | 2 +- .../rustc_codegen_ssa/src/target_features.rs | 2 +- compiler/rustc_session/src/config.rs | 3 + compiler/rustc_span/src/symbol.rs | 1 + compiler/rustc_symbol_mangling/src/lib.rs | 2 +- compiler/rustc_target/src/abi/call/mod.rs | 2 + compiler/rustc_target/src/abi/call/wasm64.rs | 58 +++++++++++++++++++ compiler/rustc_target/src/spec/mod.rs | 8 ++- .../rustc_target/src/spec/tests/tests_impl.rs | 1 + .../src/spec/wasm32_unknown_emscripten.rs | 4 +- .../src/spec/wasm32_unknown_unknown.rs | 4 +- compiler/rustc_target/src/spec/wasm32_wasi.rs | 4 +- .../src/spec/wasm64_unknown_unknown.rs | 39 +++++++++++++ .../src/spec/{wasm32_base.rs => wasm_base.rs} | 2 + src/doc/rustc/src/platform-support.md | 1 + src/librustdoc/clean/cfg.rs | 3 +- 19 files changed, 129 insertions(+), 18 deletions(-) create mode 100644 compiler/rustc_target/src/abi/call/wasm64.rs create mode 100644 compiler/rustc_target/src/spec/wasm64_unknown_unknown.rs rename compiler/rustc_target/src/spec/{wasm32_base.rs => wasm_base.rs} (99%) diff --git a/compiler/rustc_codegen_llvm/src/attributes.rs b/compiler/rustc_codegen_llvm/src/attributes.rs index 64ebe585dd83..531847c7a0ec 100644 --- a/compiler/rustc_codegen_llvm/src/attributes.rs +++ b/compiler/rustc_codegen_llvm/src/attributes.rs @@ -317,7 +317,7 @@ pub fn from_fn_attrs(cx: &CodegenCx<'ll, 'tcx>, llfn: &'ll Value, instance: ty:: // Note that currently the `wasm-import-module` doesn't do anything, but // eventually LLVM 7 should read this and ferry the appropriate import // module to the output file. - if cx.tcx.sess.target.arch == "wasm32" { + if cx.tcx.sess.target.is_like_wasm { if let Some(module) = wasm_import_module(cx.tcx, instance.def_id()) { llvm::AddFunctionAttrStringValue( llfn, diff --git a/compiler/rustc_codegen_llvm/src/back/write.rs b/compiler/rustc_codegen_llvm/src/back/write.rs index 388dd7ce81b1..b354b97b2d55 100644 --- a/compiler/rustc_codegen_llvm/src/back/write.rs +++ b/compiler/rustc_codegen_llvm/src/back/write.rs @@ -170,10 +170,7 @@ pub fn target_machine_factory( // On the wasm target once the `atomics` feature is enabled that means that // we're no longer single-threaded, or otherwise we don't want LLVM to // lower atomic operations to single-threaded operations. - if singlethread - && sess.target.llvm_target.contains("wasm32") - && sess.target_features.contains(&sym::atomics) - { + if singlethread && sess.target.is_like_wasm && sess.target_features.contains(&sym::atomics) { singlethread = false; } diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs b/compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs index d5b32e58cc39..a6a7f6e0f5b8 100644 --- a/compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs +++ b/compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs @@ -1083,9 +1083,9 @@ pub fn compile_unit_metadata( ); } - // Insert `llvm.ident` metadata on the wasm32 targets since that will + // Insert `llvm.ident` metadata on the wasm targets since that will // get hooked up to the "producer" sections `processed-by` information. - if tcx.sess.opts.target_triple.triple().starts_with("wasm32") { + if tcx.sess.target.is_like_wasm { let name_metadata = llvm::LLVMMDStringInContext( debug_context.llcontext, rustc_producer.as_ptr().cast(), diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs index bb35e7ec8943..911bdad314d4 100644 --- a/compiler/rustc_codegen_ssa/src/back/linker.rs +++ b/compiler/rustc_codegen_ssa/src/back/linker.rs @@ -184,7 +184,7 @@ impl<'a> GccLinker<'a> { // * On OSX they have their own linker, not binutils' // * For WebAssembly the only functional linker is LLD, which doesn't // support hint flags - !self.sess.target.is_like_osx && self.sess.target.arch != "wasm32" + !self.sess.target.is_like_osx && !self.sess.target.is_like_wasm } // Some platforms take hints about whether a library is static or dynamic. diff --git a/compiler/rustc_codegen_ssa/src/target_features.rs b/compiler/rustc_codegen_ssa/src/target_features.rs index fd18f42f2dd4..3254b555ada1 100644 --- a/compiler/rustc_codegen_ssa/src/target_features.rs +++ b/compiler/rustc_codegen_ssa/src/target_features.rs @@ -160,7 +160,7 @@ pub fn supported_target_features(sess: &Session) -> &'static [(&'static str, Opt "mips" | "mips64" => MIPS_ALLOWED_FEATURES, "powerpc" | "powerpc64" => POWERPC_ALLOWED_FEATURES, "riscv32" | "riscv64" => RISCV_ALLOWED_FEATURES, - "wasm32" => WASM_ALLOWED_FEATURES, + "wasm32" | "wasm64" => WASM_ALLOWED_FEATURES, _ => &[], } } diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index 75078a123116..724e32bc495c 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -859,6 +859,9 @@ pub fn default_configuration(sess: &Session) -> CrateConfig { } } ret.insert((sym::target_arch, Some(Symbol::intern(arch)))); + if sess.target.is_like_wasm { + ret.insert((sym::wasm, None)); + } ret.insert((sym::target_endian, Some(Symbol::intern(end.as_str())))); ret.insert((sym::target_pointer_width, Some(Symbol::intern(&wordsz)))); ret.insert((sym::target_env, Some(Symbol::intern(env)))); diff --git a/compiler/rustc_span/src/symbol.rs b/compiler/rustc_span/src/symbol.rs index cd3dabb67950..47b5e90cf9a0 100644 --- a/compiler/rustc_span/src/symbol.rs +++ b/compiler/rustc_span/src/symbol.rs @@ -1291,6 +1291,7 @@ symbols! { vreg, vreg_low16, warn, + wasm, wasm_import_module, wasm_target_feature, while_let, diff --git a/compiler/rustc_symbol_mangling/src/lib.rs b/compiler/rustc_symbol_mangling/src/lib.rs index 3dd7ce93deb9..c050bbc9b9df 100644 --- a/compiler/rustc_symbol_mangling/src/lib.rs +++ b/compiler/rustc_symbol_mangling/src/lib.rs @@ -198,7 +198,7 @@ fn compute_symbol_name( // // [1]: https://bugs.llvm.org/show_bug.cgi?id=44316 if is_foreign - && (tcx.sess.target.arch != "wasm32" + && (!tcx.sess.target.is_like_wasm || !tcx.wasm_import_module_map(def_id.krate).contains_key(&def_id)) { if let Some(name) = attrs.link_name { diff --git a/compiler/rustc_target/src/abi/call/mod.rs b/compiler/rustc_target/src/abi/call/mod.rs index 2c3f7762759b..395235399ea8 100644 --- a/compiler/rustc_target/src/abi/call/mod.rs +++ b/compiler/rustc_target/src/abi/call/mod.rs @@ -20,6 +20,7 @@ mod sparc; mod sparc64; mod wasm32; mod wasm32_bindgen_compat; +mod wasm64; mod x86; mod x86_64; mod x86_win64; @@ -652,6 +653,7 @@ impl<'a, Ty> FnAbi<'a, Ty> { _ => wasm32_bindgen_compat::compute_abi_info(self), }, "asmjs" => wasm32::compute_abi_info(cx, self), + "wasm64" => wasm64::compute_abi_info(cx, self), a => return Err(format!("unrecognized arch \"{}\" in target specification", a)), } diff --git a/compiler/rustc_target/src/abi/call/wasm64.rs b/compiler/rustc_target/src/abi/call/wasm64.rs new file mode 100644 index 000000000000..46d670d16894 --- /dev/null +++ b/compiler/rustc_target/src/abi/call/wasm64.rs @@ -0,0 +1,58 @@ +use crate::abi::call::{ArgAbi, FnAbi, Uniform}; +use crate::abi::{HasDataLayout, LayoutOf, TyAndLayout, TyAndLayoutMethods}; + +fn unwrap_trivial_aggregate<'a, Ty, C>(cx: &C, val: &mut ArgAbi<'a, Ty>) -> bool +where + Ty: TyAndLayoutMethods<'a, C> + Copy, + C: LayoutOf> + HasDataLayout, +{ + if val.layout.is_aggregate() { + if let Some(unit) = val.layout.homogeneous_aggregate(cx).ok().and_then(|ha| ha.unit()) { + let size = val.layout.size; + if unit.size == size { + val.cast_to(Uniform { unit, total: size }); + return true; + } + } + } + false +} + +fn classify_ret<'a, Ty, C>(cx: &C, ret: &mut ArgAbi<'a, Ty>) +where + Ty: TyAndLayoutMethods<'a, C> + Copy, + C: LayoutOf> + HasDataLayout, +{ + ret.extend_integer_width_to(64); + if ret.layout.is_aggregate() && !unwrap_trivial_aggregate(cx, ret) { + ret.make_indirect(); + } +} + +fn classify_arg<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>) +where + Ty: TyAndLayoutMethods<'a, C> + Copy, + C: LayoutOf> + HasDataLayout, +{ + arg.extend_integer_width_to(64); + if arg.layout.is_aggregate() && !unwrap_trivial_aggregate(cx, arg) { + arg.make_indirect_byval(); + } +} + +pub fn compute_abi_info<'a, Ty, C>(cx: &C, fn_abi: &mut FnAbi<'a, Ty>) +where + Ty: TyAndLayoutMethods<'a, C> + Copy, + C: LayoutOf> + HasDataLayout, +{ + if !fn_abi.ret.is_ignore() { + classify_ret(cx, &mut fn_abi.ret); + } + + for arg in &mut fn_abi.args { + if arg.is_ignore() { + continue; + } + classify_arg(cx, arg); + } +} diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index c9fffd213d76..23d86d6874f3 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -78,7 +78,7 @@ mod solaris_base; mod thumb_base; mod uefi_msvc_base; mod vxworks_base; -mod wasm32_base; +mod wasm_base; mod windows_gnu_base; mod windows_msvc_base; mod windows_uwp_gnu_base; @@ -762,6 +762,7 @@ supported_targets! { ("wasm32-unknown-emscripten", wasm32_unknown_emscripten), ("wasm32-unknown-unknown", wasm32_unknown_unknown), ("wasm32-wasi", wasm32_wasi), + ("wasm64-unknown-unknown", wasm64_unknown_unknown), ("thumbv6m-none-eabi", thumbv6m_none_eabi), ("thumbv7m-none-eabi", thumbv7m_none_eabi), @@ -996,6 +997,8 @@ pub struct TargetOptions { pub is_like_emscripten: bool, /// Whether the target toolchain is like Fuchsia's. pub is_like_fuchsia: bool, + /// Whether a target toolchain is like WASM. + pub is_like_wasm: bool, /// Version of DWARF to use if not using the default. /// Useful because some platforms (osx, bsd) only want up to DWARF2. pub dwarf_version: Option, @@ -1204,6 +1207,7 @@ impl Default for TargetOptions { is_like_emscripten: false, is_like_msvc: false, is_like_fuchsia: false, + is_like_wasm: false, dwarf_version: None, linker_is_gnu: false, allows_weak_linkage: true, @@ -1678,6 +1682,7 @@ impl Target { key!(is_like_msvc, bool); key!(is_like_emscripten, bool); key!(is_like_fuchsia, bool); + key!(is_like_wasm, bool); key!(dwarf_version, Option); key!(linker_is_gnu, bool); key!(allows_weak_linkage, bool); @@ -1914,6 +1919,7 @@ impl ToJson for Target { target_option_val!(is_like_msvc); target_option_val!(is_like_emscripten); target_option_val!(is_like_fuchsia); + target_option_val!(is_like_wasm); target_option_val!(dwarf_version); target_option_val!(linker_is_gnu); target_option_val!(allows_weak_linkage); diff --git a/compiler/rustc_target/src/spec/tests/tests_impl.rs b/compiler/rustc_target/src/spec/tests/tests_impl.rs index 9ec8467e0ac4..f4de8bc0a580 100644 --- a/compiler/rustc_target/src/spec/tests/tests_impl.rs +++ b/compiler/rustc_target/src/spec/tests/tests_impl.rs @@ -50,6 +50,7 @@ impl Target { // and you certainly want "unknown" for the OS name. fn can_use_os_unknown(&self) -> bool { self.llvm_target == "wasm32-unknown-unknown" + || self.llvm_target == "wasm64-unknown-unknown" || (self.env == "sgx" && self.vendor == "fortanix") } } diff --git a/compiler/rustc_target/src/spec/wasm32_unknown_emscripten.rs b/compiler/rustc_target/src/spec/wasm32_unknown_emscripten.rs index 9f69ce16c215..dee06753f972 100644 --- a/compiler/rustc_target/src/spec/wasm32_unknown_emscripten.rs +++ b/compiler/rustc_target/src/spec/wasm32_unknown_emscripten.rs @@ -1,8 +1,8 @@ -use super::wasm32_base; +use super::wasm_base; use super::{LinkArgs, LinkerFlavor, PanicStrategy, Target, TargetOptions}; pub fn target() -> Target { - let mut options = wasm32_base::options(); + let mut options = wasm_base::options(); let clang_args = options.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap(); diff --git a/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs b/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs index 5e89ba2520bd..597146275a8c 100644 --- a/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs +++ b/compiler/rustc_target/src/spec/wasm32_unknown_unknown.rs @@ -10,11 +10,11 @@ //! This target is more or less managed by the Rust and WebAssembly Working //! Group nowadays at . -use super::wasm32_base; +use super::wasm_base; use super::{LinkerFlavor, LldFlavor, Target}; pub fn target() -> Target { - let mut options = wasm32_base::options(); + let mut options = wasm_base::options(); options.os = "unknown".to_string(); options.linker_flavor = LinkerFlavor::Lld(LldFlavor::Wasm); let clang_args = options.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap(); diff --git a/compiler/rustc_target/src/spec/wasm32_wasi.rs b/compiler/rustc_target/src/spec/wasm32_wasi.rs index 3f44acdc36b2..a6b12d2ee8f6 100644 --- a/compiler/rustc_target/src/spec/wasm32_wasi.rs +++ b/compiler/rustc_target/src/spec/wasm32_wasi.rs @@ -72,11 +72,11 @@ //! best we can with this target. Don't start relying on too much here unless //! you know what you're getting in to! -use super::wasm32_base; +use super::wasm_base; use super::{crt_objects, LinkerFlavor, LldFlavor, Target}; pub fn target() -> Target { - let mut options = wasm32_base::options(); + let mut options = wasm_base::options(); options.os = "wasi".to_string(); options.linker_flavor = LinkerFlavor::Lld(LldFlavor::Wasm); diff --git a/compiler/rustc_target/src/spec/wasm64_unknown_unknown.rs b/compiler/rustc_target/src/spec/wasm64_unknown_unknown.rs new file mode 100644 index 000000000000..8bfb229d77f6 --- /dev/null +++ b/compiler/rustc_target/src/spec/wasm64_unknown_unknown.rs @@ -0,0 +1,39 @@ +//! A "bare wasm" target representing a WebAssembly output that makes zero +//! assumptions about its environment. +//! +//! The `wasm64-unknown-unknown` target is intended to encapsulate use cases +//! that do not rely on any imported functionality. The binaries generated are +//! entirely self-contained by default when using the standard library. Although +//! the standard library is available, most of it returns an error immediately +//! (e.g. trying to create a TCP stream or something like that). + +use super::wasm_base; +use super::{LinkerFlavor, LldFlavor, Target}; + +pub fn target() -> Target { + let mut options = wasm_base::options(); + options.os = "unknown".to_string(); + options.linker_flavor = LinkerFlavor::Lld(LldFlavor::Wasm); + let clang_args = options.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap(); + + // Make sure clang uses LLD as its linker and is configured appropriately + // otherwise + clang_args.push("--target=wasm64-unknown-unknown".to_string()); + + // For now this target just never has an entry symbol no matter the output + // type, so unconditionally pass this. + clang_args.push("-Wl,--no-entry".to_string()); + options + .pre_link_args + .get_mut(&LinkerFlavor::Lld(LldFlavor::Wasm)) + .unwrap() + .push("--no-entry".to_string()); + + Target { + llvm_target: "wasm64-unknown-unknown".to_string(), + pointer_width: 64, + data_layout: "e-m:e-p:64:64-i64:64-n32:64-S128".to_string(), + arch: "wasm64".to_string(), + options, + } +} diff --git a/compiler/rustc_target/src/spec/wasm32_base.rs b/compiler/rustc_target/src/spec/wasm_base.rs similarity index 99% rename from compiler/rustc_target/src/spec/wasm32_base.rs rename to compiler/rustc_target/src/spec/wasm_base.rs index bfef3d37228f..c93ad24225a5 100644 --- a/compiler/rustc_target/src/spec/wasm32_base.rs +++ b/compiler/rustc_target/src/spec/wasm_base.rs @@ -60,6 +60,8 @@ pub fn options() -> TargetOptions { pre_link_args.insert(LinkerFlavor::Gcc, clang_args); TargetOptions { + is_like_wasm: true, + // we allow dynamic linking, but only cdylibs. Basically we allow a // final library artifact that exports some symbols (a wasm module) but // we don't allow intermediate `dylib` crate types diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md index ee17fcac45c3..f352746d3fbe 100644 --- a/src/doc/rustc/src/platform-support.md +++ b/src/doc/rustc/src/platform-support.md @@ -216,6 +216,7 @@ target | std | host | notes `thumbv7a-uwp-windows-msvc` | ✓ | | `thumbv7neon-unknown-linux-musleabihf` | ? | | Thumb2-mode ARMv7a Linux with NEON, MUSL `thumbv4t-none-eabi` | * | | ARMv4T T32 +`wasm64-unknown-unknown` | * | | WebAssembly `x86_64-apple-ios-macabi` | ✓ | | Apple Catalyst on x86_64 `x86_64-apple-tvos` | * | | x86 64-bit tvOS `x86_64-unknown-none-linuxkernel` | * | | Linux kernel modules diff --git a/src/librustdoc/clean/cfg.rs b/src/librustdoc/clean/cfg.rs index 02adccef594e..e93803e27619 100644 --- a/src/librustdoc/clean/cfg.rs +++ b/src/librustdoc/clean/cfg.rs @@ -487,6 +487,7 @@ impl<'a> fmt::Display for Display<'a> { "windows" => "Windows", _ => "", }, + (sym::wasm, None) => "WebAssembly", (sym::target_arch, Some(arch)) => match &*arch.as_str() { "aarch64" => "AArch64", "arm" => "ARM", @@ -498,7 +499,7 @@ impl<'a> fmt::Display for Display<'a> { "powerpc64" => "PowerPC-64", "s390x" => "s390x", "sparc64" => "SPARC64", - "wasm32" => "WebAssembly", + "wasm32" | "wasm64" => "WebAssembly", "x86" => "x86", "x86_64" => "x86-64", _ => "", From a76de0d0a74ed6212475404bf9c6ce19ac337a6a Mon Sep 17 00:00:00 2001 From: Mark Rousskov Date: Fri, 26 Mar 2021 11:25:48 -0400 Subject: [PATCH 45/62] Bump bootstrap compiler --- src/stage0.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stage0.txt b/src/stage0.txt index 4a53d1a60d17..d86f550db902 100644 --- a/src/stage0.txt +++ b/src/stage0.txt @@ -12,14 +12,14 @@ # stable release's version number. `date` is the date where the release we're # bootstrapping off was released. -date: 2021-02-14 +date: 2021-03-26 rustc: beta # We use a nightly rustfmt to format the source because it solves some # bootstrapping issues with use of new syntax in this repo. If you're looking at # the beta/stable branch, this key should be omitted, as we don't want to depend # on rustfmt from nightly there. -rustfmt: nightly-2021-01-28 +rustfmt: nightly-2021-03-25 # When making a stable release the process currently looks like: # From b577d7ef259c159c8d74333c79a0540b954ba726 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 4 Apr 2021 19:32:54 +0200 Subject: [PATCH 46/62] fix typo Co-authored-by: kennytm --- library/core/src/ptr/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/core/src/ptr/mod.rs b/library/core/src/ptr/mod.rs index bed5e0b89989..12fd4a36bd03 100644 --- a/library/core/src/ptr/mod.rs +++ b/library/core/src/ptr/mod.rs @@ -1545,7 +1545,7 @@ fnptr_impls_args! { A, B, C, D, E, F, G, H, I, J, K, L } /// assert_eq!(unsafe { raw_f2.read_unaligned() }, 2); /// ``` /// -/// See [`addr_of_mut`] for how to create a pointer to ininitialized data. +/// See [`addr_of_mut`] for how to create a pointer to unininitialized data. /// Doing that with `addr_of` would not make much sense since one could only /// read the data, and that would be Undefined Behavior. #[stable(feature = "raw_ref_macros", since = "1.51.0")] From ed0d8fa3e8c061fdd22fb95f6cfadbada864118d Mon Sep 17 00:00:00 2001 From: AngelicosPhosphoros Date: Sat, 3 Apr 2021 20:58:15 +0300 Subject: [PATCH 47/62] Optimize PartialOrd le Closes https://github.com/rust-lang/rust/issues/73338 This change stops default implementation of `le()` method from generating jumps. --- library/core/src/cmp.rs | 3 +- src/test/codegen/issue-73338-effecient-cmp.rs | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/test/codegen/issue-73338-effecient-cmp.rs diff --git a/library/core/src/cmp.rs b/library/core/src/cmp.rs index 5bab1fb93dbb..adb033e6bdf1 100644 --- a/library/core/src/cmp.rs +++ b/library/core/src/cmp.rs @@ -981,7 +981,8 @@ pub trait PartialOrd: PartialEq { #[must_use] #[stable(feature = "rust1", since = "1.0.0")] fn le(&self, other: &Rhs) -> bool { - matches!(self.partial_cmp(other), Some(Less | Equal)) + // Pattern `Some(Less | Eq)` optimizes worse than negating `None | Some(Greater)`. + !matches!(self.partial_cmp(other), None | Some(Greater)) } /// This method tests greater than (for `self` and `other`) and is used by the `>` operator. diff --git a/src/test/codegen/issue-73338-effecient-cmp.rs b/src/test/codegen/issue-73338-effecient-cmp.rs new file mode 100644 index 000000000000..85c2bbfd040b --- /dev/null +++ b/src/test/codegen/issue-73338-effecient-cmp.rs @@ -0,0 +1,39 @@ +// This test checks that comparison operation +// generated by #[derive(PartialOrd)] +// doesn't contain jumps for C enums + +// compile-flags: -Copt-level=3 + +#![crate_type="lib"] + +#[repr(u32)] +#[derive(Copy, Clone, Eq, PartialEq, PartialOrd)] +pub enum Foo { + Zero, + One, + Two, +} + +#[no_mangle] +pub fn compare_less(a: Foo, b: Foo)->bool{ + // CHECK-NOT: br {{.*}} + a < b +} + +#[no_mangle] +pub fn compare_le(a: Foo, b: Foo)->bool{ + // CHECK-NOT: br {{.*}} + a <= b +} + +#[no_mangle] +pub fn compare_ge(a: Foo, b: Foo)->bool{ + // CHECK-NOT: br {{.*}} + a >= b +} + +#[no_mangle] +pub fn compare_greater(a: Foo, b: Foo)->bool{ + // CHECK-NOT: br {{.*}} + a > b +} From 37498a19dedb4105f8800a7cc2473803fd4bbccf Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Sun, 4 Apr 2021 11:55:13 -0700 Subject: [PATCH 48/62] Use `#[inline(always)]` on trivial UnsafeCell methods UnsafeCell is the standard building block for shared mutable data structures. UnsafeCell should add zero overhead compared to using raw pointers directly. Some reports suggest that debug builds, or even builds at opt-level 1, may not always be inlining its methods. Mark the methods as `#[inline(always)]`, since once inlined the methods should result in no actual code other than field accesses. --- library/core/src/cell.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/library/core/src/cell.rs b/library/core/src/cell.rs index 9a2908c275da..4820588df25c 100644 --- a/library/core/src/cell.rs +++ b/library/core/src/cell.rs @@ -1815,7 +1815,7 @@ impl UnsafeCell { /// ``` #[stable(feature = "rust1", since = "1.0.0")] #[rustc_const_stable(feature = "const_unsafe_cell_new", since = "1.32.0")] - #[inline] + #[inline(always)] pub const fn new(value: T) -> UnsafeCell { UnsafeCell { value } } @@ -1831,7 +1831,7 @@ impl UnsafeCell { /// /// let five = uc.into_inner(); /// ``` - #[inline] + #[inline(always)] #[stable(feature = "rust1", since = "1.0.0")] #[rustc_const_unstable(feature = "const_cell_into_inner", issue = "78729")] pub const fn into_inner(self) -> T { @@ -1856,7 +1856,7 @@ impl UnsafeCell { /// /// let five = uc.get(); /// ``` - #[inline] + #[inline(always)] #[stable(feature = "rust1", since = "1.0.0")] #[rustc_const_stable(feature = "const_unsafecell_get", since = "1.32.0")] pub const fn get(&self) -> *mut T { @@ -1881,7 +1881,7 @@ impl UnsafeCell { /// /// assert_eq!(*c.get_mut(), 6); /// ``` - #[inline] + #[inline(always)] #[stable(feature = "unsafe_cell_get_mut", since = "1.50.0")] pub fn get_mut(&mut self) -> &mut T { &mut self.value @@ -1914,7 +1914,7 @@ impl UnsafeCell { /// /// assert_eq!(uc.into_inner(), 5); /// ``` - #[inline] + #[inline(always)] #[unstable(feature = "unsafe_cell_raw_get", issue = "66358")] pub const fn raw_get(this: *const Self) -> *mut T { // We can just cast the pointer from `UnsafeCell` to `T` because of From b3a4f91b8d16f65e3220f14fc7867fed0cc7d1e7 Mon Sep 17 00:00:00 2001 From: Mark Rousskov Date: Fri, 26 Mar 2021 16:10:21 -0400 Subject: [PATCH 49/62] Bump cfgs --- compiler/rustc_error_codes/src/lib.rs | 3 +- library/alloc/src/lib.rs | 4 +-- library/core/src/hash/mod.rs | 52 ++++----------------------- library/core/src/lib.rs | 6 ++-- library/core/src/macros/mod.rs | 2 -- library/core/src/ops/deref.rs | 2 +- library/core/src/prelude/v1.rs | 2 -- library/core/src/ptr/const_ptr.rs | 8 ----- library/core/src/ptr/mod.rs | 45 ----------------------- library/core/src/ptr/mut_ptr.rs | 8 ----- library/core/src/ptr/non_null.rs | 2 -- library/core/src/slice/mod.rs | 26 +++++--------- library/core/tests/lib.rs | 5 ++- library/core/tests/ptr.rs | 7 ---- library/std/src/lib.rs | 3 +- library/std/src/prelude/v1.rs | 2 -- src/bootstrap/builder.rs | 14 ++------ src/tools/linkchecker/main.rs | 2 -- src/tools/tidy/src/lib.rs | 2 -- 19 files changed, 24 insertions(+), 171 deletions(-) diff --git a/compiler/rustc_error_codes/src/lib.rs b/compiler/rustc_error_codes/src/lib.rs index 14ddb3e20793..f2432f616535 100644 --- a/compiler/rustc_error_codes/src/lib.rs +++ b/compiler/rustc_error_codes/src/lib.rs @@ -1,5 +1,4 @@ -#![cfg_attr(bootstrap, deny(invalid_codeblock_attributes))] -#![cfg_attr(not(bootstrap), deny(rustdoc::invalid_codeblock_attributes))] +#![deny(rustdoc::invalid_codeblock_attributes)] //! This library is used to gather all error codes into one place, //! the goal being to make their maintenance easier. diff --git a/library/alloc/src/lib.rs b/library/alloc/src/lib.rs index fb243100990b..14cb1d3b405c 100644 --- a/library/alloc/src/lib.rs +++ b/library/alloc/src/lib.rs @@ -133,7 +133,6 @@ #![feature(trusted_len)] #![feature(unboxed_closures)] #![feature(unicode_internals)] -#![cfg_attr(bootstrap, feature(unsafe_block_in_unsafe_fn))] #![feature(unsize)] #![feature(unsized_fn_params)] #![feature(allocator_internals)] @@ -142,8 +141,7 @@ #![feature(alloc_layout_extra)] #![feature(trusted_random_access)] #![feature(try_trait)] -#![cfg_attr(bootstrap, feature(type_alias_impl_trait))] -#![cfg_attr(not(bootstrap), feature(min_type_alias_impl_trait))] +#![feature(min_type_alias_impl_trait)] #![feature(associated_type_bounds)] #![feature(slice_group_by)] #![feature(decl_macro)] diff --git a/library/core/src/hash/mod.rs b/library/core/src/hash/mod.rs index 7bfa58d34edf..0c3303cc2109 100644 --- a/library/core/src/hash/mod.rs +++ b/library/core/src/hash/mod.rs @@ -691,29 +691,9 @@ mod impls { impl Hash for *const T { #[inline] fn hash(&self, state: &mut H) { - #[cfg(not(bootstrap))] - { - let (address, metadata) = self.to_raw_parts(); - state.write_usize(address as usize); - metadata.hash(state); - } - #[cfg(bootstrap)] - { - if mem::size_of::() == mem::size_of::() { - // Thin pointer - state.write_usize(*self as *const () as usize); - } else { - // Fat pointer - // SAFETY: we are accessing the memory occupied by `self` - // which is guaranteed to be valid. - // This assumes a fat pointer can be represented by a `(usize, usize)`, - // which is safe to do in `std` because it is shipped and kept in sync - // with the implementation of fat pointers in `rustc`. - let (a, b) = unsafe { *(self as *const Self as *const (usize, usize)) }; - state.write_usize(a); - state.write_usize(b); - } - } + let (address, metadata) = self.to_raw_parts(); + state.write_usize(address as usize); + metadata.hash(state); } } @@ -721,29 +701,9 @@ mod impls { impl Hash for *mut T { #[inline] fn hash(&self, state: &mut H) { - #[cfg(not(bootstrap))] - { - let (address, metadata) = self.to_raw_parts(); - state.write_usize(address as usize); - metadata.hash(state); - } - #[cfg(bootstrap)] - { - if mem::size_of::() == mem::size_of::() { - // Thin pointer - state.write_usize(*self as *const () as usize); - } else { - // Fat pointer - // SAFETY: we are accessing the memory occupied by `self` - // which is guaranteed to be valid. - // This assumes a fat pointer can be represented by a `(usize, usize)`, - // which is safe to do in `std` because it is shipped and kept in sync - // with the implementation of fat pointers in `rustc`. - let (a, b) = unsafe { *(self as *const Self as *const (usize, usize)) }; - state.write_usize(a); - state.write_usize(b); - } - } + let (address, metadata) = self.to_raw_parts(); + state.write_usize(address as usize); + metadata.hash(state); } } } diff --git a/library/core/src/lib.rs b/library/core/src/lib.rs index 158b1e152ad4..013e98a86609 100644 --- a/library/core/src/lib.rs +++ b/library/core/src/lib.rs @@ -129,7 +129,7 @@ #![feature(auto_traits)] #![cfg_attr(bootstrap, feature(or_patterns))] #![feature(prelude_import)] -#![cfg_attr(not(bootstrap), feature(ptr_metadata))] +#![feature(ptr_metadata)] #![feature(repr_simd, platform_intrinsics)] #![feature(rustc_attrs)] #![feature(simd_ffi)] @@ -167,7 +167,6 @@ #![feature(slice_ptr_get)] #![feature(no_niche)] // rust-lang/rust#68303 #![feature(int_error_matching)] -#![cfg_attr(bootstrap, feature(unsafe_block_in_unsafe_fn))] #![deny(unsafe_op_in_unsafe_fn)] #[prelude_import] @@ -299,8 +298,7 @@ pub mod primitive; unused_imports, unsafe_op_in_unsafe_fn )] -#[cfg_attr(bootstrap, allow(non_autolinks))] -#[cfg_attr(not(bootstrap), allow(rustdoc::non_autolinks))] +#[allow(rustdoc::non_autolinks)] // FIXME: This annotation should be moved into rust-lang/stdarch after clashing_extern_declarations is // merged. It currently cannot because bootstrap fails as the lint hasn't been defined yet. #[allow(clashing_extern_declarations)] diff --git a/library/core/src/macros/mod.rs b/library/core/src/macros/mod.rs index 99894b5605e6..5d9b0f80d3a6 100644 --- a/library/core/src/macros/mod.rs +++ b/library/core/src/macros/mod.rs @@ -1391,7 +1391,6 @@ pub(crate) mod builtin { } /// Attribute macro used to apply derive macros. - #[cfg(not(bootstrap))] #[stable(feature = "rust1", since = "1.0.0")] #[rustc_builtin_macro] pub macro derive($item:item) { @@ -1453,7 +1452,6 @@ pub(crate) mod builtin { } /// Expands all `#[cfg]` and `#[cfg_attr]` attributes in the code fragment it's applied to. - #[cfg(not(bootstrap))] #[unstable( feature = "cfg_eval", issue = "82679", diff --git a/library/core/src/ops/deref.rs b/library/core/src/ops/deref.rs index 10e3ce67448c..dcf3ce070ec6 100644 --- a/library/core/src/ops/deref.rs +++ b/library/core/src/ops/deref.rs @@ -65,7 +65,7 @@ pub trait Deref { /// The resulting type after dereferencing. #[stable(feature = "rust1", since = "1.0.0")] #[rustc_diagnostic_item = "deref_target"] - #[cfg_attr(not(bootstrap), lang = "deref_target")] + #[lang = "deref_target"] type Target: ?Sized; /// Dereferences the value. diff --git a/library/core/src/prelude/v1.rs b/library/core/src/prelude/v1.rs index 7d33ca8bb698..c89fe57cb05c 100644 --- a/library/core/src/prelude/v1.rs +++ b/library/core/src/prelude/v1.rs @@ -67,7 +67,6 @@ pub use crate::macros::builtin::{ bench, global_allocator, test, test_case, RustcDecodable, RustcEncodable, }; -#[cfg(not(bootstrap))] #[stable(feature = "builtin_macro_prelude", since = "1.38.0")] #[doc(no_inline)] pub use crate::macros::builtin::derive; @@ -80,7 +79,6 @@ pub use crate::macros::builtin::derive; #[doc(no_inline)] pub use crate::macros::builtin::cfg_accessible; -#[cfg(not(bootstrap))] #[unstable( feature = "cfg_eval", issue = "82679", diff --git a/library/core/src/ptr/const_ptr.rs b/library/core/src/ptr/const_ptr.rs index 25b8f435accf..f18387d020d4 100644 --- a/library/core/src/ptr/const_ptr.rs +++ b/library/core/src/ptr/const_ptr.rs @@ -51,7 +51,6 @@ impl *const T { /// Decompose a (possibly wide) pointer into is address and metadata components. /// /// The pointer can be later reconstructed with [`from_raw_parts`]. - #[cfg(not(bootstrap))] #[unstable(feature = "ptr_metadata", issue = "81513")] #[rustc_const_unstable(feature = "ptr_metadata", issue = "81513")] #[inline] @@ -915,13 +914,6 @@ impl *const [T] { #[unstable(feature = "slice_ptr_len", issue = "71146")] #[rustc_const_unstable(feature = "const_slice_ptr_len", issue = "71146")] pub const fn len(self) -> usize { - #[cfg(bootstrap)] - { - // SAFETY: this is safe because `*const [T]` and `FatPtr` have the same layout. - // Only `std` can make this guarantee. - unsafe { Repr { rust: self }.raw }.len - } - #[cfg(not(bootstrap))] metadata(self) } diff --git a/library/core/src/ptr/mod.rs b/library/core/src/ptr/mod.rs index 6412bd41a8c0..526601160262 100644 --- a/library/core/src/ptr/mod.rs +++ b/library/core/src/ptr/mod.rs @@ -90,11 +90,8 @@ pub use crate::intrinsics::copy; #[doc(inline)] pub use crate::intrinsics::write_bytes; -#[cfg(not(bootstrap))] mod metadata; -#[cfg(not(bootstrap))] pub(crate) use metadata::PtrRepr; -#[cfg(not(bootstrap))] #[unstable(feature = "ptr_metadata", issue = "81513")] pub use metadata::{from_raw_parts, from_raw_parts_mut, metadata, DynMetadata, Pointee, Thin}; @@ -236,33 +233,6 @@ pub const fn null_mut() -> *mut T { 0 as *mut T } -#[cfg(bootstrap)] -#[repr(C)] -pub(crate) union Repr { - pub(crate) rust: *const [T], - rust_mut: *mut [T], - pub(crate) raw: FatPtr, -} - -#[cfg(bootstrap)] -#[repr(C)] -pub(crate) struct FatPtr { - data: *const T, - pub(crate) len: usize, -} - -#[cfg(bootstrap)] -// Manual impl needed to avoid `T: Clone` bound. -impl Clone for FatPtr { - fn clone(&self) -> Self { - *self - } -} - -#[cfg(bootstrap)] -// Manual impl needed to avoid `T: Copy` bound. -impl Copy for FatPtr {} - /// Forms a raw slice from a pointer and a length. /// /// The `len` argument is the number of **elements**, not the number of bytes. @@ -287,14 +257,6 @@ impl Copy for FatPtr {} #[stable(feature = "slice_from_raw_parts", since = "1.42.0")] #[rustc_const_unstable(feature = "const_slice_from_raw_parts", issue = "67456")] pub const fn slice_from_raw_parts(data: *const T, len: usize) -> *const [T] { - #[cfg(bootstrap)] - { - // SAFETY: Accessing the value from the `Repr` union is safe since *const [T] - // and FatPtr have the same memory layouts. Only std can make this - // guarantee. - unsafe { Repr { raw: FatPtr { data, len } }.rust } - } - #[cfg(not(bootstrap))] from_raw_parts(data.cast(), len) } @@ -327,13 +289,6 @@ pub const fn slice_from_raw_parts(data: *const T, len: usize) -> *const [T] { #[stable(feature = "slice_from_raw_parts", since = "1.42.0")] #[rustc_const_unstable(feature = "const_slice_from_raw_parts", issue = "67456")] pub const fn slice_from_raw_parts_mut(data: *mut T, len: usize) -> *mut [T] { - #[cfg(bootstrap)] - { - // SAFETY: Accessing the value from the `Repr` union is safe since *mut [T] - // and FatPtr have the same memory layouts - unsafe { Repr { raw: FatPtr { data, len } }.rust_mut } - } - #[cfg(not(bootstrap))] from_raw_parts_mut(data.cast(), len) } diff --git a/library/core/src/ptr/mut_ptr.rs b/library/core/src/ptr/mut_ptr.rs index 732e1273b4be..3c6f19782833 100644 --- a/library/core/src/ptr/mut_ptr.rs +++ b/library/core/src/ptr/mut_ptr.rs @@ -50,7 +50,6 @@ impl *mut T { /// Decompose a (possibly wide) pointer into is address and metadata components. /// /// The pointer can be later reconstructed with [`from_raw_parts_mut`]. - #[cfg(not(bootstrap))] #[unstable(feature = "ptr_metadata", issue = "81513")] #[rustc_const_unstable(feature = "ptr_metadata", issue = "81513")] #[inline] @@ -1175,13 +1174,6 @@ impl *mut [T] { #[unstable(feature = "slice_ptr_len", issue = "71146")] #[rustc_const_unstable(feature = "const_slice_ptr_len", issue = "71146")] pub const fn len(self) -> usize { - #[cfg(bootstrap)] - { - // SAFETY: this is safe because `*const [T]` and `FatPtr` have the same layout. - // Only `std` can make this guarantee. - unsafe { Repr { rust_mut: self }.raw }.len - } - #[cfg(not(bootstrap))] metadata(self) } diff --git a/library/core/src/ptr/non_null.rs b/library/core/src/ptr/non_null.rs index 83b88ffd9169..e525f6160438 100644 --- a/library/core/src/ptr/non_null.rs +++ b/library/core/src/ptr/non_null.rs @@ -181,7 +181,6 @@ impl NonNull { /// See the documentation of [`std::ptr::from_raw_parts`] for more details. /// /// [`std::ptr::from_raw_parts`]: crate::ptr::from_raw_parts - #[cfg(not(bootstrap))] #[unstable(feature = "ptr_metadata", issue = "81513")] #[rustc_const_unstable(feature = "ptr_metadata", issue = "81513")] #[inline] @@ -198,7 +197,6 @@ impl NonNull { /// Decompose a (possibly wide) pointer into is address and metadata components. /// /// The pointer can be later reconstructed with [`NonNull::from_raw_parts`]. - #[cfg(not(bootstrap))] #[unstable(feature = "ptr_metadata", issue = "81513")] #[rustc_const_unstable(feature = "ptr_metadata", issue = "81513")] #[inline] diff --git a/library/core/src/slice/mod.rs b/library/core/src/slice/mod.rs index e4b1bffcfe01..ec28cdd1ba0d 100644 --- a/library/core/src/slice/mod.rs +++ b/library/core/src/slice/mod.rs @@ -102,23 +102,14 @@ impl [T] { // SAFETY: const sound because we transmute out the length field as a usize (which it must be) #[rustc_allow_const_fn_unstable(const_fn_union)] pub const fn len(&self) -> usize { - #[cfg(bootstrap)] - { - // SAFETY: this is safe because `&[T]` and `FatPtr` have the same layout. - // Only `std` can make this guarantee. - unsafe { crate::ptr::Repr { rust: self }.raw.len } - } - #[cfg(not(bootstrap))] - { - // FIXME: Replace with `crate::ptr::metadata(self)` when that is const-stable. - // As of this writing this causes a "Const-stable functions can only call other - // const-stable functions" error. + // FIXME: Replace with `crate::ptr::metadata(self)` when that is const-stable. + // As of this writing this causes a "Const-stable functions can only call other + // const-stable functions" error. - // SAFETY: Accessing the value from the `PtrRepr` union is safe since *const T - // and PtrComponents have the same memory layouts. Only std can make this - // guarantee. - unsafe { crate::ptr::PtrRepr { const_ptr: self }.components.metadata } - } + // SAFETY: Accessing the value from the `PtrRepr` union is safe since *const T + // and PtrComponents have the same memory layouts. Only std can make this + // guarantee. + unsafe { crate::ptr::PtrRepr { const_ptr: self }.components.metadata } } /// Returns `true` if the slice has a length of 0. @@ -2265,8 +2256,7 @@ impl [T] { // in crate `alloc`, and as such doesn't exists yet when building `core`. // links to downstream crate: #74481. Since primitives are only documented in // libstd (#73423), this never leads to broken links in practice. - #[cfg_attr(not(bootstrap), allow(rustdoc::broken_intra_doc_links))] - #[cfg_attr(bootstrap, allow(broken_intra_doc_links))] + #[allow(rustdoc::broken_intra_doc_links)] #[stable(feature = "slice_binary_search_by_key", since = "1.10.0")] #[inline] pub fn binary_search_by_key<'a, B, F>(&'a self, b: &B, mut f: F) -> Result diff --git a/library/core/tests/lib.rs b/library/core/tests/lib.rs index 997e618cc511..1d885eb1092d 100644 --- a/library/core/tests/lib.rs +++ b/library/core/tests/lib.rs @@ -68,7 +68,7 @@ #![feature(option_result_unwrap_unchecked)] #![feature(result_into_ok_or_err)] #![feature(peekable_peek_mut)] -#![cfg_attr(not(bootstrap), feature(ptr_metadata))] +#![feature(ptr_metadata)] #![feature(once_cell)] #![feature(unsized_tuple_coercion)] #![feature(nonzero_leading_trailing_zeros)] @@ -76,8 +76,7 @@ #![feature(integer_atomics)] #![feature(slice_group_by)] #![feature(trusted_random_access)] -#![cfg_attr(bootstrap, feature(unsafe_block_in_unsafe_fn))] -#![cfg_attr(not(bootstrap), feature(unsize))] +#![feature(unsize)] #![deny(unsafe_op_in_unsafe_fn)] extern crate test; diff --git a/library/core/tests/ptr.rs b/library/core/tests/ptr.rs index 224a58e3ccdb..11af8090c3a4 100644 --- a/library/core/tests/ptr.rs +++ b/library/core/tests/ptr.rs @@ -1,8 +1,6 @@ use core::cell::RefCell; -#[cfg(not(bootstrap))] use core::ptr; use core::ptr::*; -#[cfg(not(bootstrap))] use std::fmt::{Debug, Display}; #[test] @@ -419,7 +417,6 @@ fn offset_from() { } #[test] -#[cfg(not(bootstrap))] fn ptr_metadata() { struct Unit; struct Pair(A, B); @@ -478,7 +475,6 @@ fn ptr_metadata() { } #[test] -#[cfg(not(bootstrap))] fn ptr_metadata_bounds() { fn metadata_eq_method_address() -> usize { // The `Metadata` associated type has an `Ord` bound, so this is valid: @@ -510,7 +506,6 @@ fn ptr_metadata_bounds() { } #[test] -#[cfg(not(bootstrap))] fn dyn_metadata() { #[derive(Debug)] #[repr(align(32))] @@ -530,7 +525,6 @@ fn dyn_metadata() { } #[test] -#[cfg(not(bootstrap))] fn from_raw_parts() { let mut value = 5_u32; let address = &mut value as *mut _ as *mut (); @@ -557,7 +551,6 @@ fn from_raw_parts() { } #[test] -#[cfg(not(bootstrap))] fn thin_box() { let foo = ThinBox::::new(4); assert_eq!(foo.to_string(), "4"); diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs index 6ab68100b1d6..c983022746c6 100644 --- a/library/std/src/lib.rs +++ b/library/std/src/lib.rs @@ -234,7 +234,7 @@ #![feature(box_syntax)] #![feature(c_variadic)] #![feature(cfg_accessible)] -#![cfg_attr(not(bootstrap), feature(cfg_eval))] +#![feature(cfg_eval)] #![feature(cfg_target_has_atomic)] #![feature(cfg_target_thread_local)] #![feature(char_error_internals)] @@ -331,7 +331,6 @@ #![feature(try_blocks)] #![feature(try_reserve)] #![feature(unboxed_closures)] -#![cfg_attr(bootstrap, feature(unsafe_block_in_unsafe_fn))] #![feature(unsafe_cell_raw_get)] #![feature(unwind_attributes)] #![feature(vec_into_raw_parts)] diff --git a/library/std/src/prelude/v1.rs b/library/std/src/prelude/v1.rs index c5b871edbf25..4a3c3ba16359 100644 --- a/library/std/src/prelude/v1.rs +++ b/library/std/src/prelude/v1.rs @@ -54,7 +54,6 @@ pub use core::prelude::v1::{ bench, global_allocator, test, test_case, RustcDecodable, RustcEncodable, }; -#[cfg(not(bootstrap))] #[stable(feature = "builtin_macro_prelude", since = "1.38.0")] #[doc(hidden)] pub use core::prelude::v1::derive; @@ -67,7 +66,6 @@ pub use core::prelude::v1::derive; #[doc(hidden)] pub use core::prelude::v1::cfg_accessible; -#[cfg(not(bootstrap))] #[unstable( feature = "cfg_eval", issue = "82679", diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 86f594955041..38901a35296e 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -741,12 +741,7 @@ impl<'a> Builder<'a> { .env("RUSTDOC_REAL", self.rustdoc(compiler)) .env("RUSTC_BOOTSTRAP", "1"); - // cfg(bootstrap), can be removed on the next beta bump - if compiler.stage == 0 { - cmd.arg("-Winvalid_codeblock_attributes"); - } else { - cmd.arg("-Wrustdoc::invalid_codeblock_attributes"); - } + cmd.arg("-Wrustdoc::invalid_codeblock_attributes"); if self.config.deny_warnings { cmd.arg("-Dwarnings"); @@ -1303,12 +1298,7 @@ impl<'a> Builder<'a> { // fixed via better support from Cargo. cargo.env("RUSTC_LINT_FLAGS", lint_flags.join(" ")); - // cfg(bootstrap), can be removed on the next beta bump - if compiler.stage == 0 { - rustdocflags.arg("-Winvalid_codeblock_attributes"); - } else { - rustdocflags.arg("-Wrustdoc::invalid_codeblock_attributes"); - } + rustdocflags.arg("-Wrustdoc::invalid_codeblock_attributes"); } if mode == Mode::Rustc { diff --git a/src/tools/linkchecker/main.rs b/src/tools/linkchecker/main.rs index f6875e0036f6..c677d04917ea 100644 --- a/src/tools/linkchecker/main.rs +++ b/src/tools/linkchecker/main.rs @@ -14,8 +14,6 @@ //! A few exceptions are allowed as there's known bugs in rustdoc, but this //! should catch the majority of "broken link" cases. -#![cfg_attr(bootstrap, feature(str_split_once))] - use std::collections::hash_map::Entry; use std::collections::{HashMap, HashSet}; use std::env; diff --git a/src/tools/tidy/src/lib.rs b/src/tools/tidy/src/lib.rs index 11d36751f67b..cbcc01dc39a6 100644 --- a/src/tools/tidy/src/lib.rs +++ b/src/tools/tidy/src/lib.rs @@ -3,8 +3,6 @@ //! This library contains the tidy lints and exposes it //! to be used by tools. -#![cfg_attr(bootstrap, feature(str_split_once))] - use std::fs::File; use std::io::Read; use walkdir::{DirEntry, WalkDir}; From f06efd2a24761b3f2b73d9888a8f945de5ec26e4 Mon Sep 17 00:00:00 2001 From: Mark Rousskov Date: Sun, 4 Apr 2021 14:51:22 -0400 Subject: [PATCH 50/62] Workaround increased cache clearing in Cargo 1.52 Cargo adds rust-lang/cargo#8640 which means that cargo will try to purge the doc directory caches for us. In theory this may mean that we can jettison the clear_if_dirty for rustdoc versioning entirely, but for now just workaround the effects of this change in a less principled but more local way. --- src/bootstrap/doc.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/bootstrap/doc.rs b/src/bootstrap/doc.rs index 1168d54b55e5..fc79fc10fb4c 100644 --- a/src/bootstrap/doc.rs +++ b/src/bootstrap/doc.rs @@ -461,7 +461,16 @@ impl Step for Std { // create correct links between crates because rustdoc depends on the // existence of the output directories to know if it should be a local // or remote link. - let krates = ["core", "alloc", "std", "proc_macro", "test"]; + // + // There's also a mild hack here where we build the first crate in this + // list, core, twice. This is currently necessary to make sure that + // cargo's cached rustc/rustdoc versions are up to date which means + // cargo won't delete the out_dir we create for the stampfile. + // Essentially any crate could go into the first slot here as it's + // output directory will be deleted by us (as cargo will purge the stamp + // file during the first slot's run), and core is relatively fast to + // build so works OK to fill this 'dummy' slot. + let krates = ["core", "core", "alloc", "std", "proc_macro", "test"]; for krate in &krates { run_cargo_rustdoc_for(krate); } From 3c3d3ddde967f66938966d6d557a3a4fe4d267ff Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Thu, 11 Mar 2021 14:39:37 +0200 Subject: [PATCH 51/62] core: rearrange `ptr::swap_nonoverlapping_one`'s cases (no functional changes). --- library/core/src/ptr/mod.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/library/core/src/ptr/mod.rs b/library/core/src/ptr/mod.rs index 6412bd41a8c0..15aa47696976 100644 --- a/library/core/src/ptr/mod.rs +++ b/library/core/src/ptr/mod.rs @@ -473,19 +473,21 @@ pub const unsafe fn swap_nonoverlapping(x: *mut T, y: *mut T, count: usize) { #[inline] #[rustc_const_unstable(feature = "const_swap", issue = "83163")] pub(crate) const unsafe fn swap_nonoverlapping_one(x: *mut T, y: *mut T) { - // For types smaller than the block optimization below, - // just swap directly to avoid pessimizing codegen. - if mem::size_of::() < 32 { - // SAFETY: the caller must guarantee that `x` and `y` are valid - // for writes, properly aligned, and non-overlapping. - unsafe { - let z = read(x); - copy_nonoverlapping(y, x, 1); - write(y, z); - } - } else { + // Only apply the block optimization in `swap_nonoverlapping_bytes` for types + // at least as large as the block size, to avoid pessimizing codegen. + if mem::size_of::() >= 32 { // SAFETY: the caller must uphold the safety contract for `swap_nonoverlapping`. unsafe { swap_nonoverlapping(x, y, 1) }; + return; + } + + // Direct swapping, for the cases not going through the block optimization. + // SAFETY: the caller must guarantee that `x` and `y` are valid + // for writes, properly aligned, and non-overlapping. + unsafe { + let z = read(x); + copy_nonoverlapping(y, x, 1); + write(y, z); } } From bc6af97ed0088304a2430b74b47c182c65ce0b9f Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Thu, 11 Mar 2021 16:33:34 +0200 Subject: [PATCH 52/62] core: disable `ptr::swap_nonoverlapping_one`'s block optimization on SPIR-V. --- library/core/src/ptr/mod.rs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/library/core/src/ptr/mod.rs b/library/core/src/ptr/mod.rs index 15aa47696976..f673a6fd178f 100644 --- a/library/core/src/ptr/mod.rs +++ b/library/core/src/ptr/mod.rs @@ -473,12 +473,23 @@ pub const unsafe fn swap_nonoverlapping(x: *mut T, y: *mut T, count: usize) { #[inline] #[rustc_const_unstable(feature = "const_swap", issue = "83163")] pub(crate) const unsafe fn swap_nonoverlapping_one(x: *mut T, y: *mut T) { - // Only apply the block optimization in `swap_nonoverlapping_bytes` for types - // at least as large as the block size, to avoid pessimizing codegen. - if mem::size_of::() >= 32 { - // SAFETY: the caller must uphold the safety contract for `swap_nonoverlapping`. - unsafe { swap_nonoverlapping(x, y, 1) }; - return; + // NOTE(eddyb) SPIR-V's Logical addressing model doesn't allow for arbitrary + // reinterpretation of values as (chunkable) byte arrays, and the loop in the + // block optimization in `swap_nonoverlapping_bytes` is hard to rewrite back + // into the (unoptimized) direct swapping implementation, so we disable it. + // FIXME(eddyb) the block optimization also prevents MIR optimizations from + // understanding `mem::replace`, `Option::take`, etc. - a better overall + // solution might be to make `swap_nonoverlapping` into an intrinsic, which + // a backend can choose to implement using the block optimization, or not. + #[cfg(not(target_arch = "spirv"))] + { + // Only apply the block optimization in `swap_nonoverlapping_bytes` for types + // at least as large as the block size, to avoid pessimizing codegen. + if mem::size_of::() >= 32 { + // SAFETY: the caller must uphold the safety contract for `swap_nonoverlapping`. + unsafe { swap_nonoverlapping(x, y, 1) }; + return; + } } // Direct swapping, for the cases not going through the block optimization. From 14406df189150a1a79298dd82007c6fd6186fafc Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Wed, 10 Feb 2021 00:33:17 -0500 Subject: [PATCH 53/62] Use the beta compiler for building bootstrap tools when `download-rustc` is set ## Motivation This avoids having to rebuild bootstrap and tidy each time you rebase over master. In particular, it makes rebasing and running `x.py fmt` on each commit in a branch significantly faster. It also avoids having to rebuild bootstrap after setting `download-rustc = true`. ## Implementation Instead of extracting the CI artifacts directly to `stage0/`, extract them to `ci-rustc/` instead. Continue to copy them to the proper sysroots as necessary for all stages except stage 0. This also requires `bootstrap.py` to download both stage0 and CI artifacts and distinguish between the two when checking stamp files. Note that since tools have to be built by the same compiler that built `rustc-dev` and the standard library, the downloaded artifacts can't be reused when building with the beta compiler. To make sure this is still a good user experience, warn when building with the beta compiler, and default to building with stage 2. --- src/bootstrap/bootstrap.py | 149 ++++++++++++++++++++----------------- src/bootstrap/compile.rs | 15 ++-- src/bootstrap/config.rs | 98 +++++++++++++----------- src/bootstrap/tool.rs | 13 ++++ 4 files changed, 158 insertions(+), 117 deletions(-) diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index 3e7d1d54f128..1f57d85866ff 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -383,7 +383,7 @@ class RustBuild(object): self.nix_deps_dir = None self.rustc_commit = None - def download_stage0(self): + def download_toolchain(self, stage0=True, rustc_channel=None): """Fetch the build system for Rust, written in Rust This method will build a cache directory, then it will fetch the @@ -393,43 +393,47 @@ class RustBuild(object): Each downloaded tarball is extracted, after that, the script will move all the content to the right place. """ - rustc_channel = self.rustc_channel + if rustc_channel is None: + rustc_channel = self.rustc_channel rustfmt_channel = self.rustfmt_channel + bin_root = self.bin_root(stage0) - if self.rustc().startswith(self.bin_root()) and \ - (not os.path.exists(self.rustc()) or - self.program_out_of_date(self.rustc_stamp(), self.date + str(self.rustc_commit))): - if os.path.exists(self.bin_root()): - shutil.rmtree(self.bin_root()) - download_rustc = self.rustc_commit is not None + key = self.date + if not stage0: + key += str(self.rustc_commit) + if self.rustc(stage0).startswith(bin_root) and \ + (not os.path.exists(self.rustc(stage0)) or + self.program_out_of_date(self.rustc_stamp(stage0), key)): + if os.path.exists(bin_root): + shutil.rmtree(bin_root) tarball_suffix = '.tar.xz' if support_xz() else '.tar.gz' filename = "rust-std-{}-{}{}".format( rustc_channel, self.build, tarball_suffix) pattern = "rust-std-{}".format(self.build) - self._download_component_helper(filename, pattern, tarball_suffix, download_rustc) + self._download_component_helper(filename, pattern, tarball_suffix, stage0) filename = "rustc-{}-{}{}".format(rustc_channel, self.build, tarball_suffix) - self._download_component_helper(filename, "rustc", tarball_suffix, download_rustc) + self._download_component_helper(filename, "rustc", tarball_suffix, stage0) filename = "cargo-{}-{}{}".format(rustc_channel, self.build, tarball_suffix) self._download_component_helper(filename, "cargo", tarball_suffix) - if self.rustc_commit is not None: + if not stage0: filename = "rustc-dev-{}-{}{}".format(rustc_channel, self.build, tarball_suffix) self._download_component_helper( - filename, "rustc-dev", tarball_suffix, download_rustc + filename, "rustc-dev", tarball_suffix, stage0 ) - self.fix_bin_or_dylib("{}/bin/rustc".format(self.bin_root())) - self.fix_bin_or_dylib("{}/bin/rustdoc".format(self.bin_root())) - self.fix_bin_or_dylib("{}/bin/cargo".format(self.bin_root())) - lib_dir = "{}/lib".format(self.bin_root()) + self.fix_bin_or_dylib("{}/bin/rustc".format(bin_root)) + self.fix_bin_or_dylib("{}/bin/rustdoc".format(bin_root)) + self.fix_bin_or_dylib("{}/bin/cargo".format(bin_root)) + lib_dir = "{}/lib".format(bin_root) for lib in os.listdir(lib_dir): if lib.endswith(".so"): self.fix_bin_or_dylib(os.path.join(lib_dir, lib), rpath_libz=True) - with output(self.rustc_stamp()) as rust_stamp: - rust_stamp.write(self.date + str(self.rustc_commit)) + with output(self.rustc_stamp(stage0)) as rust_stamp: + rust_stamp.write(key) - if self.rustfmt() and self.rustfmt().startswith(self.bin_root()) and ( + if self.rustfmt() and self.rustfmt().startswith(bin_root) and ( not os.path.exists(self.rustfmt()) or self.program_out_of_date(self.rustfmt_stamp(), self.rustfmt_channel) ): @@ -440,12 +444,13 @@ class RustBuild(object): self._download_component_helper( filename, "rustfmt-preview", tarball_suffix, key=date ) - self.fix_bin_or_dylib("{}/bin/rustfmt".format(self.bin_root())) - self.fix_bin_or_dylib("{}/bin/cargo-fmt".format(self.bin_root())) + self.fix_bin_or_dylib("{}/bin/rustfmt".format(bin_root)) + self.fix_bin_or_dylib("{}/bin/cargo-fmt".format(bin_root)) with output(self.rustfmt_stamp()) as rustfmt_stamp: rustfmt_stamp.write(self.rustfmt_channel) - if self.downloading_llvm(): + # Avoid downloading LLVM twice (once for stage0 and once for the master rustc) + if self.downloading_llvm() and stage0: # We want the most recent LLVM submodule update to avoid downloading # LLVM more often than necessary. # @@ -496,27 +501,26 @@ class RustBuild(object): or (opt == "if-available" and self.build in supported_platforms) def _download_component_helper( - self, filename, pattern, tarball_suffix, download_rustc=False, key=None + self, filename, pattern, tarball_suffix, stage0=True, key=None ): if key is None: - if download_rustc: - key = self.rustc_commit - else: + if stage0: key = self.date + else: + key = self.rustc_commit cache_dst = os.path.join(self.build_dir, "cache") rustc_cache = os.path.join(cache_dst, key) if not os.path.exists(rustc_cache): os.makedirs(rustc_cache) - if download_rustc: - url = "https://ci-artifacts.rust-lang.org/rustc-builds/{}".format(self.rustc_commit) - else: + if stage0: url = "{}/dist/{}".format(self._download_url, key) + else: + url = "https://ci-artifacts.rust-lang.org/rustc-builds/{}".format(self.rustc_commit) tarball = os.path.join(rustc_cache, filename) if not os.path.exists(tarball): - do_verify = not download_rustc - get("{}/{}".format(url, filename), tarball, verbose=self.verbose, do_verify=do_verify) - unpack(tarball, tarball_suffix, self.bin_root(), match=pattern, verbose=self.verbose) + get("{}/{}".format(url, filename), tarball, verbose=self.verbose, do_verify=stage0) + unpack(tarball, tarball_suffix, self.bin_root(stage0), match=pattern, verbose=self.verbose) def _download_ci_llvm(self, llvm_sha, llvm_assertions): cache_prefix = "llvm-{}-{}".format(llvm_sha, llvm_assertions) @@ -574,10 +578,10 @@ class RustBuild(object): nix_os_msg = "info: you seem to be running NixOS. Attempting to patch" print(nix_os_msg, fname) - # Only build `stage0/.nix-deps` once. + # Only build `.nix-deps` once. nix_deps_dir = self.nix_deps_dir if not nix_deps_dir: - nix_deps_dir = "{}/.nix-deps".format(self.bin_root()) + nix_deps_dir = ".nix-deps" if not os.path.exists(nix_deps_dir): os.makedirs(nix_deps_dir) @@ -635,8 +639,8 @@ class RustBuild(object): print("warning: failed to call patchelf:", reason) return - # Return the stage1 compiler to download, if any. - def maybe_download_rustc(self): + # If `download-rustc` is set, download the most recent commit with CI artifacts + def maybe_download_ci_toolchain(self): # If `download-rustc` is not set, default to rebuilding. if self.get_toml("download-rustc", section="rust") != "true": return None @@ -656,17 +660,23 @@ class RustBuild(object): if status != 0: print("warning: `download-rustc` is enabled, but there are changes to compiler/") - return commit + if self.verbose: + print("using downloaded stage1 artifacts from CI (commit {})".format(commit)) + self.rustc_commit = commit + # FIXME: support downloading artifacts from the beta channel + self.download_toolchain(False, "nightly") - def rustc_stamp(self): - """Return the path for .rustc-stamp + def rustc_stamp(self, stage0): + """Return the path for .rustc-stamp at the given stage >>> rb = RustBuild() >>> rb.build_dir = "build" - >>> rb.rustc_stamp() == os.path.join("build", "stage0", ".rustc-stamp") + >>> rb.rustc_stamp(True) == os.path.join("build", "stage0", ".rustc-stamp") + True + >>> rb.rustc_stamp(False) == os.path.join("build", "ci-rustc", ".rustc-stamp") True """ - return os.path.join(self.bin_root(), '.rustc-stamp') + return os.path.join(self.bin_root(stage0), '.rustc-stamp') def rustfmt_stamp(self): """Return the path for .rustfmt-stamp @@ -676,7 +686,7 @@ class RustBuild(object): >>> rb.rustfmt_stamp() == os.path.join("build", "stage0", ".rustfmt-stamp") True """ - return os.path.join(self.bin_root(), '.rustfmt-stamp') + return os.path.join(self.bin_root(True), '.rustfmt-stamp') def llvm_stamp(self): """Return the path for .rustfmt-stamp @@ -696,21 +706,27 @@ class RustBuild(object): with open(stamp_path, 'r') as stamp: return key != stamp.read() - def bin_root(self): - """Return the binary root directory + def bin_root(self, stage0): + """Return the binary root directory for the given stage >>> rb = RustBuild() >>> rb.build_dir = "build" - >>> rb.bin_root() == os.path.join("build", "stage0") + >>> rb.bin_root(True) == os.path.join("build", "stage0") + True + >>> rb.bin_root(False) == os.path.join("build", "ci-rustc") True When the 'build' property is given should be a nested directory: >>> rb.build = "devel" - >>> rb.bin_root() == os.path.join("build", "devel", "stage0") + >>> rb.bin_root(True) == os.path.join("build", "devel", "stage0") True """ - return os.path.join(self.build_dir, self.build, "stage0") + if stage0: + subdir = "stage0" + else: + subdir = "ci-rustc" + return os.path.join(self.build_dir, self.build, subdir) def llvm_root(self): """Return the CI LLVM root directory @@ -773,9 +789,9 @@ class RustBuild(object): """Return config path for cargo""" return self.program_config('cargo') - def rustc(self): + def rustc(self, stage0): """Return config path for rustc""" - return self.program_config('rustc') + return self.program_config('rustc', stage0) def rustfmt(self): """Return config path for rustfmt""" @@ -783,23 +799,27 @@ class RustBuild(object): return None return self.program_config('rustfmt') - def program_config(self, program): - """Return config path for the given program + def program_config(self, program, stage0=True): + """Return config path for the given program at the given stage >>> rb = RustBuild() >>> rb.config_toml = 'rustc = "rustc"\\n' >>> rb.program_config('rustc') 'rustc' >>> rb.config_toml = '' - >>> cargo_path = rb.program_config('cargo') - >>> cargo_path.rstrip(".exe") == os.path.join(rb.bin_root(), + >>> cargo_path = rb.program_config('cargo', True) + >>> cargo_path.rstrip(".exe") == os.path.join(rb.bin_root(True), + ... "bin", "cargo") + True + >>> cargo_path = rb.program_config('cargo', False) + >>> cargo_path.rstrip(".exe") == os.path.join(rb.bin_root(False), ... "bin", "cargo") True """ config = self.get_toml(program) if config: return os.path.expanduser(config) - return os.path.join(self.bin_root(), "bin", "{}{}".format( + return os.path.join(self.bin_root(stage0), "bin", "{}{}".format( program, self.exe_suffix())) @staticmethod @@ -854,14 +874,14 @@ class RustBuild(object): if "CARGO_BUILD_TARGET" in env: del env["CARGO_BUILD_TARGET"] env["CARGO_TARGET_DIR"] = build_dir - env["RUSTC"] = self.rustc() - env["LD_LIBRARY_PATH"] = os.path.join(self.bin_root(), "lib") + \ + env["RUSTC"] = self.rustc(True) + env["LD_LIBRARY_PATH"] = os.path.join(self.bin_root(True), "lib") + \ (os.pathsep + env["LD_LIBRARY_PATH"]) \ if "LD_LIBRARY_PATH" in env else "" - env["DYLD_LIBRARY_PATH"] = os.path.join(self.bin_root(), "lib") + \ + env["DYLD_LIBRARY_PATH"] = os.path.join(self.bin_root(True), "lib") + \ (os.pathsep + env["DYLD_LIBRARY_PATH"]) \ if "DYLD_LIBRARY_PATH" in env else "" - env["LIBRARY_PATH"] = os.path.join(self.bin_root(), "lib") + \ + env["LIBRARY_PATH"] = os.path.join(self.bin_root(True), "lib") + \ (os.pathsep + env["LIBRARY_PATH"]) \ if "LIBRARY_PATH" in env else "" # preserve existing RUSTFLAGS @@ -884,7 +904,7 @@ class RustBuild(object): if self.get_toml("deny-warnings", "rust") != "false": env["RUSTFLAGS"] += " -Dwarnings" - env["PATH"] = os.path.join(self.bin_root(), "bin") + \ + env["PATH"] = os.path.join(self.bin_root(True), "bin") + \ os.pathsep + env["PATH"] if not os.path.isfile(self.cargo()): raise Exception("no cargo executable found at `{}`".format( @@ -1135,14 +1155,9 @@ def bootstrap(help_triggered): build.update_submodules() # Fetch/build the bootstrap - build.rustc_commit = build.maybe_download_rustc() - if build.rustc_commit is not None: - if build.verbose: - commit = build.rustc_commit - print("using downloaded stage1 artifacts from CI (commit {})".format(commit)) - # FIXME: support downloading artifacts from the beta channel - build.rustc_channel = "nightly" - build.download_stage0() + build.download_toolchain() + # Download the master compiler if `download-rustc` is set + build.maybe_download_ci_toolchain() sys.stdout.flush() build.ensure_vendored() build.build_bootstrap() diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 9398f211721b..8244c7710ab7 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -65,7 +65,9 @@ impl Step for Std { // These artifacts were already copied (in `impl Step for Sysroot`). // Don't recompile them. - if builder.config.download_rustc { + // NOTE: the ABI of the beta compiler is different from the ABI of the downloaded compiler, + // so its artifacts can't be reused. + if builder.config.download_rustc && compiler.stage != 0 { return; } @@ -513,7 +515,9 @@ impl Step for Rustc { let compiler = self.compiler; let target = self.target; - if builder.config.download_rustc { + // NOTE: the ABI of the beta compiler is different from the ABI of the downloaded compiler, + // so its artifacts can't be reused. + if builder.config.download_rustc && compiler.stage != 0 { // Copy the existing artifacts instead of rebuilding them. // NOTE: this path is only taken for tools linking to rustc-dev. builder.ensure(Sysroot { compiler }); @@ -934,14 +938,15 @@ impl Step for Sysroot { t!(fs::create_dir_all(&sysroot)); // If we're downloading a compiler from CI, we can use the same compiler for all stages other than 0. - if builder.config.download_rustc { + if builder.config.download_rustc && compiler.stage != 0 { assert_eq!( builder.config.build, compiler.host, "Cross-compiling is not yet supported with `download-rustc`", ); // Copy the compiler into the correct sysroot. - let stage0_dir = builder.config.out.join(&*builder.config.build.triple).join("stage0"); - builder.cp_r(&stage0_dir, &sysroot); + let ci_rustc_dir = + builder.config.out.join(&*builder.config.build.triple).join("ci-rustc"); + builder.cp_r(&ci_rustc_dir, &sysroot); return INTERNER.intern_path(sysroot); } diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index b9b090bb2d2d..471f671fd272 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -687,51 +687,6 @@ impl Config { set(&mut config.print_step_timings, build.print_step_timings); set(&mut config.print_step_rusage, build.print_step_rusage); - // See https://github.com/rust-lang/compiler-team/issues/326 - config.stage = match config.cmd { - Subcommand::Check { .. } => flags.stage.or(build.check_stage).unwrap_or(0), - Subcommand::Doc { .. } => flags.stage.or(build.doc_stage).unwrap_or(0), - Subcommand::Build { .. } => flags.stage.or(build.build_stage).unwrap_or(1), - Subcommand::Test { .. } => flags.stage.or(build.test_stage).unwrap_or(1), - Subcommand::Bench { .. } => flags.stage.or(build.bench_stage).unwrap_or(2), - Subcommand::Dist { .. } => flags.stage.or(build.dist_stage).unwrap_or(2), - Subcommand::Install { .. } => flags.stage.or(build.install_stage).unwrap_or(2), - // These are all bootstrap tools, which don't depend on the compiler. - // The stage we pass shouldn't matter, but use 0 just in case. - Subcommand::Clean { .. } - | Subcommand::Clippy { .. } - | Subcommand::Fix { .. } - | Subcommand::Run { .. } - | Subcommand::Setup { .. } - | Subcommand::Format { .. } => flags.stage.unwrap_or(0), - }; - - // CI should always run stage 2 builds, unless it specifically states otherwise - #[cfg(not(test))] - if flags.stage.is_none() && crate::CiEnv::current() != crate::CiEnv::None { - match config.cmd { - Subcommand::Test { .. } - | Subcommand::Doc { .. } - | Subcommand::Build { .. } - | Subcommand::Bench { .. } - | Subcommand::Dist { .. } - | Subcommand::Install { .. } => { - assert_eq!( - config.stage, 2, - "x.py should be run with `--stage 2` on CI, but was run with `--stage {}`", - config.stage, - ); - } - Subcommand::Clean { .. } - | Subcommand::Check { .. } - | Subcommand::Clippy { .. } - | Subcommand::Fix { .. } - | Subcommand::Run { .. } - | Subcommand::Setup { .. } - | Subcommand::Format { .. } => {} - } - } - config.verbose = cmp::max(config.verbose, flags.verbose); if let Some(install) = toml.install { @@ -1005,6 +960,59 @@ impl Config { let default = config.channel == "dev"; config.ignore_git = ignore_git.unwrap_or(default); + let download_rustc = config.download_rustc; + // See https://github.com/rust-lang/compiler-team/issues/326 + config.stage = match config.cmd { + Subcommand::Check { .. } => flags.stage.or(build.check_stage).unwrap_or(0), + // `download-rustc` only has a speed-up for stage2 builds. Default to stage2 unless explicitly overridden. + Subcommand::Doc { .. } => { + flags.stage.or(build.doc_stage).unwrap_or(if download_rustc { 2 } else { 0 }) + } + Subcommand::Build { .. } => { + flags.stage.or(build.build_stage).unwrap_or(if download_rustc { 2 } else { 1 }) + } + Subcommand::Test { .. } => { + flags.stage.or(build.test_stage).unwrap_or(if download_rustc { 2 } else { 1 }) + } + Subcommand::Bench { .. } => flags.stage.or(build.bench_stage).unwrap_or(2), + Subcommand::Dist { .. } => flags.stage.or(build.dist_stage).unwrap_or(2), + Subcommand::Install { .. } => flags.stage.or(build.install_stage).unwrap_or(2), + // These are all bootstrap tools, which don't depend on the compiler. + // The stage we pass shouldn't matter, but use 0 just in case. + Subcommand::Clean { .. } + | Subcommand::Clippy { .. } + | Subcommand::Fix { .. } + | Subcommand::Run { .. } + | Subcommand::Setup { .. } + | Subcommand::Format { .. } => flags.stage.unwrap_or(0), + }; + + // CI should always run stage 2 builds, unless it specifically states otherwise + #[cfg(not(test))] + if flags.stage.is_none() && crate::CiEnv::current() != crate::CiEnv::None { + match config.cmd { + Subcommand::Test { .. } + | Subcommand::Doc { .. } + | Subcommand::Build { .. } + | Subcommand::Bench { .. } + | Subcommand::Dist { .. } + | Subcommand::Install { .. } => { + assert_eq!( + config.stage, 2, + "x.py should be run with `--stage 2` on CI, but was run with `--stage {}`", + config.stage, + ); + } + Subcommand::Clean { .. } + | Subcommand::Check { .. } + | Subcommand::Clippy { .. } + | Subcommand::Fix { .. } + | Subcommand::Run { .. } + | Subcommand::Setup { .. } + | Subcommand::Format { .. } => {} + } + } + config } diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs index 3fc3b68fd868..30bd9c1b4a1e 100644 --- a/src/bootstrap/tool.rs +++ b/src/bootstrap/tool.rs @@ -514,6 +514,19 @@ impl Step for Rustdoc { // rustc compiler it's paired with, so it must be built with the previous stage compiler. let build_compiler = builder.compiler(target_compiler.stage - 1, builder.config.build); + // When using `download-rustc` and a stage0 build_compiler, copying rustc doesn't actually + // build stage0 libstd (because the libstd in sysroot has the wrong ABI). Explicitly build + // it. + builder.ensure(compile::Std { compiler: build_compiler, target: target_compiler.host }); + builder.ensure(compile::Rustc { compiler: build_compiler, target: target_compiler.host }); + // NOTE: this implies that `download-rustc` is pretty useless when compiling with the stage0 + // compiler, since you do just as much work. + if !builder.config.dry_run && builder.config.download_rustc && build_compiler.stage == 0 { + println!( + "warning: `download-rustc` does nothing when building stage1 tools; consider using `--stage 2` instead" + ); + } + // The presence of `target_compiler` ensures that the necessary libraries (codegen backends, // compiler libraries, ...) are built. Rustdoc does not require the presence of any // libraries within sysroot_libdir (i.e., rustlib), though doctests may want it (since From 82b2863a204e727a37a2d23efd738387d2fbab70 Mon Sep 17 00:00:00 2001 From: Alan Egerton Date: Sun, 4 Apr 2021 22:42:19 +0100 Subject: [PATCH 54/62] Render destructured struct function param names as underscore. Fixes #83852 r? `@GuillaumeGomez` --- src/librustdoc/clean/utils.rs | 12 +----------- src/test/rustdoc/issue-83852.rs | 10 ++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 src/test/rustdoc/issue-83852.rs diff --git a/src/librustdoc/clean/utils.rs b/src/librustdoc/clean/utils.rs index 60cbe9f376f0..9c0ed1480fef 100644 --- a/src/librustdoc/clean/utils.rs +++ b/src/librustdoc/clean/utils.rs @@ -251,19 +251,9 @@ crate fn name_from_pat(p: &hir::Pat<'_>) -> Symbol { debug!("trying to get a name from pattern: {:?}", p); Symbol::intern(&match p.kind { - PatKind::Wild => return kw::Underscore, + PatKind::Wild | PatKind::Struct(..) => return kw::Underscore, PatKind::Binding(_, _, ident, _) => return ident.name, PatKind::TupleStruct(ref p, ..) | PatKind::Path(ref p) => qpath_to_string(p), - PatKind::Struct(ref name, ref fields, etc) => format!( - "{} {{ {}{} }}", - qpath_to_string(name), - fields - .iter() - .map(|fp| format!("{}: {}", fp.ident, name_from_pat(&fp.pat))) - .collect::>() - .join(", "), - if etc { ", .." } else { "" } - ), PatKind::Or(ref pats) => pats .iter() .map(|p| name_from_pat(&**p).to_string()) diff --git a/src/test/rustdoc/issue-83852.rs b/src/test/rustdoc/issue-83852.rs new file mode 100644 index 000000000000..3c0369e3d341 --- /dev/null +++ b/src/test/rustdoc/issue-83852.rs @@ -0,0 +1,10 @@ +#![crate_name = "foo"] + +struct BodyId { + hir_id: usize, +} + +// @has 'foo/fn.body_owner.html' '//*[@class="rust fn"]' 'pub fn body_owner(_: BodyId)' +pub fn body_owner(BodyId { hir_id }: BodyId) { + // ... +} From 45ccd50d0e52e006fdd81f854b4cd711ac439e85 Mon Sep 17 00:00:00 2001 From: Camelid Date: Sun, 4 Apr 2021 15:31:43 -0700 Subject: [PATCH 55/62] Don't report disambiguator error if link would have been ignored This prevents us from warning on links such as ``. Note that we still warn on links such as `` because they have no dots in them. However, the links will still work, even though a warning is reported. --- .../passes/collect_intra_doc_links.rs | 28 ++++++++++++++++--- .../intra-doc/email-address-localhost.rs | 6 ++++ .../intra-doc/email-address-localhost.stderr | 15 ++++++++++ src/test/rustdoc/intra-doc/email-address.rs | 6 ++++ 4 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 src/test/rustdoc-ui/intra-doc/email-address-localhost.rs create mode 100644 src/test/rustdoc-ui/intra-doc/email-address-localhost.stderr create mode 100644 src/test/rustdoc/intra-doc/email-address.rs diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs index 437f42b26dd1..545fbf261812 100644 --- a/src/librustdoc/passes/collect_intra_doc_links.rs +++ b/src/librustdoc/passes/collect_intra_doc_links.rs @@ -978,14 +978,18 @@ impl LinkCollector<'_, '_> { Ok(Some((d, path))) => (path.trim(), Some(d)), Ok(None) => (link.trim(), None), Err((err_msg, relative_range)) => { - let disambiguator_range = (no_backticks_range.start + relative_range.start) - ..(no_backticks_range.start + relative_range.end); - disambiguator_error(self.cx, &item, dox, disambiguator_range, &err_msg); + if !should_ignore_link_with_disambiguators(link) { + // Only report error if we would not have ignored this link. + // See issue #83859. + let disambiguator_range = (no_backticks_range.start + relative_range.start) + ..(no_backticks_range.start + relative_range.end); + disambiguator_error(self.cx, &item, dox, disambiguator_range, &err_msg); + } return None; } }; - if path_str.contains(|ch: char| !(ch.is_alphanumeric() || ":_<>, !*&;".contains(ch))) { + if should_ignore_link(path_str) { return None; } @@ -1515,6 +1519,22 @@ fn range_between_backticks(ori_link: &MarkdownLink) -> Range { ..(ori_link.range.start + before_second_backtick_group) } +/// Returns true if we should ignore `link` due to it being unlikely +/// that it is an intra-doc link. `link` should still have disambiguators +/// if there were any. +/// +/// The difference between this and [`should_ignore_link()`] is that this +/// check should only be used on links that still have disambiguators. +fn should_ignore_link_with_disambiguators(link: &str) -> bool { + link.contains(|ch: char| !(ch.is_alphanumeric() || ":_<>, !*&;@()".contains(ch))) +} + +/// Returns true if we should ignore `path_str` due to it being unlikely +/// that it is an intra-doc link. +fn should_ignore_link(path_str: &str) -> bool { + path_str.contains(|ch: char| !(ch.is_alphanumeric() || ":_<>, !*&;".contains(ch))) +} + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] /// Disambiguators for a link. crate enum Disambiguator { diff --git a/src/test/rustdoc-ui/intra-doc/email-address-localhost.rs b/src/test/rustdoc-ui/intra-doc/email-address-localhost.rs new file mode 100644 index 000000000000..417618c74582 --- /dev/null +++ b/src/test/rustdoc-ui/intra-doc/email-address-localhost.rs @@ -0,0 +1,6 @@ +#![deny(warnings)] + +//! Email me at . +//~^ ERROR unknown disambiguator `hello` + +//! This should *not* warn: . diff --git a/src/test/rustdoc-ui/intra-doc/email-address-localhost.stderr b/src/test/rustdoc-ui/intra-doc/email-address-localhost.stderr new file mode 100644 index 000000000000..de215b2163bd --- /dev/null +++ b/src/test/rustdoc-ui/intra-doc/email-address-localhost.stderr @@ -0,0 +1,15 @@ +error: unknown disambiguator `hello` + --> $DIR/email-address-localhost.rs:3:18 + | +LL | //! Email me at . + | ^^^^^ + | +note: the lint level is defined here + --> $DIR/email-address-localhost.rs:1:9 + | +LL | #![deny(warnings)] + | ^^^^^^^^ + = note: `#[deny(rustdoc::broken_intra_doc_links)]` implied by `#[deny(warnings)]` + +error: aborting due to previous error + diff --git a/src/test/rustdoc/intra-doc/email-address.rs b/src/test/rustdoc/intra-doc/email-address.rs new file mode 100644 index 000000000000..c407eb80da22 --- /dev/null +++ b/src/test/rustdoc/intra-doc/email-address.rs @@ -0,0 +1,6 @@ +//! Email me at . +//! Email me at . +//! Email me at (this warns but will still become a link). +// @has email_address/index.html '//a[@href="mailto:hello@example.com"]' 'hello@example.com' +// @has email_address/index.html '//a[@href="mailto:hello-world@example.com"]' 'hello-world@example.com' +// @has email_address/index.html '//a[@href="mailto:hello@localhost"]' 'hello@localhost' From 14fac683289dcd53625544edd3372e5fc737c7ed Mon Sep 17 00:00:00 2001 From: Alan Egerton Date: Mon, 5 Apr 2021 00:29:43 +0100 Subject: [PATCH 56/62] Renamed test --- src/test/rustdoc/{issue-83852.rs => struct-arg-pattern.rs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/test/rustdoc/{issue-83852.rs => struct-arg-pattern.rs} (100%) diff --git a/src/test/rustdoc/issue-83852.rs b/src/test/rustdoc/struct-arg-pattern.rs similarity index 100% rename from src/test/rustdoc/issue-83852.rs rename to src/test/rustdoc/struct-arg-pattern.rs From 29fed9aa4e8e3124bde9debcd139431594a7b26c Mon Sep 17 00:00:00 2001 From: Trevor Spiteri Date: Mon, 29 Mar 2021 18:33:22 +0200 Subject: [PATCH 57/62] Update Source Serif to release 4.004 Now the family name is Source Serif 4 (upstream issue 77) instead of Source Serif Pro. --- src/librustdoc/html/render/write_shared.rs | 8 +++---- src/librustdoc/html/static/COPYRIGHT.txt | 12 +++++----- .../html/static/SourceSerif4-Bold.ttf.woff | Bin 0 -> 110552 bytes .../html/static/SourceSerif4-It.ttf.woff | Bin 0 -> 78108 bytes ...Pro-LICENSE.md => SourceSerif4-LICENSE.md} | 2 +- .../html/static/SourceSerif4-Regular.ttf.woff | Bin 0 -> 103604 bytes .../html/static/SourceSerifPro-Bold.ttf.woff | Bin 93248 -> 0 bytes .../html/static/SourceSerifPro-It.ttf.woff | Bin 36200 -> 0 bytes .../static/SourceSerifPro-Regular.ttf.woff | Bin 88596 -> 0 bytes src/librustdoc/html/static/rustdoc.css | 16 ++++++------- src/librustdoc/html/static_files.rs | 21 +++++++++--------- .../unversioned-files.txt | 8 +++---- 12 files changed, 33 insertions(+), 34 deletions(-) create mode 100644 src/librustdoc/html/static/SourceSerif4-Bold.ttf.woff create mode 100644 src/librustdoc/html/static/SourceSerif4-It.ttf.woff rename src/librustdoc/html/static/{SourceSerifPro-LICENSE.md => SourceSerif4-LICENSE.md} (98%) create mode 100644 src/librustdoc/html/static/SourceSerif4-Regular.ttf.woff delete mode 100644 src/librustdoc/html/static/SourceSerifPro-Bold.ttf.woff delete mode 100644 src/librustdoc/html/static/SourceSerifPro-It.ttf.woff delete mode 100644 src/librustdoc/html/static/SourceSerifPro-Regular.ttf.woff diff --git a/src/librustdoc/html/render/write_shared.rs b/src/librustdoc/html/render/write_shared.rs index 59dc4ef94490..8fb6d68f3c6b 100644 --- a/src/librustdoc/html/render/write_shared.rs +++ b/src/librustdoc/html/render/write_shared.rs @@ -26,10 +26,10 @@ crate static FILES_UNVERSIONED: Lazy> = Lazy::new(|| { "FiraSans-Regular.woff" => static_files::fira_sans::REGULAR, "FiraSans-Medium.woff" => static_files::fira_sans::MEDIUM, "FiraSans-LICENSE.txt" => static_files::fira_sans::LICENSE, - "SourceSerifPro-Regular.ttf.woff" => static_files::source_serif_pro::REGULAR, - "SourceSerifPro-Bold.ttf.woff" => static_files::source_serif_pro::BOLD, - "SourceSerifPro-It.ttf.woff" => static_files::source_serif_pro::ITALIC, - "SourceSerifPro-LICENSE.md" => static_files::source_serif_pro::LICENSE, + "SourceSerif4-Regular.ttf.woff" => static_files::source_serif_4::REGULAR, + "SourceSerif4-Bold.ttf.woff" => static_files::source_serif_4::BOLD, + "SourceSerif4-It.ttf.woff" => static_files::source_serif_4::ITALIC, + "SourceSerif4-LICENSE.md" => static_files::source_serif_4::LICENSE, "SourceCodePro-Regular.ttf.woff" => static_files::source_code_pro::REGULAR, "SourceCodePro-Semibold.ttf.woff" => static_files::source_code_pro::SEMIBOLD, "SourceCodePro-It.ttf.woff" => static_files::source_code_pro::ITALIC, diff --git a/src/librustdoc/html/static/COPYRIGHT.txt b/src/librustdoc/html/static/COPYRIGHT.txt index 24bdca6544d6..16d79032fcc6 100644 --- a/src/librustdoc/html/static/COPYRIGHT.txt +++ b/src/librustdoc/html/static/COPYRIGHT.txt @@ -33,14 +33,14 @@ included, and carry their own copyright notices and license terms: Licensed under the SIL Open Font License, Version 1.1. See SourceCodePro-LICENSE.txt. -* Source Serif Pro (SourceSerifPro-Regular.ttf.woff, - SourceSerifPro-Bold.ttf.woff, SourceSerifPro-It.ttf.woff): +* Source Serif 4 (SourceSerif4-Regular.ttf.woff, SourceSerif4-Bold.ttf.woff, + SourceSerif4-It.ttf.woff): - Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/), with - Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of - Adobe Systems Incorporated in the United States and/or other countries. + Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name + 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United + States and/or other countries. Licensed under the SIL Open Font License, Version 1.1. - See SourceSerifPro-LICENSE.txt. + See SourceSerif4-LICENSE.md. This copyright file is intended to be distributed with rustdoc output. diff --git a/src/librustdoc/html/static/SourceSerif4-Bold.ttf.woff b/src/librustdoc/html/static/SourceSerif4-Bold.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..8ad41888e6e3f9f4439052ae6b14ece2cdfcd7cb GIT binary patch literal 110552 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 ChpsgM literal 0 HcmV?d00001 diff --git a/src/librustdoc/html/static/SourceSerif4-It.ttf.woff b/src/librustdoc/html/static/SourceSerif4-It.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..2a34b5c42a8aaca17a3c6a37a33489ab0cf2193f GIT binary patch literal 78108 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 literal 0 HcmV?d00001 diff --git a/src/librustdoc/html/static/SourceSerifPro-LICENSE.md b/src/librustdoc/html/static/SourceSerif4-LICENSE.md similarity index 98% rename from src/librustdoc/html/static/SourceSerifPro-LICENSE.md rename to src/librustdoc/html/static/SourceSerif4-LICENSE.md index 22cb755f2f1d..68ea1892406c 100644 --- a/src/librustdoc/html/static/SourceSerifPro-LICENSE.md +++ b/src/librustdoc/html/static/SourceSerif4-LICENSE.md @@ -1,4 +1,4 @@ -Copyright 2014-2018 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. diff --git a/src/librustdoc/html/static/SourceSerif4-Regular.ttf.woff b/src/librustdoc/html/static/SourceSerif4-Regular.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..45a5521ab0c77a02ebf55a3f7305faccc02e2894 GIT binary patch literal 103604 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ä>{ge#)@GR4TVa#d)Gs!sZ)OX1V0X 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 literal 0 HcmV?d00001 diff --git a/src/librustdoc/html/static/SourceSerifPro-Bold.ttf.woff b/src/librustdoc/html/static/SourceSerifPro-Bold.ttf.woff deleted file mode 100644 index ca254318fe9ea9fc0f3313bc5df7ea5109f16921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93248 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

#(&fNz@qk0c9oH+b-qwuHQM^?XfSnN^|@%O4@ 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 z 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 IX$A%c01l9}8UO$Q diff --git a/src/librustdoc/html/static/SourceSerifPro-It.ttf.woff b/src/librustdoc/html/static/SourceSerifPro-It.ttf.woff deleted file mode 100644 index a287bbe6ed3f871376686682bb455d71a13882b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36200 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%0DgkFS30wm4q1^W8o{rI$Y( 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 diff --git a/src/librustdoc/html/static/SourceSerifPro-Regular.ttf.woff b/src/librustdoc/html/static/SourceSerifPro-Regular.ttf.woff deleted file mode 100644 index a3d55cfdf2555f47860979797d2e8971520c2fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88596 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�y^p^buCi$TtL%C4*UeQ|$-fq#xBsHN>N5MC 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 nxxMSgmg0>sSNOjSz7(6mW?Wd@k Date: Mon, 5 Apr 2021 10:51:37 +0200 Subject: [PATCH 58/62] change SourceSerifPro to SourceSerif4 in emit-shared-files test --- src/test/run-make/emit-shared-files/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/run-make/emit-shared-files/Makefile b/src/test/run-make/emit-shared-files/Makefile index 5c4825ae66c8..d89b526d4303 100644 --- a/src/test/run-make/emit-shared-files/Makefile +++ b/src/test/run-make/emit-shared-files/Makefile @@ -14,7 +14,7 @@ invocation-only: [ -e $(INVOCATION_ONLY)/x/index.html ] [ -e $(INVOCATION_ONLY)/theme-xxx.css ] # generated from z.css ! [ -e $(INVOCATION_ONLY)/storage-xxx.js ] - ! [ -e $(INVOCATION_ONLY)/SourceSerifPro-It.ttf.woff ] + ! [ -e $(INVOCATION_ONLY)/SourceSerif4-It.ttf.woff ] # FIXME: this probably shouldn't have a suffix [ -e $(INVOCATION_ONLY)/y-xxx.css ] @@ -24,7 +24,7 @@ invocation-only: toolchain-only: $(RUSTDOC) -Z unstable-options --emit=toolchain-shared-resources --output $(TOOLCHAIN_ONLY) --resource-suffix=-xxx --extend-css z.css x.rs [ -e $(TOOLCHAIN_ONLY)/storage-xxx.js ] - ! [ -e $(TOOLCHAIN_ONLY)/SourceSerifPro-It.ttf.woff ] + ! [ -e $(TOOLCHAIN_ONLY)/SourceSerif4-It.ttf.woff ] ! [ -e $(TOOLCHAIN_ONLY)/search-index-xxx.js ] ! [ -e $(TOOLCHAIN_ONLY)/x/index.html ] ! [ -e $(TOOLCHAIN_ONLY)/theme.css ] @@ -35,7 +35,7 @@ toolchain-only: all-shared: $(RUSTDOC) -Z unstable-options --emit=toolchain-shared-resources,unversioned-shared-resources --output $(ALL_SHARED) --resource-suffix=-xxx --extend-css z.css x.rs [ -e $(ALL_SHARED)/storage-xxx.js ] - [ -e $(ALL_SHARED)/SourceSerifPro-It.ttf.woff ] + [ -e $(ALL_SHARED)/SourceSerif4-It.ttf.woff ] ! [ -e $(ALL_SHARED)/search-index-xxx.js ] ! [ -e $(ALL_SHARED)/settings.html ] ! [ -e $(ALL_SHARED)/x ] From 9eabb41ab4299e290f43d614877947d6238c3a96 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Mon, 5 Apr 2021 06:02:29 -0400 Subject: [PATCH 59/62] Remove unnecessary exceptions to the platform-specific code check Some of these were just wrong, like src/librustc. Some looked outdated, like std::f64. Not sure what was going on with the others - maybe this check isn't as smart as it needs to be? But it the meantime it seems silly to ignore the check if it will pass anyway. --- src/tools/tidy/src/pal.rs | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/src/tools/tidy/src/pal.rs b/src/tools/tidy/src/pal.rs index 1dba6b73b936..144529d8641e 100644 --- a/src/tools/tidy/src/pal.rs +++ b/src/tools/tidy/src/pal.rs @@ -40,35 +40,20 @@ const EXCEPTION_PATHS: &[&str] = &[ "library/panic_abort", "library/panic_unwind", "library/unwind", - // black_box implementation is LLVM-version specific and it uses - // target_os to tell targets with different LLVM-versions apart - // (e.g. `wasm32-unknown-emscripten` vs `wasm32-unknown-unknown`): - "library/core/src/hint.rs", "library/std/src/sys/", // Platform-specific code for std lives here. // This has the trailing slash so that sys_common is not excepted. "library/std/src/os", // Platform-specific public interfaces "library/rtstartup", // Not sure what to do about this. magic stuff for mingw - // temporary exceptions - "library/std/src/lib.rs", - "library/std/src/path.rs", - "library/std/src/f32.rs", - "library/std/src/f64.rs", // Integration test for platform-specific run-time feature detection: "library/std/tests/run-time-detect.rs", "library/std/src/net/test.rs", "library/std/src/net/addr", "library/std/src/net/udp", - "library/std/src/sys_common/mod.rs", - "library/std/src/sys_common/net.rs", - "library/std/src/sys_common/backtrace.rs", "library/std/src/sys_common/remutex.rs", "library/std/src/sync/mutex.rs", "library/std/src/sync/rwlock.rs", - // panic_unwind shims - "library/std/src/panicking.rs", "library/term", // Not sure how to make this crate portable, but test crate needs it. "library/test", // Probably should defer to unstable `std::sys` APIs. - "library/std/src/sync/mpsc", // some tests are only run on non-emscripten // std testing crates, okay for now at least "library/core/tests", "library/alloc/tests/lib.rs", @@ -79,13 +64,6 @@ const EXCEPTION_PATHS: &[&str] = &[ // we must use `#[cfg(windows)]` to conditionally compile the // correct `VaList` structure for windows. "library/core/src/ffi.rs", - // non-std crates - "src/test", - "src/tools", - "src/librustc", - "src/librustdoc", - "src/librustc_ast", - "src/bootstrap", ]; pub fn check(path: &Path, bad: &mut bool) { From 1df9d498e19088c6bdd838b22cfd64397e42c43f Mon Sep 17 00:00:00 2001 From: The8472 Date: Mon, 5 Apr 2021 12:15:52 +0200 Subject: [PATCH 60/62] don't try to visit probe file this file is only created for a brief moment during the bins checks in the source directories while other checks may also be visiting that directory. skip processing it to avoid missing file errors --- src/tools/tidy/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tools/tidy/src/lib.rs b/src/tools/tidy/src/lib.rs index cbcc01dc39a6..fcb27dae9ea9 100644 --- a/src/tools/tidy/src/lib.rs +++ b/src/tools/tidy/src/lib.rs @@ -53,6 +53,7 @@ pub mod unstable_book; fn filter_dirs(path: &Path) -> bool { let skip = [ + "tidy-test-file", "compiler/rustc_codegen_cranelift", "src/llvm-project", "library/backtrace", From b1bcff0731f5ce5f9c2de2779b36f94b44946bc6 Mon Sep 17 00:00:00 2001 From: Amanieu d'Antras Date: Sun, 4 Apr 2021 17:44:46 +0100 Subject: [PATCH 61/62] Disallow the use of high byte registes as operands on x86_64 They are still allowed on x86 though. Fixes #83495 --- compiler/rustc_target/src/asm/arm.rs | 2 -- compiler/rustc_target/src/asm/mod.rs | 4 ++-- compiler/rustc_target/src/asm/riscv.rs | 1 - compiler/rustc_target/src/asm/x86.rs | 7 +------ .../unstable-book/src/library-features/asm.md | 4 ++-- src/test/assembly/asm/x86-types.rs | 9 +++++---- src/test/ui/asm/bad-reg.rs | 2 ++ src/test/ui/asm/bad-reg.stderr | 20 ++++++++++++------- 8 files changed, 25 insertions(+), 24 deletions(-) diff --git a/compiler/rustc_target/src/asm/arm.rs b/compiler/rustc_target/src/asm/arm.rs index 28000916e0c3..a7a708fe7dec 100644 --- a/compiler/rustc_target/src/asm/arm.rs +++ b/compiler/rustc_target/src/asm/arm.rs @@ -68,7 +68,6 @@ fn frame_pointer_r11( _arch: InlineAsmArch, has_feature: impl FnMut(&str) -> bool, target: &Target, - _allocating: bool, ) -> Result<(), &'static str> { if !frame_pointer_is_r7(has_feature, target) { Err("the frame pointer (r11) cannot be used as an operand for inline asm") @@ -81,7 +80,6 @@ fn frame_pointer_r7( _arch: InlineAsmArch, has_feature: impl FnMut(&str) -> bool, target: &Target, - _allocating: bool, ) -> Result<(), &'static str> { if frame_pointer_is_r7(has_feature, target) { Err("the frame pointer (r7) cannot be used as an operand for inline asm") diff --git a/compiler/rustc_target/src/asm/mod.rs b/compiler/rustc_target/src/asm/mod.rs index a09c87b3ec2b..e2268a61a425 100644 --- a/compiler/rustc_target/src/asm/mod.rs +++ b/compiler/rustc_target/src/asm/mod.rs @@ -90,7 +90,7 @@ macro_rules! def_regs { match name { $( $($alias)|* | $reg_name => { - $($filter(_arch, &mut _has_feature, _target, false)?;)? + $($filter(_arch, &mut _has_feature, _target)?;)? Ok(Self::$reg) } )* @@ -114,7 +114,7 @@ macro_rules! def_regs { #[allow(unused_imports)] use super::{InlineAsmReg, InlineAsmRegClass}; $( - if $($filter(_arch, &mut _has_feature, _target, true).is_ok() &&)? true { + if $($filter(_arch, &mut _has_feature, _target).is_ok() &&)? true { if let Some(set) = _map.get_mut(&InlineAsmRegClass::$arch($arch_regclass::$class)) { set.insert(InlineAsmReg::$arch($arch_reg::$reg)); } diff --git a/compiler/rustc_target/src/asm/riscv.rs b/compiler/rustc_target/src/asm/riscv.rs index ced7483b0057..185d6ac8246c 100644 --- a/compiler/rustc_target/src/asm/riscv.rs +++ b/compiler/rustc_target/src/asm/riscv.rs @@ -52,7 +52,6 @@ fn not_e( _arch: InlineAsmArch, mut has_feature: impl FnMut(&str) -> bool, _target: &Target, - _allocating: bool, ) -> Result<(), &'static str> { if has_feature("e") { Err("register can't be used with the `e` target feature") diff --git a/compiler/rustc_target/src/asm/x86.rs b/compiler/rustc_target/src/asm/x86.rs index 0f62c19e1a3c..90660dad4c2a 100644 --- a/compiler/rustc_target/src/asm/x86.rs +++ b/compiler/rustc_target/src/asm/x86.rs @@ -133,7 +133,6 @@ fn x86_64_only( arch: InlineAsmArch, _has_feature: impl FnMut(&str) -> bool, _target: &Target, - _allocating: bool, ) -> Result<(), &'static str> { match arch { InlineAsmArch::X86 => Err("register is only available on x86_64"), @@ -146,13 +145,9 @@ fn high_byte( arch: InlineAsmArch, _has_feature: impl FnMut(&str) -> bool, _target: &Target, - allocating: bool, ) -> Result<(), &'static str> { match arch { - InlineAsmArch::X86_64 if allocating => { - // The error message isn't actually used... - Err("high byte registers are not allocated by reg_byte") - } + InlineAsmArch::X86_64 => Err("high byte registers cannot be used as an operand on x86_64"), _ => Ok(()), } } diff --git a/src/doc/unstable-book/src/library-features/asm.md b/src/doc/unstable-book/src/library-features/asm.md index c0e23b834d15..6c61f4f0d20f 100644 --- a/src/doc/unstable-book/src/library-features/asm.md +++ b/src/doc/unstable-book/src/library-features/asm.md @@ -495,7 +495,7 @@ Here is the list of currently supported register classes: | x86 | `reg` | `ax`, `bx`, `cx`, `dx`, `si`, `di`, `r[8-15]` (x86-64 only) | `r` | | x86 | `reg_abcd` | `ax`, `bx`, `cx`, `dx` | `Q` | | x86-32 | `reg_byte` | `al`, `bl`, `cl`, `dl`, `ah`, `bh`, `ch`, `dh` | `q` | -| x86-64 | `reg_byte` | `al`, `bl`, `cl`, `dl`, `sil`, `dil`, `r[8-15]b`, `ah`\*, `bh`\*, `ch`\*, `dh`\* | `q` | +| x86-64 | `reg_byte`\* | `al`, `bl`, `cl`, `dl`, `sil`, `dil`, `r[8-15]b` | `q` | | x86 | `xmm_reg` | `xmm[0-7]` (x86) `xmm[0-15]` (x86-64) | `x` | | x86 | `ymm_reg` | `ymm[0-7]` (x86) `ymm[0-15]` (x86-64) | `x` | | x86 | `zmm_reg` | `zmm[0-7]` (x86) `zmm[0-31]` (x86-64) | `v` | @@ -526,7 +526,7 @@ Here is the list of currently supported register classes: > **Note**: On x86 we treat `reg_byte` differently from `reg` because the compiler can allocate `al` and `ah` separately whereas `reg` reserves the whole register. > -> Note #2: On x86-64 the high byte registers (e.g. `ah`) are only available when used as an explicit register. Specifying the `reg_byte` register class for an operand will always allocate a low byte register. +> Note #2: On x86-64 the high byte registers (e.g. `ah`) are not available in the `reg_byte` register class. > > Note #3: NVPTX doesn't have a fixed register set, so named registers are not supported. > diff --git a/src/test/assembly/asm/x86-types.rs b/src/test/assembly/asm/x86-types.rs index e0190d3bdaed..b65b727d2255 100644 --- a/src/test/assembly/asm/x86-types.rs +++ b/src/test/assembly/asm/x86-types.rs @@ -748,10 +748,11 @@ check_reg!(eax_f64 f64 "eax" "mov"); // CHECK: #NO_APP check_reg!(eax_ptr ptr "eax" "mov"); -// CHECK-LABEL: ah_byte: -// CHECK: #APP -// CHECK: mov ah, ah -// CHECK: #NO_APP +// i686-LABEL: ah_byte: +// i686: #APP +// i686: mov ah, ah +// i686: #NO_APP +#[cfg(i686)] check_reg!(ah_byte i8 "ah" "mov"); // CHECK-LABEL: xmm0_i32: diff --git a/src/test/ui/asm/bad-reg.rs b/src/test/ui/asm/bad-reg.rs index 016ea9329c4d..da302b248760 100644 --- a/src/test/ui/asm/bad-reg.rs +++ b/src/test/ui/asm/bad-reg.rs @@ -37,6 +37,8 @@ fn main() { //~^ ERROR invalid register `mm0`: MMX registers are not currently supported as operands asm!("", in("k0") foo); //~^ ERROR invalid register `k0`: the k0 AVX mask register cannot be used as an operand + asm!("", in("ah") foo); + //~^ ERROR invalid register `ah`: high byte registers cannot be used as an operand // Explicit register conflicts // (except in/lateout which don't conflict) diff --git a/src/test/ui/asm/bad-reg.stderr b/src/test/ui/asm/bad-reg.stderr index c6b7d310dfa6..2bfb4854c344 100644 --- a/src/test/ui/asm/bad-reg.stderr +++ b/src/test/ui/asm/bad-reg.stderr @@ -94,8 +94,14 @@ error: invalid register `k0`: the k0 AVX mask register cannot be used as an oper LL | asm!("", in("k0") foo); | ^^^^^^^^^^^^ +error: invalid register `ah`: high byte registers cannot be used as an operand on x86_64 + --> $DIR/bad-reg.rs:40:18 + | +LL | asm!("", in("ah") foo); + | ^^^^^^^^^^^^ + error: register `al` conflicts with register `ax` - --> $DIR/bad-reg.rs:44:33 + --> $DIR/bad-reg.rs:46:33 | LL | asm!("", in("eax") foo, in("al") bar); | ------------- ^^^^^^^^^^^^ register `al` @@ -103,7 +109,7 @@ LL | asm!("", in("eax") foo, in("al") bar); | register `ax` error: register `ax` conflicts with register `ax` - --> $DIR/bad-reg.rs:46:33 + --> $DIR/bad-reg.rs:48:33 | LL | asm!("", in("rax") foo, out("rax") bar); | ------------- ^^^^^^^^^^^^^^ register `ax` @@ -111,13 +117,13 @@ LL | asm!("", in("rax") foo, out("rax") bar); | register `ax` | help: use `lateout` instead of `out` to avoid conflict - --> $DIR/bad-reg.rs:46:18 + --> $DIR/bad-reg.rs:48:18 | LL | asm!("", in("rax") foo, out("rax") bar); | ^^^^^^^^^^^^^ error: register `ymm0` conflicts with register `xmm0` - --> $DIR/bad-reg.rs:49:34 + --> $DIR/bad-reg.rs:51:34 | LL | asm!("", in("xmm0") foo, in("ymm0") bar); | -------------- ^^^^^^^^^^^^^^ register `ymm0` @@ -125,7 +131,7 @@ LL | asm!("", in("xmm0") foo, in("ymm0") bar); | register `xmm0` error: register `ymm0` conflicts with register `xmm0` - --> $DIR/bad-reg.rs:51:34 + --> $DIR/bad-reg.rs:53:34 | LL | asm!("", in("xmm0") foo, out("ymm0") bar); | -------------- ^^^^^^^^^^^^^^^ register `ymm0` @@ -133,10 +139,10 @@ LL | asm!("", in("xmm0") foo, out("ymm0") bar); | register `xmm0` | help: use `lateout` instead of `out` to avoid conflict - --> $DIR/bad-reg.rs:51:18 + --> $DIR/bad-reg.rs:53:18 | LL | asm!("", in("xmm0") foo, out("ymm0") bar); | ^^^^^^^^^^^^^^ -error: aborting due to 18 previous errors +error: aborting due to 19 previous errors From 580a740bdd35706e487abd5beb76bd28f2be4012 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Mon, 22 Mar 2021 02:31:47 -0400 Subject: [PATCH 62/62] Add `download-rustc = "if-unchanged"` This allows keeping the setting to a fixed value without having to toggle it when you want to work on the compiler instead of on tools. --- config.toml.example | 4 +++- src/bootstrap/bootstrap.py | 8 +++++++- src/bootstrap/config.rs | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/config.toml.example b/config.toml.example index ee06e1bd0ba1..539ff06c5adc 100644 --- a/config.toml.example +++ b/config.toml.example @@ -372,7 +372,9 @@ changelog-seen = 2 # Whether to download the stage 1 and 2 compilers from CI. # This is mostly useful for tools; if you have changes to `compiler/` they will be ignored. # -# FIXME: currently, this also uses the downloaded compiler for stage0, but that causes unnecessary rebuilds. +# You can set this to "if-unchanged" to only download if `compiler/` has not been modified. +# +# FIXME(#82739): currently, this also uses the downloaded compiler for stage0, but that causes unnecessary rebuilds. #download-rustc = false # Number of codegen units to use for each compiler invocation. A value of 0 diff --git a/src/bootstrap/bootstrap.py b/src/bootstrap/bootstrap.py index 3e7d1d54f128..59f22f3310ca 100644 --- a/src/bootstrap/bootstrap.py +++ b/src/bootstrap/bootstrap.py @@ -638,8 +638,10 @@ class RustBuild(object): # Return the stage1 compiler to download, if any. def maybe_download_rustc(self): # If `download-rustc` is not set, default to rebuilding. - if self.get_toml("download-rustc", section="rust") != "true": + download_rustc = self.get_toml("download-rustc", section="rust") + if download_rustc is None or download_rustc == "false": return None + assert download_rustc == "true" or download_rustc == "if-unchanged", download_rustc # Handle running from a directory other than the top level rev_parse = ["git", "rev-parse", "--show-toplevel"] @@ -654,6 +656,8 @@ class RustBuild(object): # Warn if there were changes to the compiler since the ancestor commit. status = subprocess.call(["git", "diff-index", "--quiet", commit, "--", compiler]) if status != 0: + if download_rustc == "if-unchanged": + return None print("warning: `download-rustc` is enabled, but there are changes to compiler/") return commit @@ -1158,6 +1162,8 @@ def bootstrap(help_triggered): env["RUSTC_BOOTSTRAP"] = '1' if toml_path: env["BOOTSTRAP_CONFIG"] = toml_path + if build.rustc_commit is not None: + env["BOOTSTRAP_DOWNLOAD_RUSTC"] = '1' run(args, env=env, verbose=build.verbose) diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index b9b090bb2d2d..43ae146e8666 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -510,7 +510,8 @@ struct Rust { new_symbol_mangling: Option, profile_generate: Option, profile_use: Option, - download_rustc: Option, + // ignored; this is set from an env var set by bootstrap.py + download_rustc: Option, } /// TOML representation of how each build target is configured. @@ -897,7 +898,7 @@ impl Config { config.rust_codegen_units_std = rust.codegen_units_std.map(threads_from_config); config.rust_profile_use = flags.rust_profile_use.or(rust.profile_use); config.rust_profile_generate = flags.rust_profile_generate.or(rust.profile_generate); - config.download_rustc = rust.download_rustc.unwrap_or(false); + config.download_rustc = env::var("BOOTSTRAP_DOWNLOAD_RUSTC").as_deref() == Ok("1"); } else { config.rust_profile_use = flags.rust_profile_use; config.rust_profile_generate = flags.rust_profile_generate;