Commit Graph

28915 Commits

Author SHA1 Message Date
Matthias Krüger
ff3b15e2bf Rollup merge of #115726 - compiler-errors:better-error-ref, r=estebank
For a single impl candidate, try to unify it with error trait ref

This allows us to point out an exact type mismatch when there's only one applicable impl.

cc `@asquared31415`
r? `@estebank`
2023-10-03 08:58:48 +02:00
Nicholas Nethercote
c3127d161a Remove unused features from rustc_llvm. 2023-10-03 15:54:44 +11:00
Michael Goulet
2934fe07b7 Point to full async fn for future 2023-10-03 02:25:32 +00:00
Zalathar
053c4f94a0 coverage: Remove next_id methods from counter/expression IDs
When these methods were originally written, I wasn't aware that
`newtype_index!` already supports addition with ordinary numbers, without
needing to unwrap and re-wrap.
2023-10-03 13:03:40 +11:00
Zalathar
b1cf0c8f1b coverage: Remove code for making expression copies of BCB counters
Now that coverage statements can have multiple code regions attached to them,
this code is never used.
2023-10-03 13:03:39 +11:00
Zalathar
86a66c8171 coverage: Store each BCB's code regions in one coverage statement
If a BCB has more than one code region, those extra regions can now all be
stored in the same coverage statement, instead of being stored in additional
statements.
2023-10-03 13:03:39 +11:00
Zalathar
ee9d00f6b8 coverage: Let each coverage statement hold a vector of code regions
This makes it possible for a `StatementKind::Coverage` to hold more than one
code region, but that capability is not yet used.
2023-10-03 13:03:39 +11:00
Zalathar
1355e1fc74 coverage: Update comments/logs that referred to CoverageSpan
The concrete type `CoverageSpan` is no longer used outside of the `spans`
module.

This is a separate patch to avoid noise in the preceding patch that actually
encapsulates coverage spans.
2023-10-03 13:03:39 +11:00
Zalathar
e29db47176 coverage: Encapsulate coverage spans
By encapsulating the coverage spans in a struct, we can change the internal
representation without disturbing existing call sites. This will be useful for
grouping coverage spans by BCB.

This patch includes some changes that were originally in #115912, which avoid
the need for a particular test to deal with coverage spans at all.

(Comments/logs referring to `CoverageSpan` are updated in a subsequent patch.)
2023-10-03 13:03:39 +11:00
Zalathar
59a11af1f9 coverage: Mappings for unused functions can all be zero
There is no need to include a dummy counter reference in the coverage mappings
for an unused function.
2023-10-03 13:03:39 +11:00
Michael Goulet
c373d206cd Address review nits 2023-10-03 00:51:13 +00:00
Michael Goulet
90dfa24415 Only reachable traits 2023-10-03 00:37:18 +00:00
Travis Cross
afea0b4eab Fill in prose to describe the async_fn_in_trait lint
We're stabilizing `async fn` in trait (AFIT), but we have some
reservations about how people might use this in the definitions of
publicly-visible traits, so we're going to lint about that.

This is a bit of an odd lint for `rustc`.  We normally don't lint just
to have people confirm that they understand how Rust works.  But in
this one exceptional case, this seems like the right thing to do as
compared to the other plausible alternatives.

In this commit, we describe the nature of this odd lint.
2023-10-03 00:37:18 +00:00
Michael Goulet
ec79720c1e Add async_fn_in_trait lint 2023-10-03 00:37:18 +00:00
Michael Goulet
07851679cd Point out the actual mismatch error 2023-10-02 23:14:29 +00:00
Michael Goulet
8be12f4ed7 For a single impl candidate, try to unify it with error trait ref 2023-10-02 23:14:29 +00:00
bors
2e5a9dd6c9 Auto merge of #102099 - InnovativeInventor:re-cold-land, r=nikic
Rebased: Mark drop calls in landing pads cold instead of noinline

I noticed that certain inlining optimizations were missing while staring at some compiled code output. I'd like to see this relanded, so I rebased the PR from `@erikdesjardins` (PR #94823).

This PR reapplies https://github.com/rust-lang/rust/pull/92419, which was reverted in https://github.com/rust-lang/rust/pull/94402 due to https://github.com/rust-lang/rust/issues/94390.

Fixes https://github.com/rust-lang/rust/issues/46515, fixes https://github.com/rust-lang/rust/issues/87055.

Update: fixes #97217.
2023-10-02 22:02:12 +00:00
Michael Goulet
ac5aa8c1a4 Don't suggest nonsense suggestions for unconstrained type vars in note_source_of_type_mismatch_constraint 2023-10-02 21:13:46 +00:00
Michael Goulet
2ffaeb5110 Rename both of the Match relations 2023-10-02 21:06:09 +00:00
ouz-a
5d753abb30 have better explanation for relate_types 2023-10-02 23:39:45 +03:00
ouz-a
6f0c5ee2d4 change is_subtype to relate_types 2023-10-02 23:39:45 +03:00
ouz-a
cd7f471931 Add docs, remove code, change subtyper code 2023-10-02 23:39:44 +03:00
ouz-a
3148e6a993 subtyping_projections 2023-10-02 23:37:49 +03:00
Tyler Mandry
af77806bee Rollup merge of #114454 - Nilstrieb:no-evil-sorting, r=cjgillot
Replace `HashMap` with `IndexMap` in pattern binding resolve

fixes https://github.com/rust-lang/rust/pull/114332#discussion_r1284189179
2023-10-02 16:09:42 -04:00
Lukas Wirth
2d73d30a3c Fix incorrect inlining of RangeInclusive::size_hint 2023-10-02 21:31:16 +02:00
Lukas Wirth
b25c84510d Add some docs regarding rustc_abi rust-analyzer compat changes 2023-10-02 21:31:16 +02:00
Lukas Wirth
6d141c11c0 Implement Deref<LayoutS> for Layout 2023-10-02 21:31:16 +02:00
Lukas Wirth
67e5eb6cec Cfg out ReprOption::field_shuffle_seed 2023-10-02 21:31:16 +02:00
Lukas Wirth
e8a2673159 Add VariantIdx back 2023-10-02 21:31:16 +02:00
Lukas Wirth
f14b7c9443 Move FieldIdx and Layout to rustc_target 2023-10-02 21:31:16 +02:00
Lukas Wirth
b47ad3b744 Bring back generic FieldIdx 2023-10-02 21:31:11 +02:00
Lukas Wirth
3b99d73f5a Unglob rustc_abi imports 2023-10-02 21:29:19 +02:00
Nilstrieb
6ca07235a6 Replace HashMap with IndexMap in pattern binding resolve
It will be iterated over, so we should avoid using `HashMap`.
2023-10-02 19:12:42 +02:00
Matthias Krüger
cfe9e13627 Rollup merge of #116340 - lcnr:early-binder-skip_binder, r=compiler-errors
`skip_binder` to `instantiate_identity`
2023-10-02 16:23:54 +02:00
Matthias Krüger
e51a2aaa4e Rollup merge of #116313 - nnethercote:rustc_abi, r=the8472
Some small cleanups in `rustc_abi`

Minor things I found while looking at this crate's code.

r? `@the8472`
2023-10-02 16:23:53 +02:00
Chinedu Francis Nwafili
bf4df0617f Tidy 2023-10-02 10:08:03 -04:00
Chinedu Francis Nwafili
9bb55a038f Tidy 2023-10-02 09:54:45 -04:00
Chinedu Francis Nwafili
67379c4006 Address misc feedback 2023-10-02 08:59:31 -04:00
lcnr
dbc2cc8717 skip_binder to instantiate_identity 2023-10-02 13:19:37 +02:00
Nikita Popov
5bcf4f26ac Limit to LLVM 17.0.2 to work around WinEH codegen bug 2023-10-02 11:06:38 +02:00
Erik Desjardins
31ee8b1818 Reapply: Mark drop calls in landing pads cold instead of noinline
Co-authored-by: Max Fan <git@max.fan>
Co-authored-by: Nikita Popov <npopov@redhat.com>
2023-10-02 10:37:53 +02:00
Ralf Jung
8dc92a360c remove another unused Key impl 2023-10-02 09:49:45 +02:00
bors
781ebbec8a Auto merge of #115898 - onur-ozkan:config-change-tracking, r=Mark-Simulacrum
bootstrap major change detection implementation

The use of `changelog-seen` and `bootstrap/CHANGELOG.md` has not been functional in any way for many years. We often do major/breaking changes but never update the changelog file or the `changelog-seen`. This is an alternative method for tracking major or breaking changes and informing developers when such changes occur.

Example output when bootstrap detects a major change:
![image](https://github.com/rust-lang/rust/assets/39852038/ee802dfa-a02b-488b-a433-f853ce079b8a)
2023-10-02 07:41:52 +00:00
Ralf Jung
a648c26c2c remove Key impls for types that involve an AllocId 2023-10-02 09:01:51 +02:00
Ralf Jung
bfc0f23acb MIRI -> Miri 2023-10-02 08:35:08 +02:00
Nicholas Nethercote
57397de2c9 Fix a comment.
Compiling any part of the compiler will almost certainly require
Nightly.
2023-10-02 16:47:11 +11:00
Nicholas Nethercote
5f4177a786 Factor out common token generation in fluent_messages.
The failure and success cases are similar enough that they can share
code.
2023-10-02 16:47:10 +11:00
Nicholas Nethercote
17e3793eb1 Name some local variables more consistently.
By making every `alt_foo` exactly match a `foo`.
2023-10-02 09:12:47 +11:00
bors
e0d7ed1f45 Auto merge of #116281 - Nadrieril:eager-const-eval, r=cjgillot
Cleanup number handling in match exhaustiveness

Doing a little bit of cleanup; handling number constants was somewhat messy. In particular, this:

- evals float consts once instead of repetitively
- reduces `Constructor` from 88 bytes to 56 (`mir::Const` is big!)

The `fast_try_eval_bits` function was mostly constructed from inlining existing code but I don't fully understand it; I don't follow how consts work and are evaluated very well.
2023-10-01 22:01:44 +00:00
Nadrieril
eac7bcde5f Move eval_bits optimization upstream 2023-10-01 21:12:24 +02:00