about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2022-08-20Rollup merge of #100691 - compiler-errors:issue-100690, r=estebankMatthias Krüger-53/+150
Make `same_type_modulo_infer` a proper `TypeRelation` Specifically, this fixes #100690 because we no longer consider a `ReLateBound` and a `ReVar` to be equal. `ReVar` can only be equal to free regions or static.
2022-08-20Rollup merge of #100642 - mzohreva:mz/update-sgx-abi-cancel-queue, ↵Matthias Krüger-7/+34
r=Mark-Simulacrum Update fortanix-sgx-abi and export some useful SGX usercall traits Update `fortanix-sgx-abi` to 0.5.0 to add support for cancel queue (see https://github.com/fortanix/rust-sgx/pull/405 and https://github.com/fortanix/rust-sgx/pull/404). Export some useful traits for processing SGX usercall. This is needed for https://github.com/fortanix/rust-sgx/pull/404 to avoid duplication. cc `@raoulstrackx` and `@jethrogb`
2022-08-20Rollup merge of #100596 - TaKO8Ki:remove-unnecessary-stderr-files, ↵Matthias Krüger-23/+0
r=Mark-Simulacrum Remove unnecessary stderr files This patch removes stderr files corresponding to revisions that have already been removed.
2022-08-20Rollup merge of #100585 - wooorm:patch-1, r=Mark-SimulacrumMatthias Krüger-1/+1
Fix trailing space showing up in example The current text is rendered as: U+005B ..= U+0060 ``[ \ ] ^ _ ` ``, or (**note the final space!**) This patch changes that to render as: U+005B ..= U+0060 `` [ \ ] ^ _ ` ``, or (**note no final space!**) The reason for that, is that CommonMark has a solution for starting or ending inline code with a backtick/grave accent: padding both sides with a space, makes that padding disappear.
2022-08-20Rollup merge of #99544 - dylni:expose-utf8lossy, r=Mark-SimulacrumMatthias Krüger-184/+273
Expose `Utf8Lossy` as `Utf8Chunks` This PR changes the feature for `Utf8Lossy` from `str_internals` to `utf8_lossy` and improves the API. This is done to eventually expose the API as stable. Proposal: rust-lang/libs-team#54 Tracking Issue: #99543
2022-08-20Rollup merge of #99415 - ferrocene:pa-reuse-initial, r=Mark-SimulacrumMatthias Krüger-0/+338
Initial implementation of REUSE This PR implements the first two steps of #99414 by: * Adding some scaffolding for REUSE. The `.reuse/dep5` file now marks every file as the custom "TODO" license, which I'll remove in a future PR once Debian imports their metadata. The TODO license is needed so that `reuse lint` works. * Runs `reuse lint` in CI, in the `mingw-check` builder. REUSE currently has a bug when parsing some files in the LLVM source code. This means REUSE will fail when running it in source tarballs of rustc, and that bug prevents us from passing the `--include-submodules` flag in CI. I opened https://github.com/fsfe/reuse-tool/pull/560 upstream with a fix, and as soon as it's merged/released I planned to bump the pinned version to include the fix we need. r? `@Mark-Simulacrum`
2022-08-20Expose `Utf8Lossy` as `Utf8Chunks`dylni-184/+273
2022-08-20Auto merge of #100564 - nnethercote:box-ast-MacCall, r=spastorinobors-94/+94
Box the `MacCall` in various types. r? `@spastorino`
2022-08-20Auto merge of #100793 - matthiaskrgr:rollup-dy7rfdh, r=matthiaskrgrbors-138/+476
Rollup of 10 pull requests Successful merges: - #100186 (Mention `as_mut` alongside `as_ref` in borrowck error message) - #100383 (Mitigate stale data reads on SGX platform) - #100507 (suggest `once_cell::Lazy` for non-const statics) - #100617 (Suggest the right help message for as_ref) - #100667 (Migrate "invalid variable declaration" errors to SessionDiagnostic) - #100709 (Migrate typeck's `used` expected symbol diagnostic to `SessionDiagnostic`) - #100723 (Add the diagnostic translation lints to crates that don't emit them) - #100729 (Avoid zeroing a 1kb stack buffer on every call to `std::sys::windows::fill_utf16_buf`) - #100750 (improved diagnostic for function defined with `def`, `fun`, `func`, or `function` instead of `fn`) - #100763 (triagebot: Autolabel `A-rustdoc-json`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-08-20Rollup merge of #100763 - aDotInTheVoid:triagebot-rdj, r=jyn514Matthias Krüger-0/+10
triagebot: Autolabel `A-rustdoc-json`
2022-08-20Rollup merge of #100750 - ↵Matthias Krüger-0/+89
akabinds:akabinds/improved-invalid-function-qual-error, r=davidtwco improved diagnostic for function defined with `def`, `fun`, `func`, or `function` instead of `fn` Closes #99751
2022-08-20Rollup merge of #100729 - thomcc:less-initialized, r=ChrisDentonMatthias Krüger-5/+13
Avoid zeroing a 1kb stack buffer on every call to `std::sys::windows::fill_utf16_buf` I've also tried to be slightly more careful about integer overflows, although in practice this is likely still not handled ideally. r? `@ChrisDenton`
2022-08-20Rollup merge of #100723 - 5225225:the-easy-ones, r=compiler-errorsMatthias Krüger-0/+52
Add the diagnostic translation lints to crates that don't emit them Some of these have a note saying that they should build on a stable compiler, does that mean they shouldn't get these lints? Or can we cfg them out on those?
2022-08-20Rollup merge of #100709 - JhonnyBillM:port-expected-used-symbol-diagnostic, ↵Matthias Krüger-6/+10
r=compiler-errors Migrate typeck's `used` expected symbol diagnostic to `SessionDiagnostic` r? ``@davidtwco``
2022-08-20Rollup merge of #100667 - Xiretza:diag-structs-parser-ivd, r=davidtwcoMatthias Krüger-19/+50
Migrate "invalid variable declaration" errors to SessionDiagnostic After seeing the great blog post on Inside Rust, I decided to try my hand at this. Just one diagnostic for now to get used to the workflow and to check if this is the way to do it or if there are any problems.
2022-08-20Rollup merge of #100617 - chenyukang:fix-100605, r=compiler-errorsMatthias Krüger-1/+57
Suggest the right help message for as_ref Fixes #100605
2022-08-20Rollup merge of #100507 - cameron1024:suggest-lazy, r=compiler-errorsMatthias Krüger-0/+14
suggest `once_cell::Lazy` for non-const statics Addresses https://github.com/rust-lang/rust/issues/100410 Some questions: - removing the `if` seems to include too many cases (e.g. calls to non-const functions inside a `const fn`), but this code excludes the following case: ```rust const FOO: Foo = non_const_fn(); ``` Should we suggest `once_cell` in this case as well? - The original issue mentions suggesting `AtomicI32` instead of `Mutex<i32>`, should this PR address that as well?
2022-08-20Rollup merge of #100383 - fortanix:raoul/aepic_leak_mitigation, r=cuviperMatthias Krüger-23/+166
Mitigate stale data reads on SGX platform Intel disclosed the Stale Data Read vulnerability yesterday. In order to mitigate this issue completely, reading userspace from an SGX enclave must be aligned and in 8-bytes chunks. This PR implements this mitigation References: - https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00657.html - https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/stale-data-read-from-xapic.html cc: ``@jethrogb``
2022-08-20Rollup merge of #100186 - compiler-errors:or-as_mut, r=fee1-deadMatthias Krüger-84/+15
Mention `as_mut` alongside `as_ref` in borrowck error message Kinda fixes #99426 but I guess that really might be better staying open to see if we could make it suggest `as_mut` in a structured way. Not sure how to change borrowck to know that info tho.
2022-08-20Suggest the right help message for as_refyukang-1/+57
2022-08-19Auto merge of #100740 - Dylan-DPC:rollup-0td6yq4, r=Dylan-DPCbors-992/+851
Rollup of 9 pull requests Successful merges: - #99576 (Do not allow `Drop` impl on foreign fundamental types) - #100081 (never consider unsafe blocks unused if they would be required with deny(unsafe_op_in_unsafe_fn)) - #100208 (make NOP dyn casts not require anything about the vtable) - #100494 (Cleanup rustdoc themes) - #100522 (Only check the `DefId` for the recursion check in MIR inliner.) - #100592 (Manually implement Debug for ImportKind.) - #100598 (Don't fix builtin index when Where clause is found) - #100721 (Add diagnostics lints to `rustc_type_ir` module) - #100731 (rustdoc: count deref and non-deref as same set of used methods) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2022-08-19triagebot: Autolabel `A-rustdoc-json`Nixon Enraght-Moony-0/+10
2022-08-19Fix comment typoThom Chiovoloni-1/+1
2022-08-19Auto merge of #100209 - cjgillot:source-file-index, r=estebankbors-224/+204
Lazily decode SourceFile from metadata Currently, source files from foreign crates are decoded up-front from metadata. Spans from those crates were matched with the corresponding source using binary search among those files. This PR changes the strategy by matching spans to files during encoding. This allows to decode source files on-demand, instead of up-front. The on-disk format for spans becomes: `<tag> <position from start of file> <length> <file index> <crate (if foreign file)>`.
2022-08-19Rollup merge of #100731 - notriddle:notriddle/deref-methods-1, r=jshaDylan DPC-6/+41
rustdoc: count deref and non-deref as same set of used methods Fixes #100679
2022-08-19Rollup merge of #100721 - JhonnyBillM:enable-diag-lint-in-type-ir, ↵Dylan DPC-0/+2
r=compiler-errors Add diagnostics lints to `rustc_type_ir` module Module is complete. It doesn’t have any diagnostics.
2022-08-19Rollup merge of #100598 - ouz-a:91633, r=compiler-errorsDylan DPC-2/+229
Don't fix builtin index when Where clause is found Where clause shadows blanket impl for `Index` which causes normalization to not occur, which causes ICE to happen when we typeck. r? `@compiler-errors` Fixes #91633
2022-08-19Rollup merge of #100592 - cjgillot:debug-import-kind, r=TaKO8KiDylan DPC-1/+39
Manually implement Debug for ImportKind. This avoids crashing due to an infinite loop when running with `RUSTC_LOG=rustc_resolve`.
2022-08-19Rollup merge of #100522 - cjgillot:inline-polymorphic-recursion, r=tmiaskoDylan DPC-4/+34
Only check the `DefId` for the recursion check in MIR inliner. The current history check compares `Instance`s, so it cannot detect cases of polymorphic recursion where `Substs` change. This PR makes it so we only compare `DefId`s, ignoring any change in `Substs`. According to https://github.com/rust-lang/rust/pull/100522#issuecomment-1214769757, in practice only very few inlining decisions change. Fixes https://github.com/rust-lang/rust/issues/100476
2022-08-19Rollup merge of #100494 - GuillaumeGomez:cleanup-themes, r=jshaDylan DPC-245/+275
Cleanup rustdoc themes This PR continues our work to simplify the rustdoc themes by relying more on CSS variables. Interestingly enough, this time it allowed me to realize that we were having a lot of different colors for borders even though the difference is unnoticeable. I used this opportunity to unify them. The live demo is [here](https://rustdoc.crud.net/imperio/cleanup-themes/std/index.html). r? `@jsha`
2022-08-19Rollup merge of #100208 - RalfJung:dyn-upcast-nop, r=petrochenkovDylan DPC-21/+46
make NOP dyn casts not require anything about the vtable As suggested [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/144729-t-types/topic/dyn-upcasting.20stabilization/near/292151439). This matches what the codegen backends already do, and what Miri did do until https://github.com/rust-lang/rust/pull/99420 when I made it super extra paranoid.
2022-08-19Rollup merge of #100081 - RalfJung:unused-unsafe-in-unsafe-fn, r=jackh726Dylan DPC-695/+134
never consider unsafe blocks unused if they would be required with deny(unsafe_op_in_unsafe_fn) Judging from https://github.com/rust-lang/rust/issues/71668#issuecomment-1200317370 the consensus nowadays seems to be that we should never consider an unsafe block unused if it was required with `deny(unsafe_op_in_unsafe_fn)`, no matter whether that lint is actually enabled or not. So let's adjust rustc accordingly. The first commit does the change, the 2nd does some cleanup.
2022-08-19Rollup merge of #99576 - compiler-errors:foreign-fundamental-drop-is-bad, ↵Dylan DPC-18/+51
r=TaKO8Ki Do not allow `Drop` impl on foreign fundamental types `Drop` should not be implemented on `Pin<T>` even if `T` is local. This does not trigger regular orphan rules is because `Pin` is `#[fundamental]`... but we don't allow specialized `Drop` impls anyways, so these rules are not sufficient to prevent this impl on stable. Let's just choose even stricter rules, since we shouldn't be implementing `Drop` on a foreign ADT ever. Fixes #99575
2022-08-19Auto merge of #99541 - timvermeulen:flatten_cleanup, r=the8472bors-137/+280
Refactor iteration logic in the `Flatten` and `FlatMap` iterators The `Flatten` and `FlatMap` iterators both delegate to `FlattenCompat`: ```rust struct FlattenCompat<I, U> { iter: Fuse<I>, frontiter: Option<U>, backiter: Option<U>, } ``` Every individual iterator method that `FlattenCompat` implements needs to carefully manage this state, checking whether the `frontiter` and `backiter` are present, and storing the current iterator appropriately if iteration is aborted. This has led to methods such as `next`, `advance_by`, and `try_fold` all having similar code for managing the iterator's state. I have extracted this common logic of iterating the inner iterators with the option to exit early into a `iter_try_fold` method: ```rust impl<I, U> FlattenCompat<I, U> where I: Iterator<Item: IntoIterator<IntoIter = U>>, { fn iter_try_fold<Acc, Fold, R>(&mut self, acc: Acc, fold: Fold) -> R where Fold: FnMut(Acc, &mut U) -> R, R: Try<Output = Acc>, { ... } } ``` It passes each of the inner iterators to the given function as long as it keep succeeding. It takes care of managing `FlattenCompat`'s state, so that the actual `Iterator` methods don't need to. The resulting code that makes use of this abstraction is much more straightforward: ```rust fn next(&mut self) -> Option<U::Item> { #[inline] fn next<U: Iterator>((): (), iter: &mut U) -> ControlFlow<U::Item> { match iter.next() { None => ControlFlow::CONTINUE, Some(x) => ControlFlow::Break(x), } } self.iter_try_fold((), next).break_value() } ``` Note that despite being implemented in terms of `iter_try_fold`, `next` is still able to benefit from `U`'s `next` method. It therefore does not take the performance hit that implementing `next` directly in terms of `Self::try_fold` causes (in some benchmarks). This PR also adds `iter_try_rfold` which captures the shared logic of `try_rfold` and `advance_back_by`, as well as `iter_fold` and `iter_rfold` for folding without early exits (used by `fold`, `rfold`, `count`, and `last`). Benchmark results: ``` before after bench_flat_map_sum 423,255 ns/iter 414,338 ns/iter bench_flat_map_ref_sum 1,942,139 ns/iter 2,216,643 ns/iter bench_flat_map_chain_sum 1,616,840 ns/iter 1,246,445 ns/iter bench_flat_map_chain_ref_sum 4,348,110 ns/iter 3,574,775 ns/iter bench_flat_map_chain_option_sum 780,037 ns/iter 780,679 ns/iter bench_flat_map_chain_option_ref_sum 2,056,458 ns/iter 834,932 ns/iter ``` I added the last two benchmarks specifically to demonstrate an extreme case where `FlatMap::next` can benefit from custom internal iteration of the outer iterator, so take it with a grain of salt. We should probably do a perf run to see if the changes to `next` are worth it in practice.
2022-08-18Auto merge of #98851 - klensy:encode_symbols, r=cjgillotbors-3/+113
rustc_metadata: dedupe strings to prevent multiple copies in rmeta/query cache blow file size r? `@cjgillot` Encodes strings in rmeta/query cache so duplicated ones will be encoded as offsets to first strings, reducing file size.
2022-08-18rustdoc: count deref and non-deref as same set of used methodsMichael Howell-6/+41
2022-08-18Avoid zeroing a 1kb stack buffer on every call to ↵Thom Chiovoloni-5/+13
`std::sys::windows::fill_utf16_buf`
2022-08-18added improved diagnostic for a function defined with an invalid qualifierakabinds-0/+89
2022-08-18Auto merge of #98807 - cbeuw:derived-obligation, r=compiler-errorsbors-279/+279
Reword "Required because of the requirements on the impl of ..." Rephrases the awkward "Required because of the requirements on the impl of `{trait}` for `{type}`" to "required for `{type}` to implement `{trait}`"
2022-08-18Reword "Required because of the requirements on the impl of ..."Andy Wang-279/+279
2022-08-18Add diagnostic translation lints to crates that don't emit them5225225-0/+52
2022-08-18ADD - diagnostic lints to type_irJhonny Bill Mena-0/+2
Module is completed because it doesn’t have any diagnostics
2022-08-18Auto merge of #99860 - oli-obk:revert_97346, r=pnkfelixbors-67/+69
Revert "Rollup merge of #97346 - JohnTitor:remove-back-compat-hacks, … …r=oli-obk" This reverts commit c703d11dccb4a895c7aead3b2fcd8cea8c483184, reversing changes made to 64eb9ab869bc3f9ef3645302fbf22e706eea16cf. it didn't apply cleanly, so now it works the same for RPIT and for TAIT instead of just working for RPIT, but we should keep those in sync anyway. It also exposed a TAIT bug (see the feature gated test that now ICEs). r? `@pnkfelix` fixes #99536
2022-08-18Remove unused CSS ruleGuillaume Gomez-14/+0
2022-08-18Update existing rustdoc-gui tests and add a new oneGuillaume Gomez-6/+248
2022-08-18Simplify rustdoc themes by relying more on CSS variablesGuillaume Gomez-228/+30
2022-08-18import license changesPietro Albini-2/+134
2022-08-18cleanup .reuse/dep5Pietro Albini-2139/+6
2022-08-18import the debian/copyright file from debianPietro Albini-5/+2159
Co-Authored-By: Angus Lees <gus@inodes.org> Co-Authored-By: Fabian Grünbichler <f.gruenbichler@proxmox.com> Co-Authored-By: Hiroaki Nakamura <hnakamur@gmail.com> Co-Authored-By: Jordan Justen <jljusten@gmail.com> Co-Authored-By: Luca Bruno <lucab@debian.org> Co-Authored-By: Sylvestre Ledru <sylvestre@debian.org> Co-Authored-By: Ximin Luo <infinity0@debian.org>
2022-08-18Auto merge of #100682 - RalfJung:miri, r=RalfJungbors-7/+9
update Miri Fixes https://github.com/rust-lang/rust/issues/100614 r? `@ghost`