]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoTest `-Zthir-unsafeck` for unsafe function calls
LeSeulArtichaut [Sun, 14 Mar 2021 19:11:37 +0000 (20:11 +0100)]
Test `-Zthir-unsafeck` for unsafe function calls

3 years agoIntroduce the (WIP) THIR unsafety checker
LeSeulArtichaut [Sun, 14 Mar 2021 19:10:22 +0000 (20:10 +0100)]
Introduce the (WIP) THIR unsafety checker

3 years ago[WIP] Create a `Visitor` for the THIR
LeSeulArtichaut [Sun, 7 Mar 2021 21:52:13 +0000 (22:52 +0100)]
[WIP] Create a `Visitor` for the THIR

3 years agoAuto merge of #85109 - RalfJung:remove-const_fn, r=oli-obk
bors [Tue, 11 May 2021 10:25:14 +0000 (10:25 +0000)]
Auto merge of #85109 - RalfJung:remove-const_fn, r=oli-obk

remove const_fn feature gate

Fixes https://github.com/rust-lang/rust/issues/84510
r? `@oli-obk`

3 years agofix clippy test
Ralf Jung [Mon, 10 May 2021 22:40:25 +0000 (00:40 +0200)]
fix clippy test

3 years agoAuto merge of #85100 - HKalbasi:issue-68049-fix, r=Aaron1011
bors [Tue, 11 May 2021 07:44:16 +0000 (07:44 +0000)]
Auto merge of #85100 - HKalbasi:issue-68049-fix, r=Aaron1011

Fix invalid suggestion of changing impl trait signature

Fix #68049

3 years agoAuto merge of #80300 - LeSeulArtichaut:80275-doc-inline, r=Manishearth
bors [Tue, 11 May 2021 05:03:18 +0000 (05:03 +0000)]
Auto merge of #80300 - LeSeulArtichaut:80275-doc-inline, r=Manishearth

Emit errors/warns on some wrong uses of rustdoc attributes

This PR adds a few diagnostics:
- error if conflicting `#[doc(inline)]`/`#[doc(no_inline)]` are found
- introduce the `invalid_doc_attributes` lint (warn-by-default) which triggers:
  - if a crate-level attribute is used on a non-`crate` item
  - if `#[doc(inline)]`/`#[doc(no_inline)]` is used on a non-`use` item

The code could probably be improved but I wanted to get feedback first. Also, some of those changes could be considered breaking changes, so I don't know what the procedure would be? ~~And finally, for the warnings, they are currently hard warnings, maybe it would be better to introduce a lint?~~ (EDIT: introduced the `invalid_doc_attributes` lint)

Closes #80275.
r? `@jyn514`

3 years agoFix CI problems
hamidreza kalbasi [Tue, 11 May 2021 04:20:43 +0000 (08:50 +0430)]
Fix CI problems

3 years agoAuto merge of #85165 - JohnTitor:rollup-ew1ls7x, r=JohnTitor
bors [Tue, 11 May 2021 02:41:38 +0000 (02:41 +0000)]
Auto merge of #85165 - JohnTitor:rollup-ew1ls7x, r=JohnTitor

Rollup of 7 pull requests

Successful merges:

 - #84777 (Apply `--cfg parallel_compiler` when documenting)
 - #84783 (Allow formatting specific subdirectories)
 - #84998 (Show nicer error when an 'unstable fingerprints' error occurs)
 - #85002 (RELEASES.md: Use broken_intra_doc_links as an example, not nightly lint)
 - #85051 (Allow checking miri and RLS with `x.py check src/tools/{miri,rls}`)
 - #85114 (Remove outdated FIXME for download-rustc)
 - #85143 (Document Rc::from)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

3 years agoRollup merge of #85143 - fee1-dead:master, r=Mark-Simulacrum
Yuki Okushi [Tue, 11 May 2021 00:28:09 +0000 (09:28 +0900)]
Rollup merge of #85143 - fee1-dead:master, r=Mark-Simulacrum

Document Rc::from

3 years agoRollup merge of #85114 - jyn514:download-fixme, r=Mark-Simulacrum
Yuki Okushi [Tue, 11 May 2021 00:28:08 +0000 (09:28 +0900)]
Rollup merge of #85114 - jyn514:download-fixme, r=Mark-Simulacrum

Remove outdated FIXME for download-rustc

https://github.com/rust-lang/rust/pull/82739 has been merged.

3 years agoRollup merge of #85051 - jyn514:check-miri, r=Mark-Simulacrum
Yuki Okushi [Tue, 11 May 2021 00:28:07 +0000 (09:28 +0900)]
Rollup merge of #85051 - jyn514:check-miri, r=Mark-Simulacrum

Allow checking miri and RLS with `x.py check src/tools/{miri,rls}`

Helps with https://github.com/rust-lang/rust/issues/80639.

`@Xanewok` would you find this useful for RLS too?

3 years agoRollup merge of #85002 - jyn514:releases, r=Mark-Simulacrum
Yuki Okushi [Tue, 11 May 2021 00:28:06 +0000 (09:28 +0900)]
Rollup merge of #85002 - jyn514:releases, r=Mark-Simulacrum

RELEASES.md: Use broken_intra_doc_links as an example, not nightly lint

`non_autolinks` has since been renamed and also was unstable at the time
this was written.

3 years agoRollup merge of #84998 - Aaron1011:pretty-unstable-fingerprint, r=Mark-Simulacrum
Yuki Okushi [Tue, 11 May 2021 00:28:04 +0000 (09:28 +0900)]
Rollup merge of #84998 - Aaron1011:pretty-unstable-fingerprint, r=Mark-Simulacrum

Show nicer error when an 'unstable fingerprints' error occurs

An example of the error produced by this PR:

```
error: internal compiler error: encountered incremental compilation error with evaluate_obligation(9f2ad55260c30262-c36667639674ad83)
  |
  = help: This is a known issue with the compiler. Run `cargo clean -p syn` or `cargo clean` to allow your project to compile
  = note: Please follow the instructions below to create a bug report with the provided information

thread 'rustc' panicked at 'Found unstable fingerprints for evaluate_obligation(9f2ad55260c30262-c36667639674ad83): Ok(EvaluatedToOk)', /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:595:9
stack backtrace:
   0: rust_begin_unwind
             at /home/aaron/repos/rust/library/std/src/panicking.rs:493:5
   1: std::panicking::begin_panic_fmt
             at /home/aaron/repos/rust/library/std/src/panicking.rs:435:5
   2: rustc_query_system::query::plumbing::incremental_verify_ich
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:595:9
   3: rustc_query_system::query::plumbing::load_from_disk_and_cache_in_memory
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:557:9
   4: rustc_query_system::query::plumbing::try_execute_query::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:473:21
   5: core::option::Option<T>::map
             at /home/aaron/repos/rust/library/core/src/option.rs:487:29
   6: rustc_query_system::query::plumbing::try_execute_query::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:471:13
   7: stacker::maybe_grow
             at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/stacker-0.1.12/src/lib.rs:55:9
   8: rustc_data_structures::stack::ensure_sufficient_stack
             at /home/aaron/repos/rust/compiler/rustc_data_structures/src/stack.rs:16:5
   9: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_impl/src/plumbing.rs:169:17
  10: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:50
  11: rustc_middle::ty::context::tls::set_tlv
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1720:9
  12: rustc_middle::ty::context::tls::enter_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:9
  13: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_impl/src/plumbing.rs:168:13
  14: rustc_middle::ty::context::tls::with_related_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1780:13
  15: rustc_middle::ty::context::tls::with_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1764:40
  16: rustc_middle::ty::context::tls::with_context_opt
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1753:22
  17: rustc_middle::ty::context::tls::with_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1764:9
  18: rustc_middle::ty::context::tls::with_related_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1777:9
  19: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query
             at /home/aaron/repos/rust/compiler/rustc_query_impl/src/plumbing.rs:157:9
  20: rustc_query_system::query::plumbing::try_execute_query
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:469:22
  21: rustc_query_system::query::plumbing::get_query_impl
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:674:5
  22: rustc_query_system::query::plumbing::get_query
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:785:9
  23: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::evaluate_obligation
             at /home/aaron/repos/rust/compiler/rustc_query_impl/src/plumbing.rs:603:17
  24: rustc_middle::ty::query::TyCtxtAt::evaluate_obligation
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/query/mod.rs:204:17
  25: rustc_middle::ty::query::<impl rustc_middle::ty::context::TyCtxt>::evaluate_obligation
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/query/mod.rs:185:17
  26: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation
             at /home/aaron/repos/rust/compiler/rustc_trait_selection/src/traits/query/evaluate_obligation.rs:72:9
  27: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation_no_overflow
             at /home/aaron/repos/rust/compiler/rustc_trait_selection/src/traits/query/evaluate_obligation.rs:82:15
  28: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt>::predicate_must_hold_modulo_regions
             at /home/aaron/repos/rust/compiler/rustc_trait_selection/src/traits/query/evaluate_obligation.rs:58:9
  29: rustc_trait_selection::traits::type_known_to_meet_bound_modulo_regions
             at /home/aaron/repos/rust/compiler/rustc_trait_selection/src/traits/mod.rs:146:18
  30: rustc_ty_utils::common_traits::is_item_raw::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_ty_utils/src/common_traits.rs:33:9
  31: rustc_infer::infer::InferCtxtBuilder::enter
             at /home/aaron/repos/rust/compiler/rustc_infer/src/infer/mod.rs:582:9
  32: rustc_ty_utils::common_traits::is_item_raw
             at /home/aaron/repos/rust/compiler/rustc_ty_utils/src/common_traits.rs:32:5
  33: rustc_query_system::query::config::QueryVtable<CTX,K,V>::compute
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/config.rs:44:9
  34: rustc_query_system::query::plumbing::load_from_disk_and_cache_in_memory::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:544:67
  35: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/dep_graph/mod.rs:77:46
  36: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:50
  37: rustc_middle::ty::context::tls::set_tlv
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1720:9
  38: rustc_middle::ty::context::tls::enter_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:9
  39: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/dep_graph/mod.rs:77:13
  40: rustc_middle::ty::context::tls::with_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1764:40
  41: rustc_middle::ty::context::tls::with_context_opt
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1753:22
  42: rustc_middle::ty::context::tls::with_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1764:9
  43: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps
             at /home/aaron/repos/rust/compiler/rustc_middle/src/dep_graph/mod.rs:74:9
  44: rustc_query_system::dep_graph::graph::DepGraph<K>::with_ignore
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/dep_graph/graph.rs:167:9
  45: rustc_query_system::query::plumbing::load_from_disk_and_cache_in_memory
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:544:22
  46: rustc_query_system::query::plumbing::try_execute_query::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:473:21
  47: core::option::Option<T>::map
             at /home/aaron/repos/rust/library/core/src/option.rs:487:29
  48: rustc_query_system::query::plumbing::try_execute_query::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:471:13
  49: stacker::maybe_grow
             at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/stacker-0.1.12/src/lib.rs:55:9
  50: rustc_data_structures::stack::ensure_sufficient_stack
             at /home/aaron/repos/rust/compiler/rustc_data_structures/src/stack.rs:16:5
  51: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_impl/src/plumbing.rs:169:17
  52: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:50
  53: rustc_middle::ty::context::tls::set_tlv
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1720:9
  54: rustc_middle::ty::context::tls::enter_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:9
  55: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_impl/src/plumbing.rs:168:13
  56: rustc_middle::ty::context::tls::with_related_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1780:13
  57: rustc_middle::ty::context::tls::with_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1764:40
  58: rustc_middle::ty::context::tls::with_context_opt
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1753:22
  59: rustc_middle::ty::context::tls::with_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1764:9
  60: rustc_middle::ty::context::tls::with_related_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1777:9
  61: <rustc_query_impl::plumbing::QueryCtxt as rustc_query_system::query::QueryContext>::start_query
             at /home/aaron/repos/rust/compiler/rustc_query_impl/src/plumbing.rs:157:9
  62: rustc_query_system::query::plumbing::try_execute_query
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:469:22
  63: rustc_query_system::query::plumbing::get_query_impl
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:674:5
  64: rustc_query_system::query::plumbing::get_query
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/query/plumbing.rs:785:9
  65: rustc_middle::ty::query::TyCtxtAt::is_unpin_raw
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/query/mod.rs:204:17
  66: rustc_middle::ty::util::<impl rustc_middle::ty::TyS>::is_unpin
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/util.rs:727:38
  67: rustc_middle::ty::layout::<impl rustc_target::abi::TyAndLayoutMethods<C> for &rustc_middle::ty::TyS>::pointee_info_at
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/layout.rs:2341:32
  68: rustc_target::abi::TyAndLayout<Ty>::pointee_info_at
             at /home/aaron/repos/rust/compiler/rustc_target/src/abi/mod.rs:1164:9
  69: <rustc_target::abi::call::FnAbi<&rustc_middle::ty::TyS> as rustc_middle::ty::layout::FnAbiExt<C>>::new_internal::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/layout.rs:2781:36
  70: <rustc_target::abi::call::FnAbi<&rustc_middle::ty::TyS> as rustc_middle::ty::layout::FnAbiExt<C>>::new_internal::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/layout.rs:2840:17
  71: rustc_target::abi::call::ArgAbi<Ty>::new
             at /home/aaron/repos/rust/compiler/rustc_target/src/abi/call/mod.rs:457:53
  72: <rustc_target::abi::call::FnAbi<&rustc_middle::ty::TyS> as rustc_middle::ty::layout::FnAbiExt<C>>::new_internal::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/layout.rs:2838:27
  73: <rustc_target::abi::call::FnAbi<&rustc_middle::ty::TyS> as rustc_middle::ty::layout::FnAbiExt<C>>::new_internal::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/layout.rs:2870:32
  74: core::iter::adapters::map::map_fold::{{closure}}
             at /home/aaron/repos/rust/library/core/src/iter/adapters/map.rs:82:28
  75: <core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::fold::enumerate::{{closure}}
             at /home/aaron/repos/rust/library/core/src/iter/adapters/enumerate.rs:104:27
  76: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /home/aaron/repos/rust/library/core/src/ops/function.rs:269:13
  77: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /home/aaron/repos/rust/library/core/src/ops/function.rs:269:13
  78: core::iter::adapters::map::map_fold::{{closure}}
             at /home/aaron/repos/rust/library/core/src/iter/adapters/map.rs:82:21
  79: core::iter::traits::iterator::Iterator::fold
             at /home/aaron/repos/rust/library/core/src/iter/traits/iterator.rs:2146:21
  80: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
             at /home/aaron/repos/rust/library/core/src/iter/adapters/map.rs:122:9
  81: <core::iter::adapters::cloned::Cloned<I> as core::iter::traits::iterator::Iterator>::fold
             at /home/aaron/repos/rust/library/core/src/iter/adapters/cloned.rs:58:9
  82: <core::iter::adapters::chain::Chain<A,B> as core::iter::traits::iterator::Iterator>::fold
             at /home/aaron/repos/rust/library/core/src/iter/adapters/chain.rs:119:19
  83: <core::iter::adapters::chain::Chain<A,B> as core::iter::traits::iterator::Iterator>::fold
             at /home/aaron/repos/rust/library/core/src/iter/adapters/chain.rs:119:19
  84: <core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::fold
             at /home/aaron/repos/rust/library/core/src/iter/adapters/enumerate.rs:110:9
  85: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
             at /home/aaron/repos/rust/library/core/src/iter/adapters/map.rs:122:9
  86: core::iter::traits::iterator::Iterator::for_each
             at /home/aaron/repos/rust/library/core/src/iter/traits/iterator.rs:776:9
  87: <alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend
             at /home/aaron/repos/rust/library/alloc/src/vec/spec_extend.rs:40:17
  88: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter
             at /home/aaron/repos/rust/library/alloc/src/vec/spec_from_iter_nested.rs:56:9
  89: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
             at /home/aaron/repos/rust/library/alloc/src/vec/spec_from_iter.rs:36:9
  90: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter
             at /home/aaron/repos/rust/library/alloc/src/vec/mod.rs:2448:9
  91: core::iter::traits::iterator::Iterator::collect
             at /home/aaron/repos/rust/library/core/src/iter/traits/iterator.rs:1788:9
  92: <rustc_target::abi::call::FnAbi<&rustc_middle::ty::TyS> as rustc_middle::ty::layout::FnAbiExt<C>>::new_internal
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/layout.rs:2864:19
  93: <rustc_target::abi::call::FnAbi<&rustc_middle::ty::TyS> as rustc_middle::ty::layout::FnAbiExt<C>>::of_instance
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/layout.rs:2670:9
  94: rustc_codegen_llvm::mono_item::<impl rustc_codegen_ssa::traits::declare::PreDefineMethods for rustc_codegen_llvm::context::CodegenCx>::predefine_fn
             at /home/aaron/repos/rust/compiler/rustc_codegen_llvm/src/mono_item.rs:57:22
  95: <rustc_middle::mir::mono::MonoItem as rustc_codegen_ssa::mono_item::MonoItemExt>::predefine
             at /home/aaron/repos/rust/compiler/rustc_codegen_ssa/src/mono_item.rs:76:17
  96: rustc_codegen_llvm::base::compile_codegen_unit::module_codegen
             at /home/aaron/repos/rust/compiler/rustc_codegen_llvm/src/base.rs:122:17
  97: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/dep_graph/graph.rs:235:62
  98: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/dep_graph/mod.rs:77:46
  99: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:50
 100: rustc_middle::ty::context::tls::set_tlv
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1720:9
 101: rustc_middle::ty::context::tls::enter_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:9
 102: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/dep_graph/mod.rs:77:13
 103: rustc_middle::ty::context::tls::with_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1764:40
 104: rustc_middle::ty::context::tls::with_context_opt
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1753:22
 105: rustc_middle::ty::context::tls::with_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1764:9
 106: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps
             at /home/aaron/repos/rust/compiler/rustc_middle/src/dep_graph/mod.rs:74:9
 107: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/dep_graph/graph.rs:235:26
 108: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task
             at /home/aaron/repos/rust/compiler/rustc_query_system/src/dep_graph/graph.rs:205:9
 109: rustc_codegen_llvm::base::compile_codegen_unit
             at /home/aaron/repos/rust/compiler/rustc_codegen_llvm/src/base.rs:103:9
 110: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::ExtraBackendMethods>::compile_codegen_unit
             at /home/aaron/repos/rust/compiler/rustc_codegen_llvm/src/lib.rs:109:9
 111: rustc_codegen_ssa::base::codegen_crate
             at /home/aaron/repos/rust/compiler/rustc_codegen_ssa/src/base.rs:655:38
 112: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
             at /home/aaron/repos/rust/compiler/rustc_codegen_llvm/src/lib.rs:270:18
 113: rustc_interface::passes::start_codegen::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/passes.rs:1021:9
 114: rustc_data_structures::profiling::VerboseTimingGuard::run
             at /home/aaron/repos/rust/compiler/rustc_data_structures/src/profiling.rs:573:9
 115: rustc_session::utils::<impl rustc_session::session::Session>::time
             at /home/aaron/repos/rust/compiler/rustc_session/src/utils.rs:16:9
 116: rustc_interface::passes::start_codegen
             at /home/aaron/repos/rust/compiler/rustc_interface/src/passes.rs:1020:19
 117: rustc_interface::queries::Queries::ongoing_codegen::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/queries.rs:296:20
 118: rustc_interface::passes::QueryContext::enter::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/passes.rs:755:42
 119: rustc_middle::ty::context::tls::enter_context::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:50
 120: rustc_middle::ty::context::tls::set_tlv
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1720:9
 121: rustc_middle::ty::context::tls::enter_context
             at /home/aaron/repos/rust/compiler/rustc_middle/src/ty/context.rs:1736:9
 122: rustc_interface::passes::QueryContext::enter
             at /home/aaron/repos/rust/compiler/rustc_interface/src/passes.rs:755:9
 123: rustc_interface::queries::Queries::ongoing_codegen::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/queries.rs:287:13
 124: rustc_interface::queries::Query<T>::compute
             at /home/aaron/repos/rust/compiler/rustc_interface/src/queries.rs:40:28
 125: rustc_interface::queries::Queries::ongoing_codegen
             at /home/aaron/repos/rust/compiler/rustc_interface/src/queries.rs:285:9
 126: rustc_driver::run_compiler::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_driver/src/lib.rs:442:13
 127: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
             at /home/aaron/repos/rust/compiler/rustc_interface/src/queries.rs:428:19
 128: rustc_driver::run_compiler::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_driver/src/lib.rs:337:22
 129: rustc_interface::interface::create_compiler_and_run::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/interface.rs:208:13
 130: rustc_span::with_source_map
             at /home/aaron/repos/rust/compiler/rustc_span/src/lib.rs:788:5
 131: rustc_interface::interface::create_compiler_and_run
             at /home/aaron/repos/rust/compiler/rustc_interface/src/interface.rs:202:5
 132: rustc_interface::interface::run_compiler::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/interface.rs:224:12
 133: rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals::{{closure}}::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/util.rs:155:13
 134: scoped_tls::ScopedKey<T>::set
             at /home/aaron/.cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137:9
 135: rustc_span::with_session_globals
             at /home/aaron/repos/rust/compiler/rustc_span/src/lib.rs:105:5
 136: rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/util.rs:153:9
 137: rustc_interface::util::scoped_thread::{{closure}}
             at /home/aaron/repos/rust/compiler/rustc_interface/src/util.rs:128:24
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.54.0-dev running on x86_64-unknown-linux-gnu

note: compiler flags: -C opt-level=3 -C embed-bitcode=no -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `quote::Tokens: std::marker::Unpin`
#1 [is_unpin_raw] computing whether `quote::Tokens` is `Unpin`
end of query stack
error: aborting due to previous error

error: could not compile `syn`

To learn more, run the command again with --verbose.
```

I've left in the panic and ICE following the pretty error, so that we still have all of the debug information available in a bug report.

This message can be reproduced by cloning the repository `https://github.com/Aaron1011/syn-crash`, and running the following shell script (with a `rustup override` set in the directory):

```
set -xe
cargo clean -p syn
cargo clean --release -p syn

git checkout minimize
cargo build --release -j 1

git checkout minimize-change
cargo build --release -j 1
```

r? ``@Mark-Simulacrum``

3 years agoRollup merge of #84783 - jyn514:fmt-one, r=Mark-Simulacrum
Yuki Okushi [Tue, 11 May 2021 00:28:04 +0000 (09:28 +0900)]
Rollup merge of #84783 - jyn514:fmt-one, r=Mark-Simulacrum

Allow formatting specific subdirectories

Fixes https://github.com/rust-lang/rust/issues/71094.

3 years agoRollup merge of #84777 - jyn514:rustdoc-parallel, r=Mark-Simulacrum
Yuki Okushi [Tue, 11 May 2021 00:28:03 +0000 (09:28 +0900)]
Rollup merge of #84777 - jyn514:rustdoc-parallel, r=Mark-Simulacrum

Apply `--cfg parallel_compiler` when documenting

This also reverts commit 9823c2cc700fea541bf2670fcee93af662b63022 working around the bug.

Fixes https://github.com/rust-lang/rust/issues/82301.

3 years agoAuto merge of #85012 - FabianWolff:struct-rec, r=davidtwco
bors [Tue, 11 May 2021 00:00:53 +0000 (00:00 +0000)]
Auto merge of #85012 - FabianWolff:struct-rec, r=davidtwco

Fix stack overflow when checking for structural recursion

This pull request aims to fix #74224 and fix #84611. The current logic for detecting ADTs with structural recursion is flawed because it only looks at the root type, and then for exact matches. What I mean by this is that for examples such as:
```rust
struct A<T> {
    x: T,
    y: A<A<T>>,
}

struct B {
    z: A<usize>
}

fn main() {}
```
When checking `A`, the compiler correctly determines that it has an infinite size (because the "root" type is `A`, and `A` occurs, albeit with different type arguments, as a nested type in `A`).

However, when checking `B`, it also recurses into `A`, but now `B` is the root type, and it only checks for _exact_ matches of `A`, but since `A` never precisely contains itself (only `A<A<T>>`, `A<A<A<T>>>`, etc.), an endless recursion ensues until the stack overflows.

In this PR, I have attempted to fix this behavior by implementing a two-phase checking: When checking `B`, my code first checks `A` _separately_ and stops if `A` already turns out to be infinite. If not (such as for `Option<T>`), the second phase checks whether the root type (`B`) is ever nested inside itself, e.g.:
```rust
struct Foo { x: Option<Option<Foo>> }
```

Special care needs to be taken for mutually recursive types, e.g.:
```rust
struct A<T> {
    z: T,
    x: B<T>,
}

struct B<T> {
    y: A<T>
}
```
Here, both `A` and `B` both _are_ `SelfRecursive` and _contain_ a recursive type. The current behavior, which I have maintained, is to treat both `A` and `B` as `SelfRecursive`, and accordingly report errors for both.

3 years agoRemove an invalid `#[doc(inline)]`
LeSeulArtichaut [Mon, 10 May 2021 22:03:44 +0000 (00:03 +0200)]
Remove an invalid `#[doc(inline)]`

3 years agoShow nicer error when an 'unstable fingerprints' error occurs
Aaron Hill [Thu, 6 May 2021 17:44:17 +0000 (13:44 -0400)]
Show nicer error when an 'unstable fingerprints' error occurs

3 years agoAuto merge of #84677 - CDirkx:pal, r=Mark-Simulacrum
bors [Mon, 10 May 2021 21:32:13 +0000 (21:32 +0000)]
Auto merge of #84677 - CDirkx:pal, r=Mark-Simulacrum

Fix `tidy` platform-specific code check

I noticed new platform-specific code was introduced outside of `std::sys` ([example](https://github.com/rust-lang/rust/blob/master/library/std/src/thread/available_concurrency.rs)), which should have been checked against by `tidy`. Apparently there are 2 problems with the current check implementation:

- It ignores everything after encountering "mod tests", which is often at the very top of a file.
- There was a bug where when checking the byte immediately before a found string, the first byte of the file was checked instead.

I fixed the bug and made excluding tests a bit more robust by instead adding the following rules:
- Files with a path containing either `tests` or `benches` are excluded.
- A `cfg(...)` containing `test` is excluded.

(Tests are excluded because almost all tests have something like `#[cfg(not(target_os = "emscripten"))]` somewhere.)

The fixed check found some more cases of platform-specific code; for now I have explicitly excluded them and added a FIXME stating that the platform-specific code must be moved to `sys`.

3 years agoAuto merge of #85156 - GuillaumeGomez:rollup-8u4h34g, r=GuillaumeGomez
bors [Mon, 10 May 2021 18:28:24 +0000 (18:28 +0000)]
Auto merge of #85156 - GuillaumeGomez:rollup-8u4h34g, r=GuillaumeGomez

Rollup of 4 pull requests

Successful merges:

 - #84465 (rustdoc: Implement `is_primitive` in terms of `primitive_type()`)
 - #85118 (Use an SVG image for clipboard instead of unicode character)
 - #85148 (Fix source code line number display and make it clickable again)
 - #85152 (Adjust target search algorithm for rustlib path)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

3 years agoRollup merge of #85152 - nagisa:target-search-rustlib, r=Mark-Simulacrum
Guillaume Gomez [Mon, 10 May 2021 18:05:27 +0000 (20:05 +0200)]
Rollup merge of #85152 - nagisa:target-search-rustlib, r=Mark-Simulacrum

Adjust target search algorithm for rustlib path

With this the concerns expressed in #83800 should be addressed.

r? `@Mark-Simulacrum`

3 years agoRollup merge of #85148 - GuillaumeGomez:source-code-line-number, r=jsha
Guillaume Gomez [Mon, 10 May 2021 18:05:26 +0000 (20:05 +0200)]
Rollup merge of #85148 - GuillaumeGomez:source-code-line-number, r=jsha

Fix source code line number display and make it clickable again

Fixes https://github.com/rust-lang/rust/issues/85119.

I used the same logic we're using for other codeblocks: putting the line number `<span>`s into the `example-wrap` directly and then add `display: inline-flex` on `example-wrap`.

r? `@jsha`

3 years agoRollup merge of #85118 - GuillaumeGomez:clipboard-svg, r=Nemo157
Guillaume Gomez [Mon, 10 May 2021 18:05:25 +0000 (20:05 +0200)]
Rollup merge of #85118 - GuillaumeGomez:clipboard-svg, r=Nemo157

Use an SVG image for clipboard instead of unicode character

Linked to https://github.com/rust-lang/docs.rs/pull/1394.

cc `@jsha`
r? `@Nemo157`

3 years agoRollup merge of #84465 - jyn514:primitive, r=GuillaumeGomez
Guillaume Gomez [Mon, 10 May 2021 18:05:24 +0000 (20:05 +0200)]
Rollup merge of #84465 - jyn514:primitive, r=GuillaumeGomez

rustdoc: Implement `is_primitive` in terms of `primitive_type()`

Previously, they disagreed about what types were primitives.

r? `@GuillaumeGomez`

3 years agoAdd documentation
LeSeulArtichaut [Mon, 10 May 2021 16:38:09 +0000 (18:38 +0200)]
Add documentation

3 years agoAdjust target search algorithm for rustlib path
Simonas Kazlauskas [Mon, 10 May 2021 16:15:19 +0000 (19:15 +0300)]
Adjust target search algorithm for rustlib path

With this the concerns expressed in #83800 should be addressed.

3 years agoImplement changes suggested by tmiasko and davidtwco
Fabian Wolff [Mon, 10 May 2021 15:47:50 +0000 (17:47 +0200)]
Implement changes suggested by tmiasko and davidtwco

3 years agoAuto merge of #85150 - Dylan-DPC:rollup-q26gbx3, r=Dylan-DPC
bors [Mon, 10 May 2021 15:08:08 +0000 (15:08 +0000)]
Auto merge of #85150 - Dylan-DPC:rollup-q26gbx3, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #85050 (Fix suggestions for missing return type lifetime specifiers)
 - #85075 (Improve "panic message is not a string literal" warning)
 - #85096 (Make unchecked_{add,sub,mul} inherent methods unstably const)
 - #85112 (ensure failing promoteds in const/static bodies are handled correctly)
 - #85146 (Provide io::Seek::rewind)
 - #85147 (:arrow_up: rust-analyzer)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

3 years agoUse an SVG image for clipboard instead of unicode character
Guillaume Gomez [Sun, 9 May 2021 18:41:24 +0000 (20:41 +0200)]
Use an SVG image for clipboard instead of unicode character

3 years agoRollup merge of #85147 - lnicola:rust-analyzer-2021-05-10, r=jonas-schievink
Dylan DPC [Mon, 10 May 2021 14:15:06 +0000 (16:15 +0200)]
Rollup merge of #85147 - lnicola:rust-analyzer-2021-05-10, r=jonas-schievink

:arrow_up: rust-analyzer

3 years agoRollup merge of #85146 - ijackson:seek-rewind, r=m-ou-se
Dylan DPC [Mon, 10 May 2021 14:15:05 +0000 (16:15 +0200)]
Rollup merge of #85146 - ijackson:seek-rewind, r=m-ou-se

Provide io::Seek::rewind

Using `Seek::seek` is slightly clumsy because of the need to write (or import) `std::io::SeekFrom` to get at `SeekStart`.  C already has `rewind` (although with broken error handling); we should have it too.

I'm motivated to do this because I've just found myself copy-pasting my 5-line extension trait between projects.

That the example ends up using `OpenOptions` makes this look like a niche use case, but it is very common to rewind temporary files.  `tempfile` isn't available for use in this example or it would have looked shorter and more natural.

If this gets a positive reception I will open a tracking issue and update the feature gate.

3 years agoRollup merge of #85112 - RalfJung:promoted-errors, r=oli-obk
Dylan DPC [Mon, 10 May 2021 14:15:03 +0000 (16:15 +0200)]
Rollup merge of #85112 - RalfJung:promoted-errors, r=oli-obk

ensure failing promoteds in const/static bodies are handled correctly

`const`/`static` bodies are the one case where we still promote code that might fail to evaluate. Ensure that this is handled correctly; in particular, it must not fail compilation.

`src/test/ui/consts/const-eval/erroneous-const.rs` ensures that when a non-promoted fails to evaluate, we *do* show an error.

r? `@oli-obk`

3 years agoRollup merge of #85096 - clarfonthey:const_unchecked, r=oli-obk
Dylan DPC [Mon, 10 May 2021 14:15:02 +0000 (16:15 +0200)]
Rollup merge of #85096 - clarfonthey:const_unchecked, r=oli-obk

Make unchecked_{add,sub,mul} inherent methods unstably const

The intrinsics are marked as being stably const (even though they're not stable by nature of being intrinsics), but the currently-unstable inherent versions are not marked as const. This fixes this inconsistency. Split out of #85017,

r? `@oli-obk`

3 years agoRollup merge of #85075 - ptrojahn:panic_warning, r=jackh726
Dylan DPC [Mon, 10 May 2021 14:15:01 +0000 (16:15 +0200)]
Rollup merge of #85075 - ptrojahn:panic_warning, r=jackh726

Improve "panic message is not a string literal" warning

This warning always referenced panic! even in case of an
assert. Related to #84656

3 years agoRollup merge of #85050 - FabianWolff:issue-84592, r=jackh726
Dylan DPC [Mon, 10 May 2021 14:15:00 +0000 (16:15 +0200)]
Rollup merge of #85050 - FabianWolff:issue-84592, r=jackh726

Fix suggestions for missing return type lifetime specifiers

This pull request aims to fix #84592. The issue is that the current code seems to assume that there is only a single relevant span pointing to the missing lifetime, and only looks at the first one:
https://github.com/rust-lang/rust/blob/e5f83d24aee866a14753a7cedbb4e301dfe5bef5/compiler/rustc_resolve/src/late/lifetimes.rs#L2959

This is incorrect, though, and leads to incorrect error messages and invalid suggestions. For instance, the example from #84592:
```rust
struct TwoLifetimes<'x, 'y> {
    x: &'x (),
    y: &'y (),
}

fn two_lifetimes_needed(a: &(), b: &()) -> TwoLifetimes<'_, '_> {
    TwoLifetimes { x: &(), y: &() }
}
```
currently leads to:
```
error[E0106]: missing lifetime specifiers
 --> src/main.rs:6:57
  |
6 | fn two_lifetimes_needed(a: &(), b: &()) -> TwoLifetimes<'_, '_> {
  |                            ---     ---                  ^^ expected 2 lifetime parameters
  |
  = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `a` or `b`
help: consider introducing a named lifetime parameter
  |
6 | fn two_lifetimes_needed<'a>(a: &'a (), b: &'a ()) -> TwoLifetimes<'_<'a, 'a>, '_> {
  |                        ^^^^    ^^^^^^     ^^^^^^                  ^^^^^^^^^^
```
There are two problems:
- The error message is wrong. There is only _one_ lifetime parameter expected at the location pointed to by the error message (and another one at a separate location).
- The suggestion is incorrect and will not lead to correct code.

With the changes in this PR, I get the following output:
```
error[E0106]: missing lifetime specifiers
 --> p.rs:6:57
  |
6 | fn two_lifetimes_needed(a: &(), b: &()) -> TwoLifetimes<'_, '_> {
  |                            ---     ---                  ^^  ^^ expected named lifetime parameter
  |                                                         |
  |                                                         expected named lifetime parameter
  |
  = help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from `a` or `b`
help: consider introducing a named lifetime parameter
  |
6 | fn two_lifetimes_needed<'a>(a: &'a (), b: &'a ()) -> TwoLifetimes<'a, 'a> {
  |                        ^^^^    ^^^^^^     ^^^^^^                  ^^  ^^

error: aborting due to previous error

For more information about this error, try `rustc --explain E0106`.
```
Mainly, I changed `add_missing_lifetime_specifiers_label()` to receive a _vector_ of spans (and counts) instead of just one, and adjusted its body accordingly.

3 years agoMore minor fixes suggested by @jackh726
Fabian Wolff [Mon, 10 May 2021 12:59:54 +0000 (14:59 +0200)]
More minor fixes suggested by @jackh726

3 years agoio::Seek::rewind: Set tracking issue
Ian Jackson [Mon, 10 May 2021 12:55:13 +0000 (13:55 +0100)]
io::Seek::rewind: Set tracking issue

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
3 years agoFix typo in doc
Ian Jackson [Mon, 10 May 2021 12:50:56 +0000 (13:50 +0100)]
Fix typo in doc

Co-authored-by: Mara Bos <m-ou.se@m-ou.se>
3 years agoupdate perf version used for PGO
Ralf Jung [Mon, 10 May 2021 12:39:28 +0000 (14:39 +0200)]
update perf version used for PGO

3 years agoAuto merge of #85079 - petrochenkov:sessclean, r=davidtwco
bors [Mon, 10 May 2021 12:26:46 +0000 (12:26 +0000)]
Auto merge of #85079 - petrochenkov:sessclean, r=davidtwco

rustc_session: Move more option building code from the `options!` macro

The moved code doesn't need to be generated by a macro, it can use a regular (generic) function and type aliases instead.

(The refactoring is salvaged from a branch with different now abandoned work.)

3 years agoAdd test for source code clickable line number
Guillaume Gomez [Mon, 10 May 2021 12:12:00 +0000 (14:12 +0200)]
Add test for source code clickable line number

3 years agoFix line number not being clickable on source pages
Guillaume Gomez [Mon, 10 May 2021 09:39:53 +0000 (11:39 +0200)]
Fix line number not being clickable on source pages

3 years ago:arrow_up: rust-analyzer
Laurențiu Nicola [Mon, 10 May 2021 12:11:01 +0000 (15:11 +0300)]
:arrow_up: rust-analyzer

3 years agoio::Seek: Provide rewind()
Ian Jackson [Mon, 10 May 2021 11:58:03 +0000 (12:58 +0100)]
io::Seek: Provide rewind()

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
3 years agoio::Seek: Mention that seeking can fail due to buffer flush fail
Ian Jackson [Mon, 10 May 2021 11:56:35 +0000 (12:56 +0100)]
io::Seek: Mention that seeking can fail due to buffer flush fail

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
3 years agorustc_session: Use `Iterator::find` instead of manual search
Vadim Petrochenkov [Mon, 10 May 2021 11:52:31 +0000 (14:52 +0300)]
rustc_session: Use `Iterator::find` instead of manual search

3 years agorustc_session: Move more option building code from the `options!` macro
Vadim Petrochenkov [Fri, 7 May 2021 12:18:19 +0000 (15:18 +0300)]
rustc_session: Move more option building code from the `options!` macro

3 years agoDocument Rc::from
Deadbeef [Mon, 10 May 2021 10:46:13 +0000 (18:46 +0800)]
Document Rc::from

3 years agoAuto merge of #85053 - camsteffen:duplicate-lint, r=davidtwco
bors [Mon, 10 May 2021 09:45:28 +0000 (09:45 +0000)]
Auto merge of #85053 - camsteffen:duplicate-lint, r=davidtwco

Fix duplicate unknown lint errors

Fixes rust-lang/rust-clippy#6602

3 years agoAuto merge of #85104 - hi-rustin:rustin-patch-typo, r=jonas-schievink
bors [Mon, 10 May 2021 07:15:23 +0000 (07:15 +0000)]
Auto merge of #85104 - hi-rustin:rustin-patch-typo, r=jonas-schievink

Fix typo

3 years agoAuto merge of #85074 - GuillaumeGomez:end-toggle-migration, r=jsha
bors [Mon, 10 May 2021 04:05:55 +0000 (04:05 +0000)]
Auto merge of #85074 - GuillaumeGomez:end-toggle-migration, r=jsha

Migrate top doc and non-exhaustive toggles to details tag

Fixes #83332.

r? `@jsha`

3 years agoremove big match
hamidreza kalbasi [Mon, 10 May 2021 01:23:42 +0000 (05:53 +0430)]
remove big match

3 years agoAuto merge of #84507 - crlf0710:codegen_nonlocal_main_wrapper, r=nagisa
bors [Mon, 10 May 2021 00:42:31 +0000 (00:42 +0000)]
Auto merge of #84507 - crlf0710:codegen_nonlocal_main_wrapper, r=nagisa

Add primary marker on codegen unit and generate main wrapper on primary codegen.

This is the codegen part of changes extracted from #84062.

This add a marker called `primary` on each codegen units, where exactly one codegen unit will be `primary = true` at a time. This specific codegen unit will take charge of generating `main` wrapper when `main` is imported from a foreign crate after the implementation of RFC 1260.

cc #28937

I'm not sure who should i ask for review for codegen changes, so feel free to reassign.
r? `@nagisa`

3 years agomove logic to a function
hamidreza kalbasi [Sun, 9 May 2021 23:01:31 +0000 (03:31 +0430)]
move logic to a function

3 years agoUpdate rustdoc test
Guillaume Gomez [Sat, 8 May 2021 18:20:37 +0000 (20:20 +0200)]
Update rustdoc test

3 years agoEnd toggle migration
Guillaume Gomez [Sat, 8 May 2021 12:21:57 +0000 (14:21 +0200)]
End toggle migration

3 years agoAuto merge of #83800 - xobs:impl-16351-nightly, r=nagisa
bors [Sun, 9 May 2021 22:01:26 +0000 (22:01 +0000)]
Auto merge of #83800 - xobs:impl-16351-nightly, r=nagisa

Add default search path to `Target::search()`

The function `Target::search()` accepts a target triple and returns a `Target` struct defining the requested target.

There is a `// FIXME 16351: add a sane default search path?` comment that indicates it is desirable to include some sort of default. This was raised in https://github.com/rust-lang/rust/issues/16351 which was closed without any resolution.

https://github.com/rust-lang/rust/pull/31117 was proposed, however that has platform-specific logic that is unsuitable for systems without `/etc/`.

This patch implements the suggestion raised in https://github.com/rust-lang/rust/issues/16351#issuecomment-180878193 where a `target.json` file may be placed in `$(rustc --print sysroot)/lib/rustlib/<target-triple>/target.json`. This allows shipping a toolchain distribution as a single file that gets extracted to the sysroot.

3 years agoFix `Step` feature flag, make tidy lint more useful to find things like this
ltdk [Sun, 9 May 2021 21:13:22 +0000 (17:13 -0400)]
Fix `Step` feature flag, make tidy lint more useful to find things like this

3 years agoImplement @jackh726's suggestions
Fabian Wolff [Sun, 9 May 2021 20:31:49 +0000 (22:31 +0200)]
Implement @jackh726's suggestions

3 years agoMake unchecked_{add,sub,mul} inherent methods unstably const
ltdk [Sun, 9 May 2021 00:18:44 +0000 (20:18 -0400)]
Make unchecked_{add,sub,mul} inherent methods unstably const

3 years agoAuto merge of #85065 - Mark-Simulacrum:preds-no-alloc, r=jackh726
bors [Sun, 9 May 2021 19:01:05 +0000 (19:01 +0000)]
Auto merge of #85065 - Mark-Simulacrum:preds-no-alloc, r=jackh726

Avoid predecessors having Drop impls

Should be a simple win - but let's make sure with perf.

3 years agoRemove outdated FIXME for download-rustc
Joshua Nelson [Sun, 9 May 2021 16:24:59 +0000 (12:24 -0400)]
Remove outdated FIXME for download-rustc

3 years agoAuto merge of #83894 - nikic:newpm, r=nagisa
bors [Sun, 9 May 2021 16:19:21 +0000 (16:19 +0000)]
Auto merge of #83894 - nikic:newpm, r=nagisa

Improve support for NewPM

This adds various missing bits of support for NewPM and allows us to successfully run stage 2 tests with NewPM enabled.

This does not yet enable NewPM by default, as there are still known issue on LLVM 12 (such as a weak fat LTO pipeline). The plan is to make the switch after we update to LLVM 13.

3 years agoImprove "panic message is not a string literal" warning
Paul Trojahn [Fri, 7 May 2021 17:09:15 +0000 (19:09 +0200)]
Improve "panic message is not a string literal" warning

This warning always referenced panic! even in case of an
assert. Related to #84656

3 years agomore erroneous-const tests
Ralf Jung [Sun, 9 May 2021 14:07:00 +0000 (16:07 +0200)]
more erroneous-const tests

3 years agoAuto merge of #83596 - jyn514:session-dead-code, r=oli-obk
bors [Sun, 9 May 2021 13:38:17 +0000 (13:38 +0000)]
Auto merge of #83596 - jyn514:session-dead-code, r=oli-obk

Remove dead or useless code from Session

This is a more principled follow-up to https://github.com/rust-lang/rust/pull/83185#discussion_r601753839.

- Rename `Parser::span_fatal_err` -> `Parser::span_err`
- Remove some unnecessary uses of `struct_span_fatal`
- Make `Diagnostic::span_fatal` unconditionally raise an error
- Add `impl Deref<Target = Handler>` for Session and remove all functions that are exactly the same as their Handler counterparts
- Note why `Handler::fatal` is different from `Sesssion::fatal`
- Remove unused `opt_span_warn` function

r? `@oli-obk` or `@estebank`

3 years agoensure failing promoteds in const/static bodies are handled correctly
Ralf Jung [Sun, 9 May 2021 12:56:19 +0000 (14:56 +0200)]
ensure failing promoteds in const/static bodies are handled correctly

3 years agoremove const_fn feature gate
Ralf Jung [Fri, 7 May 2021 16:56:16 +0000 (18:56 +0200)]
remove const_fn feature gate

3 years agoAuto merge of #85093 - camelid:remove-fake-expect_local, r=GuillaumeGomez
bors [Sun, 9 May 2021 11:17:17 +0000 (11:17 +0000)]
Auto merge of #85093 - camelid:remove-fake-expect_local, r=GuillaumeGomez

Remove `FakeDefId::expect_local()`

This function returned a fake `DefIndex`, with no indication that it was
fake, when it was provided with a `FakeDefId::Fake`. Every use of the
function uses the returned `DefIndex` in a call to
`tcx.local_def_id_to_hir_id()`, which I'm pretty sure would panic if it
were given a fake `DefIndex`.

I removed the function and replaced all calls to it with a call to
`expect_real()` followed by `DefId::expect_local()` (that's a function
on the *real* `DefId`).

3 years agoFix typo
hi-rustin [Sun, 9 May 2021 04:24:58 +0000 (12:24 +0800)]
Fix typo

3 years agoRemove unused `opt_span_warn` function
Joshua Nelson [Sun, 28 Mar 2021 03:00:34 +0000 (23:00 -0400)]
Remove unused `opt_span_warn` function

3 years agoNote why `Handler::fatal` is different from `Sesssion::fatal`
Joshua Nelson [Sun, 28 Mar 2021 02:58:25 +0000 (22:58 -0400)]
Note why `Handler::fatal` is different from `Sesssion::fatal`

3 years agoMake `Diagnostic::span_fatal` unconditionally raise an error
Joshua Nelson [Sun, 28 Mar 2021 02:45:01 +0000 (22:45 -0400)]
Make `Diagnostic::span_fatal` unconditionally raise an error

It had no callers which didn't immediately call `raise()`, and this
unifies the behavior with `Session`.

3 years agoRemove some unnecessary uses of `struct_span_fatal`
Joshua Nelson [Sun, 28 Mar 2021 02:48:21 +0000 (22:48 -0400)]
Remove some unnecessary uses of `struct_span_fatal`

All of them immediately called `emit()` then `raise()`, so they could
just call `span_fatal` directly.

3 years agoRename `Parser::span_fatal_err` -> `Parser::span_err`
Joshua Nelson [Sun, 28 Mar 2021 02:46:50 +0000 (22:46 -0400)]
Rename `Parser::span_fatal_err` -> `Parser::span_err`

The name was misleading, it wasn't actually a fatal error.

3 years agoAdd primary marker on codegen unit to take charge of main_wrapper for non-local cases.
Charles Lew [Sat, 24 Apr 2021 05:16:34 +0000 (13:16 +0800)]
Add primary marker on codegen unit to take charge of main_wrapper for non-local cases.

3 years agoTry to fix issue 68049
hamidreza kalbasi [Sun, 9 May 2021 00:56:59 +0000 (05:26 +0430)]
Try to fix issue 68049

3 years agoAuto merge of #83089 - Aaron1011:bootstrap-semi, r=Mark-Simulacrum
bors [Sat, 8 May 2021 23:11:45 +0000 (23:11 +0000)]
Auto merge of #83089 - Aaron1011:bootstrap-semi, r=Mark-Simulacrum

Enable `-W semicolon_in_expressions_from_macros` in bootstrap

Now that stdarch has been updated, we can do this without breaking the
build.

3 years agoAdd `#[track_caller]` to `FakeDefId::expect_real()`
Camelid [Sat, 8 May 2021 22:14:21 +0000 (15:14 -0700)]
Add `#[track_caller]` to `FakeDefId::expect_real()`

Now, in the case that the function is not inlined, the panic location
will be the caller's location, which is more helpful since the panic is
not `expect_real()`'s fault.

3 years agoRemove `FakeDefId::expect_local()`
Camelid [Sat, 8 May 2021 22:03:15 +0000 (15:03 -0700)]
Remove `FakeDefId::expect_local()`

This function returned a fake `DefIndex`, with no indication that it was
fake, when it was provided with a `FakeDefId::Fake`. Every use of the
function uses the returned `DefIndex` in a call to
`tcx.local_def_id_to_hir_id()`, which I'm pretty sure would panic if it
were given a fake `DefIndex`.

I removed the function and replaced all calls to it with a call to
`expect_real()` followed by `DefId::expect_local()` (that's a function
on the *real* `DefId`).

3 years agoEnable `-W semicolon_in_expressions_from_macros` in bootstrap
Aaron Hill [Sat, 13 Mar 2021 17:46:33 +0000 (12:46 -0500)]
Enable `-W semicolon_in_expressions_from_macros` in bootstrap

Now that stdarch has been updated, we can do this without breaking the
build.

3 years agoAuto merge of #83278 - Amanieu:bump_stdarch, r=Mark-Simulacrum
bors [Sat, 8 May 2021 18:41:16 +0000 (18:41 +0000)]
Auto merge of #83278 - Amanieu:bump_stdarch, r=Mark-Simulacrum

Bump stdarch submodule

Major changes:
- More AVX-512 intrinsics.
- More ARM & AArch64 NEON intrinsics.
- Updated unstable WASM intrinsics to latest draft standards.
- Intrinsics that previously used `#[rustc_args_required_const]` now use const generics. See #83167 for more details.
- `std_detect` is now a separate crate instead of a submodule of `std`.

3 years agoBump stdarch submodule
Amanieu d'Antras [Tue, 13 Apr 2021 03:32:11 +0000 (04:32 +0100)]
Bump stdarch submodule

3 years agoError on conflicting `#[doc(inline)]`/`#[doc(no_inline)]` attributes
LeSeulArtichaut [Sat, 8 May 2021 14:57:10 +0000 (16:57 +0200)]
Error on conflicting `#[doc(inline)]`/`#[doc(no_inline)]` attributes

3 years agoEmit `invalid_doc_attributes` warnings in more cases
LeSeulArtichaut [Sat, 8 May 2021 14:25:00 +0000 (16:25 +0200)]
Emit `invalid_doc_attributes` warnings in more cases

3 years agoAuto merge of #85072 - hyd-dev:miri, r=RalfJung
bors [Sat, 8 May 2021 12:11:01 +0000 (12:11 +0000)]
Auto merge of #85072 - hyd-dev:miri, r=RalfJung

Update Miri

Fixes #85027

r? `@RalfJung`

3 years agoUpdate Miri
hyd-dev [Sat, 8 May 2021 11:53:15 +0000 (19:53 +0800)]
Update Miri

3 years agoAuto merge of #84470 - jyn514:lints, r=GuillaumeGomez
bors [Sat, 8 May 2021 09:46:18 +0000 (09:46 +0000)]
Auto merge of #84470 - jyn514:lints, r=GuillaumeGomez

rustdoc: Stop special casing `broken_intra_doc_links` unnecessarily

3 years agoUpdate LLVM submodule
Nikita Popov [Sat, 8 May 2021 09:01:09 +0000 (11:01 +0200)]
Update LLVM submodule

This updates the LLVM submodule with recent LLVM 12.x fixes. In
particular, it resolves an assertion failure when targeting
AArch64 at O0.

3 years agoSupport -C passes in NewPM
Nikita Popov [Mon, 5 Apr 2021 13:37:11 +0000 (15:37 +0200)]
Support -C passes in NewPM

And report an error if parsing the additional pass pipeline fails.
Threading through the error accounts for most of the changes here.

3 years agoDon't force -O1 with ThinLTO
Nikita Popov [Mon, 5 Apr 2021 09:12:45 +0000 (11:12 +0200)]
Don't force -O1 with ThinLTO

This doesn't seem to be necessary anymore, although I don't know
at which point or why that changed.

Forcing -O1 makes some tests fail under NewPM, because NewPM also
performs inlining at -O1, so it ends up performing much more
optimization in practice than before.

3 years agoDrop -opt-bisect-limit=0 flag from test
Nikita Popov [Sun, 4 Apr 2021 19:57:03 +0000 (21:57 +0200)]
Drop -opt-bisect-limit=0 flag from test

This causes an assertion failure under NewPM, because it also ends
up disabling the NameAnonGlobals pass.

Instead pass -Copt-level=0 to disable optimizations. If that should
be insufficient, we can use -C no-prepopulate-passes.

3 years agoExplicitly register GCOV profiling pass as well
Nikita Popov [Mon, 5 Apr 2021 09:26:48 +0000 (11:26 +0200)]
Explicitly register GCOV profiling pass as well

3 years agoExplicitly register instrprof pass
Nikita Popov [Mon, 5 Apr 2021 08:45:04 +0000 (10:45 +0200)]
Explicitly register instrprof pass

Don't use "passes" for this purpose, explicitly insert it into
the correct place in the pipeline instead.

3 years agoMake -Z new-llvm-pass-manager an Option<bool>
Nikita Popov [Sun, 4 Apr 2021 19:38:34 +0000 (21:38 +0200)]
Make -Z new-llvm-pass-manager an Option<bool>

To allow it to have an LLVM version dependent default.

3 years agoAuto merge of #85059 - ehuss:update-cargo, r=ehuss
bors [Sat, 8 May 2021 05:50:00 +0000 (05:50 +0000)]
Auto merge of #85059 - ehuss:update-cargo, r=ehuss

Update cargo

7 commits in f3e13226d6d17a2bc5f325303494b43a45f53b7f..e51522ab3db23b0d8f1de54eb1f0113924896331
2021-04-30 21:50:27 +0000 to 2021-05-07 21:29:52 +0000
- Add CARGO_TARGET_TMPDIR env var for integration tests & benches (rust-lang/cargo#9375)
- Bump to 0.55.0, update changelog (rust-lang/cargo#9464)
- Some updates to the unstable documentation (rust-lang/cargo#9457)
- Add CARGO_PROFILE_&lt;name&gt;_SPLIT_DEBUGINFO to env docs. (rust-lang/cargo#9456)
- Add `report` subcommand. (rust-lang/cargo#9438)
- Respect Cargo.toml `[package.exclude]` even not in a git repo. (rust-lang/cargo#9186)
- Document the other crates in the codebase in the contrib guide. (rust-lang/cargo#9439)

3 years agoAuto merge of #85058 - Xanewok:update-rls, r=Xanewok
bors [Sat, 8 May 2021 02:57:40 +0000 (02:57 +0000)]
Auto merge of #85058 - Xanewok:update-rls, r=Xanewok

Update RLS

This mostly just includes https://github.com/rust-lang/rls/commit/e33f4e68496b296dedb100e297dc4451f169b2b3 so that this fixes #85055 (clippy-related breakage).

3 years agoAvoid predecessors having Drop impls
Mark Rousskov [Sat, 8 May 2021 01:00:03 +0000 (21:00 -0400)]
Avoid predecessors having Drop impls

3 years agoAuto merge of #85057 - Dylan-DPC:rollup-efaseq2, r=Dylan-DPC
bors [Sat, 8 May 2021 00:37:38 +0000 (00:37 +0000)]
Auto merge of #85057 - Dylan-DPC:rollup-efaseq2, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #76808 (Improve diagnostics for functions in `struct` definitions)
 - #84887 (Remove SpanInterner::get)
 - #85034 (fix null pointer error messages)
 - #85038 (Don't stop running rustdoc-gui tests at first failure)
 - #85044 (Use `path.exists()` instead of `fs::metadata(path).is_ok()`)
 - #85052 (rustdoc: Link to the docs on namespaces when an unknown disambiguator is found)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup