about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2023-03-07Rollup merge of #108583 - ↵Matthias Krüger-1/+49
compiler-errors:rpitit-default-method-with-nested-rpitits, r=spastorino Account for binders correctly when adding default RPITIT method assumption As of #108203, we install extra projection predicates into the param-env of a default trait method when it has return-position `impl Trait` (or is async). The implementation didn't account for the fact that it's walking into and out of binders, so we just need to shift all the debruijn indices accordingly when constructing the projection predicates. Fixes #108579 r? types
2023-03-07Rollup merge of #108581 - jfgoog:include-mingw-linker, r=petrochenkovMatthias Krüger-2/+10
Add a new config flag, dist.include-mingw-linker. The flag controls whether to copy the linker, DLLs, and various libraries from MinGW into the rustc toolchain. It applies only when the host or target is pc-windows-gnu. The flag is true by default to preserve existing behavior.
2023-03-07Rollup merge of #108460 - obeis:hir-analysis-migrate-diagnostics-2, ↵Matthias Krüger-28/+68
r=compiler-errors migrate `rustc_hir_analysis` to session diagnostic [Part Two] migrate `rustc_hir_analysis` to session diagnostic (part two) files list: - rustc_hir_analysis/variance/* - rustc_hir_analysis/missing_cast_for_variadic_arg.rs - rustc_hir_analysis/sized_unsized_cast.rs Updates #100717
2023-03-07Auto merge of #108863 - JohnTitor:rollup-haydnsw, r=JohnTitorbors-262/+386
Rollup of 7 pull requests Successful merges: - #108619 (Remove the option to disable `llvm-version-check`) - #108728 (infer: fix and improve comments) - #108731 (feat: impl better help for `.poll()` not found on `impl Future`) - #108774 (Greatly improve the error messages when `run-make/translation` fails) - #108805 (Update askama to 0.12 and improve whitespace control) - #108823 (Add tracking issue for cf-protection to unstable book) - #108855 (Custom MIR: Support `as` casts) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-03-07Rollup merge of #108855 - cbeuw:mir-cast, r=tmiaskoYuki Okushi-1/+81
Custom MIR: Support `as` casts Small changes to support this low hanging fruit r? `@oli-obk` or `@tmiasko` or `@JakobDegen`
2023-03-07Rollup merge of #108823 - wesleywiser:add_cf-protection_tracking_issue, ↵Yuki Okushi-0/+4
r=Nilstrieb Add tracking issue for cf-protection to unstable book
2023-03-07Rollup merge of #108805 - GuillaumeGomez:update-askama, r=notriddleYuki Okushi-210/+226
Update askama to 0.12 and improve whitespace control `askama` 0.12 was just released, and it adds the possibility to have "whitespace suppression" enabled by default in the configuration so I switched to it. r? ``@notriddle``
2023-03-07Rollup merge of #108774 - jyn514:translation-errors, r=davidtwcoYuki Okushi-8/+8
Greatly improve the error messages when `run-make/translation` fails Before: ``` LD_LIBRARY_PATH="/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/test/run-make/translation/translation:/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/stage2/lib:/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/stage0-bootstrap-tools/aarch64-unknown-linux-gnu/release/deps:/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/stage0/lib" '/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/stage2/bin/rustc' --out-dir /home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/test/run-make/translation/translation -L /home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/test/run-make/translation/translation test.rs --sysroot /home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/test/run-make/translation/translation/fakeroot -Ztranslate-lang=zh-CN 2>&1 | grep "this is a test message" ------------------------------------------ --- stderr ------------------------------- make: *** [Makefile:51: sysroot] Error 1 ------------------------------------------ failures: [run-make] tests/run-make/translation ``` After: ``` LD_LIBRARY_PATH="/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/test/run-make/translation/translation:/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/stage2/lib:/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/stage0-bootstrap-tools/aarch64-unknown-linux-gnu/release/deps:/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/stage0/lib" '/home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/stage2/bin/rustc' --out-dir /home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/test/run-make/translation/translation -L /home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/test/run-make/translation/translation test.rs --sysroot /home/gh-jyn514/rust/build/aarch64-unknown-linux-gnu/test/run-make/translation/translation/fakeroot -Ztranslate-lang=zh-CN 2>&1 | grep "this is a test message" [[[ begin stdout ]]] error: failed to load fluent bundle: failed to add resource: Attempt to override an existing message: "parse_struct_literal_body_without_path". [[[ end stdout ]]] Error: cannot match: this is a test message ------------------------------------------ --- stderr ------------------------------- make: *** [Makefile:51: sysroot] Error 1 ------------------------------------------ failures: [run-make] tests/run-make/translation ```
2023-03-07Rollup merge of #108731 - Ezrashaw:pin-suggestion-on-impl-future, r=petrochenkovYuki Okushi-0/+34
feat: impl better help for `.poll()` not found on `impl Future` Partially address #108572 I'd like to also address suggestions for generalized `Self` parameters as well. That'll be a separate PR.
2023-03-07Rollup merge of #108728 - tshepang:fix-and-improve, r=michaelwoeristerYuki Okushi-29/+32
infer: fix and improve comments
2023-03-07Rollup merge of #108619 - jyn514:llvm-version-check, r=cuviperYuki Okushi-14/+1
Remove the option to disable `llvm-version-check` We don't support old versions of LLVM; there's no reason to have an easy way to force bootstrap to use them anyway. If someone really needs to use an unsupported version, they can modify bootstrap to change the version range. r? ``@cuviper`` on whether we want to do this or not, since you maintain rust on Fedora and touched this config last.
2023-03-07Auto merge of #108763 - scottmcm:indexing-nuw-lengths, r=cuviperbors-3/+68
Use `nuw` when calculating slice lengths from `Range`s An `assume` would definitely not be worth it, but since the flag is almost free we might as well tell LLVM this, especially on `_unchecked` calls where there's no obvious way for it to deduce it. (Today neither safe nor unsafe indexing gets it: <https://rust.godbolt.org/z/G1jYT548s>)
2023-03-07Custom MIR: Support as castsAndy Wang-1/+81
2023-03-07Auto merge of #95317 - Jules-Bertholet:round_ties_to_even, ↵bors-0/+128
r=pnkfelix,m-ou-se,scottmcm Add `round_ties_even` to `f32` and `f64` Tracking issue: #96710 Redux of #82273. See also #55107 Adds a new method, `round_ties_even`, to `f32` and `f64`, that rounds the float to the nearest integer , rounding halfway cases to the number with an even least significant bit. Uses the `roundeven` LLVM intrinsic to do this. Of the five IEEE 754 rounding modes, this is the only one that doesn't already have a round-to-integer function exposed by Rust (others are `round`, `floor`, `ceil`, and `trunc`). Ties-to-even is also the rounding mode used for int-to-float and float-to-float `as` casts, as well as float arithmentic operations. So not having an explicit rounding method for it seems like an oversight. Bikeshed: this PR currently uses `round_ties_even` for the name of the method. But maybe `round_ties_to_even` is better, or `round_even`, or `round_to_even`?
2023-03-07Auto merge of #108735 - clubby789:borrowck-unstable, r=Nilstriebbors-61/+66
Remove `allow(potential_query_instability)` from `borrowck` cc #84447 Replace uses of `FxHash*` with `FxIndex*`. One `#[allow]` for a HashMap in an external crate but the output is sorted afterwards.
2023-03-07Auto merge of #108691 - aliemjay:closure-subject, r=jackh726bors-154/+214
fix multiple issues when promoting type-test subject Multiple interdependent fixes. See linked issues for a short description of each. When Promoting a type-test `T: 'a` from within the closure back to its parent function, there are a couple pre-existing bugs and limitations. They were exposed by the recent changes to opaque types because the type-test subject (`T`) is no longer a simple ParamTy. Commit 1: Fixes #108635 Fixes #107426 Commit 2: Fixes #108639 Commit 3: Fixes #107516
2023-03-06Auto merge of #108821 - matthiaskrgr:rollup-cmkbgpr, r=matthiaskrgrbors-46/+443
Rollup of 8 pull requests Successful merges: - #107801 (const_eval: `implies_by` in `rustc_const_unstable`) - #108750 (Fix `ObligationCtxt::sub`) - #108780 (Add regression tests for issue 70919) - #108786 (Check for free regions in MIR validation) - #108790 (Do not ICE when interpreting a cast between non-monomorphic types) - #108803 (Do not ICE when failing to normalize in ConstProp.) - #108807 (Emit the suspicious_auto_trait_impls for negative impls as well) - #108812 (Add regression test for #98444) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-03-06Add tracking issue for cf-protection to unstable bookWesley Wiser-0/+4
2023-03-06Rollup merge of #108812 - albertlarsan68:test-98444, r=NilstriebMatthias Krüger-0/+17
Add regression test for #98444 cc #108730 this will need to be changed to a `check-fail` test once it lands. Fixes #98444
2023-03-06Rollup merge of #108807 - MU001999:lint/suspicious_auto_trait_impls, r=lcnrMatthias Krüger-9/+128
Emit the suspicious_auto_trait_impls for negative impls as well Fixes #108804
2023-03-06Rollup merge of #108803 - cjgillot:const-prop-normalize, r=oli-obkMatthias Krüger-10/+9
Do not ICE when failing to normalize in ConstProp. There is no reason to delay a bug there, as we bubble up the failure as TooGeneric. Fixes https://github.com/rust-lang/rust/issues/97728
2023-03-06Rollup merge of #108790 - cjgillot:mono-cast, r=oli-obkMatthias Krüger-13/+37
Do not ICE when interpreting a cast between non-monomorphic types Fixes https://github.com/rust-lang/rust/issues/101596
2023-03-06Rollup merge of #108786 - saethlin:free-regions-check, r=oli-obkMatthias Krüger-6/+11
Check for free regions in MIR validation This turns https://github.com/rust-lang/rust/issues/108720 into a MIR validation failure that will reproduce without debug-assertions enabled. ``` error: internal compiler error: broken MIR in Item(WithOptConstParam { did: DefId(0:296 ~ futures_util[3805]::future::future::remote_handle::{impl#3}::poll), const_param_did: None }) (after pass ScalarReplacementOfAggregates) at bb0[0]: Free regions in optimized runtime-post-cleanup MIR --> /home/ben/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.26/src/future/future/remote_handle.rs:96:13 | 96 | let this = self.project(); | ^^^^ ```
2023-03-06Rollup merge of #108780 - Zeegomo:close-70919, r=WaffleLapkinMatthias Krüger-0/+63
Add regression tests for issue 70919 Desugaring DropAndReplace at MIR build (#107844) fixed #70919. Add regressions tests, borrowed from #102078, to ensure we check for this in the future. cc ``@Aaron1011``
2023-03-06Rollup merge of #108750 - compiler-errors:aaaaaaaa, r=lcnrMatthias Krüger-1/+1
Fix `ObligationCtxt::sub` typo it seems
2023-03-06Rollup merge of #107801 - davidtwco:stability-implies-const, r=NilstriebMatthias Krüger-7/+177
const_eval: `implies_by` in `rustc_const_unstable` Fixes #107605. Extend support for `implies_by` (from `#[stable]` and `#[unstable]`) to `#[rustc_const_stable]` and `#[rustc_const_unstable]`. cc ``@steffahn``
2023-03-06Add regression test for 98444Albert Larsan-0/+17
2023-03-06Bless the suspicious-negative-impls-lint.rsMu42-33/+3
2023-03-06Bless the remaining ui testsMu42-5/+55
2023-03-06Moves the negative impls into a separate test fileMu42-67/+115
2023-03-06Auto merge of #108402 - clubby789:diag-bool-not-unit, r=davidtwcobors-45/+77
Allow using `bool` instead of `Option<()>` in diagnostics ~~Disallow the unit type for `#[help]`, `#[note]` etc, instead using `bool` to express optional annotations without a span which I believe is more intuitive.~~ ~~Test output ordering has changed in a few places, where a field was of type `()` and the annotation has been moved to the struct itself. If any of these changes are an issue, this can be restricted to allowing specifically `()`, and not `Option<()>`~~ ~~Actual changes here: https://github.com/rust-lang/rust/pull/108402/files#diff-815b1d8debfc564112bd51093791d7c3f2ee288a37a8f5c0e89c11d1f609b4c0~~ Allows using `bool` in derive diagnostics to indicate an optional subdiagnostic without a span, where previously `Option<()>` had to be used `@rustbot` label +A-diagnostics
2023-03-06emit the suspicious_auto_trait_impls for negative impls as wellMu42-16/+67
2023-03-06Update documentation for HTML templates styleGuillaume Gomez-13/+14
2023-03-06Remove unneeded minus sign in jinja tagsGuillaume Gomez-173/+174
2023-03-06Update askama version to 0.12Guillaume Gomez-24/+38
2023-03-06Do not ICE when failing to normalize in ConstProp.Camille GILLOT-10/+9
2023-03-06Auto merge of #108787 - cjgillot:sroa-lifetime, r=compiler-errorsbors-476/+730
Erase regions even when failing to normalize type in MIR opts The first commit just moves the tests around. Fixes https://github.com/rust-lang/rust/issues/108720 cc `@saethlin`
2023-03-06Auto merge of #108789 - matthiaskrgr:rollup-nyurto8, r=matthiaskrgrbors-54/+151
Rollup of 7 pull requests Successful merges: - #108244 (Add test for semicolon recovery ICE) - #108746 (Don't project to RPITIT that has no default value) - #108764 (Tweaks to -Zdrop-tracking-mir) - #108770 (Improve documentation and argument naming of some TyCtxt methods) - #108773 (x fmt: Only check modified files locally) - #108775 (Use the correct bound vars in return type suggestion.) - #108776 (Make `x test tidy` less noisy) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2023-03-05Use `nuw` when calculating slice lengths from `Range`sScott McMurray-3/+68
An `assume` would definitely not be worth it, but since the flag is almost free we might as well tell LLVM this, especially on `_unchecked` calls where there's no obvious way for it to deduce it. (Today neither safe nor unsafe indexing gets it: <https://rust.godbolt.org/z/G1jYT548s>)
2023-03-05Auto merge of #108157 - scottmcm:tuple-gt-via-partialcmp, r=dtolnaybors-13/+179
Use `partial_cmp` to implement tuple `lt`/`le`/`ge`/`gt` In today's implementation, `(A, B)::gt` contains calls to *both* `A::eq` *and* `A::gt`. That's fine for primitives, but for things like `String`s it's kinda weird -- `(String, usize)::gt` has a call to both `bcmp` and `memcmp` (<https://rust.godbolt.org/z/7jbbPMesf>) because when `bcmp` says the `String`s aren't equal, it turns around and calls `memcmp` to find out which one's bigger. This PR changes the implementation to instead implement `(A, …, C, Z)::gt` using `A::partial_cmp`, `…::partial_cmp`, `C::partial_cmp`, and `Z::gt`. (And analogously for `lt`, `le`, and `ge`.) That way expensive comparisons don't need to be repeated. Technically this is an observable change on stable, so I've marked it `needs-fcp` + `T-libs-api` and will r? rust-lang/libs-api I'm hoping that this will be non-controversial, however, since it's very similar to the observable changes that were made to the derives (#81384 #98655) -- like those, this only changes behaviour if a type overrode behaviour in a way inconsistent with the rules for the various traits involved. (The first commit here is #108156, adding the codegen test, which I used to make sure this doesn't regress behaviour for primitives.) Zulip conversation about this change: <https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/.60.3E.60.20on.20Tuples/near/328392927>.
2023-03-05Do not ICE when casting polymorphic values.Camille GILLOT-13/+22
2023-03-05Add test.Camille GILLOT-0/+15
2023-03-05Rollup merge of #108776 - jyn514:quiet-tidy, r=ozkanonurMatthias Krüger-6/+8
Make `x test tidy` less noisy Before: ``` Building tool tidy (stage0) Finished release [optimized + debuginfo] target(s) in 0.29s fmt check skip untracked path chrome_profiler.json during rustfmt invocations skip untracked path query_impl-default,args.mm_profdata during rustfmt invocations skip untracked path query_impl-llvm.txt during rustfmt invocations skip untracked path query_impl-mono_items.txt during rustfmt invocations skip untracked path query_impl-summarize.txt during rustfmt invocations skip untracked path rustc.svg during rustfmt invocations skip untracked path rustc_middle.mono_items.json during rustfmt invocations skip untracked path rustc_middle.mono_items.md during rustfmt invocations skip untracked path rustc_query_impl.mono_items-thread_local_attr.json during rustfmt invocations skip untracked path rustc_query_impl.mono_items-thread_local_macro.json during rustfmt invocations skip untracked path rustc_query_impl.mono_items.md during rustfmt invocations tidy check Found 505 error codes Highest error code: `E0793` * 397 features Ensuring the YAML anchors in the GitHub Actions config were expanded Building tool expand-yaml-anchors (stage0) Finished release [optimized + debuginfo] target(s) in 0.14s Build completed successfully in 0:00:54 ``` After: ``` Building tool tidy (stage0) Finished release [optimized + debuginfo] target(s) in 2.24s fmt check tidy check Ensuring the YAML anchors in the GitHub Actions config were expanded Building tool expand-yaml-anchors (stage0) Finished release [optimized + debuginfo] target(s) in 0.14s Build completed successfully in 0:00:04 ```
2023-03-05Rollup merge of #108775 - cjgillot:issue-107860, r=compiler-errorsMatthias Krüger-24/+39
Use the correct bound vars in return type suggestion. Fixes https://github.com/rust-lang/rust/issues/107860
2023-03-05Rollup merge of #108773 - jyn514:faster-tidy-fmt, r=albertlarsan68Matthias Krüger-1/+5
x fmt: Only check modified files locally Previously, `x fmt` would only format modified files, while `x fmt .` and `x fmt --check` would still look at all files. After this change, `x fmt --check` only looks at modified files locally. I feel pretty confident in this change - other than https://github.com/rust-lang/rust/issues/106261, no one has reported bugs in `get_modified_rs_files` since it was added in https://github.com/rust-lang/rust/pull/105702. Combined with the changes in https://github.com/rust-lang/rust/pull/108772, this brings the time for me to run `x t tidy` with a hot FS cache down from 5 to 2 seconds (and moves the majority of the time spent back to `tidy check`, which means it can be sped up more in the future).
2023-03-05Rollup merge of #108770 - GuillaumeGomez:improve-doc-and-naming, r=cjgillotMatthias Krüger-13/+20
Improve documentation and argument naming of some TyCtxt methods I got bit by this recently so better prevent others to end up the same as me.
2023-03-05Rollup merge of #108764 - cjgillot:dpm-adapt, r=compiler-errorsMatthias Krüger-7/+20
Tweaks to -Zdrop-tracking-mir Split from https://github.com/rust-lang/rust/pull/107421 3 commits: 1 diagnostic improvement and 2 ICEs.
2023-03-05Rollup merge of #108746 - ↵Matthias Krüger-3/+41
compiler-errors:rpitit-dont-project-default-w-no-valu, r=cjgillot Don't project to RPITIT that has no default value Replicates this behavior, but for RPITIT projection logic (which currently is separate) https://github.com/rust-lang/rust/blob/b1719530f44e3c8ec903f76020a52bd8764d5d10/compiler/rustc_trait_selection/src/traits/project.rs#L2105-L2115 Fixes #108738
2023-03-05Rollup merge of #108244 - lukas-code:semicolon-recovery-span, r=cjgillotMatthias Krüger-0/+18
Add test for semicolon recovery ICE closes https://github.com/rust-lang/rust/issues/108242
2023-03-05Auto merge of #105117 - pitaj:debug_asserts, r=the8472bors-35/+50
Add more debug assertions to unsafe functions related to #51713