Commit Graph

196872 Commits

Author SHA1 Message Date
Michael Goulet
534426d0f3 Delay a bug if we try and fail to relate an opaque to itself in TypeRelating 2022-08-10 03:36:05 +00:00
Michael Goulet
28b6373b1d Fall back when relating two opaques by substs in MIR typeck 2022-08-10 03:27:41 +00:00
bors
34a6cae28e Auto merge of #100150 - notriddle:notriddle/implementors-js, r=GuillaumeGomez
rustdoc: use a more compact encoding for implementors/trait.*.js

The exact amount that this reduces the size of an implementors file depends on whether most of the impls are synthetic or not. For `Send`, it reduces the file from 128K to 112K, while for `Clone` it went from 64K to 44K.
2022-08-09 20:00:58 +00:00
bors
63e4312e6b Auto merge of #99217 - lcnr:implied-bounds-pre-norm, r=lcnr
consider unnormalized types for implied bounds

extracted, and slightly modified, from #98900

The idea here is that generally, rustc is split into things which can assume its inputs are well formed[^1], and things which have verify that themselves.

Generally most predicates should only deal with well formed inputs, e.g. a `&'a &'b (): Trait` predicate should be able to assume that `'b: 'a` holds. Normalization can loosen wf requirements (see #91068) and must therefore not be used in places which still have to check well formedness. The only such place should hopefully be `WellFormed` predicates

fixes #87748 and #98543

r? `@jackh726` cc `@rust-lang/types`

[^1]: These places may still encounter non-wf inputs and have to deal with them without causing an ICE as we may check for well formedness out of order.
2022-08-09 16:39:43 +00:00
bors
6d3f1beae1 Auto merge of #100318 - Dylan-DPC:rollup-18tzp6q, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #96478 (Implement `#[rustc_default_body_unstable]`)
 - #99787 (Rustdoc-Json: Document HRTB's on DynTrait)
 - #100181 (add method to get the mutability of an AllocId)
 - #100221 (Don't document impossible to call default trait items on impls)
 - #100228 (Don't ICE while suggesting updating item path.)
 - #100301 (Avoid `&str` to `String` conversions)
 - #100305 (Suggest adding an appropriate missing pattern excluding comments)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-08-09 13:51:33 +00:00
lcnr
8691b96eee test implied bounds + nested proj oblig 2022-08-09 14:42:06 +02:00
Dylan DPC
467e7aae0f
Rollup merge of #100305 - TaKO8Ki:suggest-adding-appropriate-missing-pattern-excluding-comments, r=compiler-errors
Suggest adding an appropriate missing pattern excluding comments

fixes #100272
2022-08-09 17:34:57 +05:30
Dylan DPC
d7f414d540
Rollup merge of #100301 - TaKO8Ki:avoid-&str-to-String-conversions, r=compiler-errors
Avoid `&str` to `String` conversions

This patch removes the recently added unnecessary `&str` to `String` conversions.

follow-up to #99718
2022-08-09 17:34:56 +05:30
Dylan DPC
fac84e8bb6
Rollup merge of #100228 - luqmana:suggestion-ice, r=estebank
Don't ICE while suggesting updating item path.

When an item isn't found, we may suggest an appropriate import to `use`. Along with that, we also suggest updating the path to work with the `use`. Unfortunately, if the code in question originates from a macro, the span used to indicate which part of the path needs updating may not be suitable and cause an ICE (*). Since, such code is not adjustable directly by the user without modifying the macro, just skip the suggestion in such cases.

(*) The ICE happens because the emitter want to indicate to the user what code to delete by referencing a certain span. But in this case, said span has `lo == hi == 0` which means it thinks it's a dummy span. Adding a space before the proc macro attribute is enough to stop it from ICE'ing but even then the suggestion doesn't really make any sense:
```
help: if you import `DataStore`, refer to it directly
  |
1 -  #[dbstruct::dbstruct]
1 +  #[dbstruct::dbstruct]
```

Since suggestions are best-effort, I just gated this one on `can_be_used_for_suggestions` which catches cases like this.

Fixes #100199
2022-08-09 17:34:55 +05:30
Dylan DPC
d910e5376b
Rollup merge of #100221 - compiler-errors:impossible-trait-items, r=lcnr,notriddle,camelid
Don't document impossible to call default trait items on impls

Closes #100176

This only skips documenting _default_ trait items on impls, not ones that are written inside the impl block. This is a conservative approach, since I think we should document all items written in an impl block (I guess unless hidden or whatever), but the existence of this new query I added makes this easy to extend to other rustdoc cases.
2022-08-09 17:34:54 +05:30
Dylan DPC
7efe24c3ed
Rollup merge of #100181 - RalfJung:alloc-ref-mutability, r=jackh726
add method to get the mutability of an AllocId

Miri needs this for https://github.com/rust-lang/miri/issues/2463.
2022-08-09 17:34:52 +05:30
Dylan DPC
e41be25f06
Rollup merge of #99787 - aDotInTheVoid:rdj-dyn, r=camelid,notriddle,GuillaumeGomez
Rustdoc-Json: Document HRTB's on DynTrait

Closes https://github.com/rust-lang/rust/issues/99118

Probably best reviewed commit by commit.

`@rustbot` modify labels: +A-rustdoc-json

cc `@Enselic`

r? `@CraftSpider`
2022-08-09 17:34:51 +05:30
Dylan DPC
1dc4858914
Rollup merge of #96478 - WaffleLapkin:rustc_default_body_unstable, r=Aaron1011
Implement `#[rustc_default_body_unstable]`

This PR implements a new stability attribute — `#[rustc_default_body_unstable]`.

`#[rustc_default_body_unstable]` controls the stability of default bodies in traits.
For example:
```rust
pub trait Trait {
    #[rustc_default_body_unstable(feature = "feat", isssue = "none")]
    fn item() {}
}
```
In order to implement `Trait` user needs to either
- implement `item` (even though it has a default implementation)
- enable `#![feature(feat)]`

This is useful in conjunction with [`#[rustc_must_implement_one_of]`](https://github.com/rust-lang/rust/pull/92164), we may want to relax requirements for a trait, for example allowing implementing either of `PartialEq::{eq, ne}`, but do so in a safe way — making implementation of only `PartialEq::ne` unstable.

r? `@Aaron1011`
cc `@nrc` (iirc you were interested in this wrt `read_buf`), `@danielhenrymantilla` (you were interested in the related `#[rustc_must_implement_one_of]`)
P.S. This is my first time working with stability attributes, so I'm not sure if I did everything right 😅
2022-08-09 17:34:50 +05:30
bors
cc4dd6fc9f Auto merge of #100089 - JakobDegen:no-invalidate-visitor, r=tmiasko
Add option to `mir::MutVisitor` to not invalidate CFG.

This also applies that option to some uses of the visitor. I had considered a design more similar to #100087 in which we detect if the CFG needs to be invalidated, but that is more difficult with the visitor API and so I decided against it. Another alternative to this design is to offer an API for "saving" and "restoring" CFG caches across arbitrary code. Such an API is more general, and so we may eventually want it anyway, but it seems overkill for this use case.

r? `@tmiasko`
2022-08-09 11:05:42 +00:00
lcnr
f25cb83296 don't normalize wf predicates
this allows us to soundly use unnormalized projections for wf
2022-08-09 12:54:32 +02:00
Jakob Degen
7547084ff6 Add option to mir::MutVisitor to not invalidate CFG.
This also applies that option to some uses of the visitor
2022-08-09 01:51:10 -07:00
bors
5af97e8b0b Auto merge of #100304 - matthiaskrgr:rollup-gs56vlw, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #100163 (Refactor: remove an unnecessary string search)
 - #100212 (Remove more Clean trait implementations)
 - #100238 (Further improve error message for E0081)
 - #100268 (Add regression test for #79148)
 - #100294 (Update Duration::as_secs doc to point to as_secs_f64/32 for including fractional part)
 - #100303 (⬆️ rust-analyzer)

Failed merges:

 - #100281 (Remove more Clean trait implementations)

r? `@ghost`
`@rustbot` modify labels: rollup
2022-08-09 08:03:08 +00:00
Takayuki Maeda
56ec5bec1e suggest adding an appropriate missing pattern excluding comments 2022-08-09 14:27:26 +09:00
Matthias Krüger
cacd37ac3c
Rollup merge of #100303 - lnicola:rust-analyzer-2022-08-09, r=lnicola
⬆️ rust-analyzer

r? `@ghost`
2022-08-09 07:06:02 +02:00
Matthias Krüger
e20fabb6d5
Rollup merge of #100294 - theli-ua:master, r=thomcc
Update Duration::as_secs doc to point to as_secs_f64/32 for including fractional part

Rather than suggesting to calculate manually
2022-08-09 07:06:01 +02:00
Matthias Krüger
89835a018e
Rollup merge of #100268 - TaKO8Ki:add-regression-test-for-79148, r=Mark-Simulacrum
Add regression test for #79148

closes #79148
2022-08-09 07:05:59 +02:00
Matthias Krüger
d63d2bd67f
Rollup merge of #100238 - Bryysen:master, r=cjgillot
Further improve error message for E0081

Closes #97533
2022-08-09 07:05:58 +02:00
Matthias Krüger
65cc68b3fd
Rollup merge of #100212 - GuillaumeGomez:rm-clean-impls, r=Dylan-DPC
Remove more Clean trait implementations

Follow-up of https://github.com/rust-lang/rust/pull/99638.

r? `@notriddle`
2022-08-09 07:05:56 +02:00
Matthias Krüger
a1829bbed0
Rollup merge of #100163 - TaKO8Ki:remove-unnecessary-string-search, r=wesleywiser
Refactor: remove an unnecessary string search
2022-08-09 07:05:55 +02:00
bors
8d1fa7105b Auto merge of #100205 - cjgillot:noice-doc, r=camelid
Avoid ICE in rustdoc when using `Fn` bounds

Fixes https://github.com/rust-lang/rust/issues/100143
2022-08-09 05:05:46 +00:00
Laurențiu Nicola
f1e801be71 ⬆️ rust-analyzer 2022-08-09 07:23:57 +03:00
Takayuki Maeda
abbd34d00e avoid &str to String conversions 2022-08-09 12:27:53 +09:00
Anton Romanov
63be9a95b6 Update Duration::as_secs doc to point to as_secs_f64/32 for including fractional part
Rather than suggesting to calculate manually
2022-08-08 18:32:16 -07:00
Noah Lev
28e4b9e64e Add regression test comment 2022-08-08 14:09:55 -07:00
Bryysen
74e71da547 Fix plural form of variant in error message not formatting correctly
due to ordering, added/improved comments and removed redundant test
already caught by `E0081.rs`
2022-08-08 21:34:55 +02:00
Camille GILLOT
eab3b05b62 Synthetize a trait ref when none is available. 2022-08-08 21:09:09 +02:00
Takayuki Maeda
b3bc2111ac add regression test for #79148 2022-08-08 19:50:10 +09:00
bors
f03ce30962 Auto merge of #98863 - compiler-errors:projection-msg, r=estebank
Implement special-cased projection error message for some common traits

Not sure what the best phrasing is, but I feel like these are more clear than the plain `<Type as Iterator>::Output == Type` messages.

If this is actually a good idea, are there any other traits this could benefit?
2022-08-08 10:16:20 +00:00
bors
9b8cfc1eed Auto merge of #98489 - cjgillot:naked-nohir, r=davidtwco,tmiasko
Only fetch HIR for naked functions that have the attribute.
2022-08-08 07:31:12 +00:00
bors
6a11cad7e8 Auto merge of #100207 - notriddle:notriddle/skipped-inline-module, r=Manishearth
rustdoc: do not mark the contents of a skipped module as inlined

Fixes #100204
2022-08-08 04:39:29 +00:00
Michael Goulet
3fdf3cb80c Adjust wording 2022-08-08 00:13:41 +00:00
Michael Goulet
750f04d309 Implement special-cased projection error message for some common traits 2022-08-07 23:57:53 +00:00
Michael Goulet
b3b23aada9 Don't document impossible to call default trait items on impls 2022-08-07 23:44:05 +00:00
Bryysen
bfd7535130 Fix wording on comment 2022-08-07 23:50:12 +02:00
bors
93ab13b4e8 Auto merge of #100245 - matthiaskrgr:rollup-tfoo650, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #100019 (Revive suggestions for boxed trait objects instead of impl Trait)
 - #100038 (Document the `no-std` target option in config.toml.example)
 - #100194 (Remove even more box syntax uses from src/test)
 - #100206 (test: skip terminfo parsing in Miri)
 - #100230 (Use start_point instead of next_point to point to elided lifetime amp…)
 - #100244 (Add armv4t-none-eabi take2)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-08-07 21:25:29 +00:00
Luqman Aden
15b1daaca3 Add UI test for #100199 2022-08-07 14:01:04 -07:00
Bryysen
399796d2b3 Add comments to obscure code, remove unnesecary parameter from closure 2022-08-07 22:28:16 +02:00
Matthias Krüger
0f7fe9f997
Rollup merge of #100244 - Lokathor:add-armv4t-none-eabi-take2, r=jackh726
Add armv4t-none-eabi take2

This is the same as the previous PR (https://github.com/rust-lang/rust/pull/99226) but i just made a fresh branch without a merge commit in it.

---

### armv4t-none-eabi target quiz

> A tier 3 target must have a designated developer or developers (the "target maintainers") on record to be CCed when issues arise regarding the target.

That's me!

> Targets must use naming consistent with any existing targets

We're using the existing name as recognized by LLVM and GCC

> Tier 3 targets may have unusual requirements to build or use, but must not create legal issues or impose onerous legal terms for the Rust project or for Rust developers or users.

No legal issues here.

>> The target must not introduce license incompatibilities.

No license requirements here.

>> Anything added to the Rust repository must be under the standard Rust license (MIT OR Apache-2.0).

check

>> The target must not cause the Rust tools or libraries built for any other host (even when supporting cross-compilation to the target) to depend on any new dependency less permissive than the Rust licensing policy.

no new deps, we're just adding a rustc target description file for a target llvm already knows about.

>> Compiling, linking, and emitting functional binaries, libraries, or other code for the target (whether hosted on the target itself or cross-compiling from another target) must not depend on proprietary (non-FOSS) libraries.

bare-metal target, doesn't rely on any libs at all.

> Tier 3 targets should attempt to implement as much of the standard libraries as possible and appropriate

`core` only here. You could build `alloc` too, but you'd have to bring your own global allocator.

> The target must provide documentation for the Rust community explaining how to build for the target, using cross-compilation if possible.

LLVM knows how to do it, you just need the GNU Binutils linker because LLVM's linker doesn't work that far back. That's in the docs as part of this PR.

> Tier 3 targets must not impose burden on the authors of pull requests, or other developers in the community, to maintain the target.

No burdens, LLVM already knows how to do this. Further, because this is a cpu-feature variant of an existing tier3 target the `compiler-builtins` crate has already been updated as necessary to fix any missing builtin function gaps.

> Patches adding or updating tier 3 targets must not break any existing tier 2 or tier 1 target, and must not knowingly break another tier 3 target without approval of either the compiler team or the maintainers of the other tier 3 target.

check.
2022-08-07 21:10:27 +02:00
Matthias Krüger
5648add9ef
Rollup merge of #100230 - cjgillot:noice-multibyte-amp, r=compiler-errors
Use start_point instead of next_point to point to elided lifetime amp…

Using `next_point` creates a span which points inside the multibyte token, ICEing.

Fixes https://github.com/rust-lang/rust/issues/100224
2022-08-07 21:10:26 +02:00
Matthias Krüger
07315fe970
Rollup merge of #100206 - RalfJung:miri-terminfo, r=thomcc
test: skip terminfo parsing in Miri

Terminfo parsing takes a significant amount of time in Miri, making libtest startup very slow. To work around that Miri in fact unsets the `TERM` variable. However, this means we don't get colors in `cargo miri test`.

So I propose we add some logic in libtest that skips parsing terminfo files under Miri, and just uses the regular basic coloring commands (taken from the `colored` crate).

As far as I can see, these two commands are all that libtest ever needs from terminfo, so Miri doesn't even lose any functionality through this. If you want I can entirely remove the terminfo parsing code and just use these commands instead.

Cc https://github.com/rust-lang/miri/issues/2292 `@saethlin`
2022-08-07 21:10:25 +02:00
Matthias Krüger
790377a0b9
Rollup merge of #100194 - est31:box_syntax_tests, r=Mark-Simulacrum
Remove even more box syntax uses from src/test

Prior work, notably #88316 has removed box syntax from most of the testsuite.
However, some tests were left out.
This commit removes box_syntax uses from more locations in src/test.
This migrates the tests where `box` is mostly an "implementation detail" and not the primary thing being tested by the test.
Furthermore, some tests from the mir-opt test suite are not being migrated.
2022-08-07 21:10:24 +02:00
Matthias Krüger
ae5e659c39
Rollup merge of #100038 - nicholasbishop:bishop-add-no-std, r=Mark-Simulacrum
Document the `no-std` target option in config.toml.example
2022-08-07 21:10:23 +02:00
Matthias Krüger
7be359e51b
Rollup merge of #100019 - TaKO8Ki:suggest-boxed-trait-objects-instead-of-impl-trait, r=compiler-errors
Revive suggestions for boxed trait objects instead of impl Trait

The suggestion implemented in #75608 was not working properly, so I fixed it.
2022-08-07 21:10:22 +02:00
bors
d394408fb3 Auto merge of #100218 - nicholasbishop:bishop-update-cb, r=Mark-Simulacrum
Update compiler_builtins to 0.1.78

Among other things, this pulls in https://github.com/rust-lang/compiler-builtins/pull/475, which fixes some i128/u128 arithmetic operations on the `x86_64-unknown-uefi` target.
2022-08-07 18:44:41 +00:00
Lokathor
b4a82998e5
Update SUMMARY.md 2022-08-07 12:42:25 -06:00