]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agofix missing word
Taylor Yu [Fri, 2 Jul 2021 00:14:27 +0000 (19:14 -0500)]
fix missing word

3 years agooption/result overviews: address feedback
Taylor Yu [Thu, 24 Jun 2021 17:33:51 +0000 (12:33 -0500)]
option/result overviews: address feedback

(Most of these are from a review by joshtriplett. Thanks!)

Fix errors in `as_pin_ref` and `as_pin_mut` in the "Adapters for
working with references" overview.

Reword some headings about transformation methods.

Reclassify `map`, `map_or`, `map_or_else`, `map_err`, etc. to more
accurately reflect which variants they transform.

Document `Debug` requirement for `get_or_insert_default`.

Reword text about `take` and `replace` to be more accurate.

Add examples for the `Product` and `Sum` traits.

Also:

Move link reference definitions closer to their uses. Warn about making
link reference definintions for `err` and `ok`. Avoid making other link
reference definitions that might conflict in the future (foreign methods
that share a name with local ones, etc.)

Write out the generics of `Option` and `Result` when the following
text refers to the type parameters.

3 years agoSome<T> is not a type, etc
Taylor Yu [Tue, 22 Jun 2021 20:35:14 +0000 (15:35 -0500)]
Some<T> is not a type, etc

3 years agoadd more to result overview
Taylor Yu [Sat, 19 Jun 2021 20:09:27 +0000 (15:09 -0500)]
add more to result overview

3 years agoadd boolean operator example
Taylor Yu [Tue, 15 Jun 2021 00:30:05 +0000 (19:30 -0500)]
add boolean operator example

3 years agoupdates based on feedback
Taylor Yu [Sat, 12 Jun 2021 20:10:58 +0000 (15:10 -0500)]
updates based on feedback

Make minor wording changes in a few places. Move `filter` to the
"transformations" section. Add `zip` methods to the "transformations"
section. Clarify the section about `Option` iterators, and add a section
about collecting into `Option`.

Clarify that for `Result`, `or` and `or_else` can also produce a
`Result` having a different type.

3 years agoadd modify-in-place methods to option overview
Taylor Yu [Fri, 11 Jun 2021 18:10:29 +0000 (13:10 -0500)]
add modify-in-place methods to option overview

3 years agomore transformation methods in option overview
Taylor Yu [Fri, 11 Jun 2021 17:47:37 +0000 (12:47 -0500)]
more transformation methods in option overview

3 years agoupdates based on reviews
Taylor Yu [Fri, 11 Jun 2021 16:34:57 +0000 (11:34 -0500)]
updates based on reviews

Fix an error in `map_or_else`. Use more descriptive text for
"don't care" in truth tables. Make minor corrections to truth tables.
Rename `makeiter` to `make_iter` in examples.

3 years agomethod overviews for option and result
Taylor Yu [Fri, 11 Jun 2021 03:17:03 +0000 (22:17 -0500)]
method overviews for option and result

3 years agofix typo in option doc
Taylor Yu [Fri, 11 Jun 2021 03:27:27 +0000 (22:27 -0500)]
fix typo in option doc

Fix a typo/missed replacement in the documentation for
`impl From<&Option<T>> for Option<&T>` in `core::option`.

3 years agofix wording in option doc
Taylor Yu [Fri, 11 Jun 2021 03:25:11 +0000 (22:25 -0500)]
fix wording in option doc

Fix some awkward wording in the `core::option` documentation in the
"Options and pointers" section.

3 years agoUpdate Miri
hyd-dev [Tue, 8 Jun 2021 15:33:39 +0000 (23:33 +0800)]
Update Miri

3 years agoAuto merge of #86127 - JohnTitor:rollup-0c6mp3j, r=JohnTitor
bors [Tue, 8 Jun 2021 07:04:31 +0000 (07:04 +0000)]
Auto merge of #86127 - JohnTitor:rollup-0c6mp3j, r=JohnTitor

Rollup of 11 pull requests

Successful merges:

 - #85906 (Use `Iterator::find` instead of open-coding it)
 - #85951 (Update the documentation of `-C force-unwind-tables` for #83482)
 - #85985 (Clarify documentation of slice sorting methods)
 - #85989 (Remove rustfmt tests from top-level .gitattributes)
 - #86074 (Default panic message should print Box<dyn Any>)
 - #86078 (Type page font weight)
 - #86090 (:arrow_up: rust-analyzer)
 - #86095 (Search description codeblock)
 - #86096 (Comment out unused error codes and add description for E0316)
 - #86101 (Correct type signature in doc for Bound::as_mut)
 - #86103 (Remove lifetime hack)

Failed merges:

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

3 years agoRollup merge of #86103 - camsteffen:lifetime-hack, r=jackh726
Yuki Okushi [Tue, 8 Jun 2021 04:26:38 +0000 (13:26 +0900)]
Rollup merge of #86103 - camsteffen:lifetime-hack, r=jackh726

Remove lifetime hack

It compiles without the hack. But I don't know why. I can't get the example in the referenced issue to compile...

3 years agoRollup merge of #86101 - glittershark:bound-as-mut-doc-fix, r=m-ou-se
Yuki Okushi [Tue, 8 Jun 2021 04:26:37 +0000 (13:26 +0900)]
Rollup merge of #86101 - glittershark:bound-as-mut-doc-fix, r=m-ou-se

Correct type signature in doc for Bound::as_mut

Thanks to ``@drmason13`` for pointing this out!

3 years agoRollup merge of #86096 - FabianWolff:ec-E0316, r=GuillaumeGomez
Yuki Okushi [Tue, 8 Jun 2021 04:26:36 +0000 (13:26 +0900)]
Rollup merge of #86096 - FabianWolff:ec-E0316, r=GuillaumeGomez

Comment out unused error codes and add description for E0316

I have added an extended description of `E0316` and commented out a bunch of unused error codes to make clear the fact that they are no longer in use. You can check for yourself with
```shell
for ec in                                                \
    E0314 E0315   E0473 E0474 E0475   E0479 E0480 E0481  \
    E0483 E0484 E0485 E0486 E0487 E0488 E0489
do
    if [ ! -z "`grep -r $ec compiler/* --exclude-dir=rustc_error_codes`" ]
    then
        echo $ec
        false
    fi
done
```
i.e. these error codes appear nowhere in the compiler code and thus cannot be emitted.

r? ```@GuillaumeGomez```

3 years agoRollup merge of #86095 - GuillaumeGomez:search-description-codeblock, r=jsha
Yuki Okushi [Tue, 8 Jun 2021 04:26:35 +0000 (13:26 +0900)]
Rollup merge of #86095 - GuillaumeGomez:search-description-codeblock, r=jsha

Search description codeblock

The codeblocks are not displayed correctly:

![Screenshot from 2021-06-07 11-11-53](https://user-images.githubusercontent.com/3050060/120991915-5fb05680-c782-11eb-9b32-973a64b1f631.png)

This PR interprets the HTML correctly (and still prevent invalid HTML because of how it inserts it):

![Screenshot from 2021-06-07 11-12-00](https://user-images.githubusercontent.com/3050060/120991919-6048ed00-c782-11eb-8ac5-c3aa6508bc8b.png)

r? ```@jsha```

3 years agoRollup merge of #86090 - lnicola:rust-analyzer-2021-06-07, r=jonas-schievink
Yuki Okushi [Tue, 8 Jun 2021 04:26:33 +0000 (13:26 +0900)]
Rollup merge of #86090 - lnicola:rust-analyzer-2021-06-07, r=jonas-schievink

:arrow_up: rust-analyzer

3 years agoRollup merge of #86078 - GuillaumeGomez:type-page-font-weight, r=jsha
Yuki Okushi [Tue, 8 Jun 2021 04:26:32 +0000 (13:26 +0900)]
Rollup merge of #86078 - GuillaumeGomez:type-page-font-weight, r=jsha

Type page font weight

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

r? ```@jsha```

3 years agoRollup merge of #86074 - reaganmcf:iss-86039, r=jyn514
Yuki Okushi [Tue, 8 Jun 2021 04:26:31 +0000 (13:26 +0900)]
Rollup merge of #86074 - reaganmcf:iss-86039, r=jyn514

Default panic message should print Box<dyn Any>

Closes #86039

Prior to this patch, the panic message from running the following code would be `thread 'main' panicked at 'Box<Any>'...`
```rust
use std::panic::panic_any;
fn main() {
    panic_any(42);
}
```

This patch updates the phrasing to be more consistent. It now instead shows the following panic message:

```
thread 'main' panicked at 'Box<dyn Any>', ...
```

It's a very small fix ðŸ˜„

3 years agoRollup merge of #85989 - jyn514:gitignore-cleanup, r=ehuss
Yuki Okushi [Tue, 8 Jun 2021 04:26:30 +0000 (13:26 +0900)]
Rollup merge of #85989 - jyn514:gitignore-cleanup, r=ehuss

Remove rustfmt tests from top-level .gitattributes

These are tracked in src/tools/rustfmt/.gitattributes already, they
don't need to be listed twice.

r? `@ehuss` since you suggested adding them in https://github.com/rust-lang/rust/pull/82208/#issuecomment-841440199; I think it should be ok now that bors isn't trying to merge the `subtree add` changes.

cc `@calebcartwright`

3 years agoRollup merge of #85985 - Lionelf329:master, r=joshtriplett
Yuki Okushi [Tue, 8 Jun 2021 04:26:29 +0000 (13:26 +0900)]
Rollup merge of #85985 - Lionelf329:master, r=joshtriplett

Clarify documentation of slice sorting methods

After reading about [this](https://polkadot.network/a-polkadot-postmortem-24-05-2021/), I realized that although the documentation of these methods is not ambiguous in its current state, it is very easy to read it and erroneously assume that their exact behaviour can be relied upon to be deterministic. Although the docs make no guarantees about which index is returned when there are multiple matches, being more explicit about when and how their determinism can be relied upon should help prevent people from making this mistake in the future.

r? ``@steveklabnik``

3 years agoRollup merge of #85951 - hyd-dev:force-unwind-tables, r=steveklabnik
Yuki Okushi [Tue, 8 Jun 2021 04:26:28 +0000 (13:26 +0900)]
Rollup merge of #85951 - hyd-dev:force-unwind-tables, r=steveklabnik

Update the documentation of `-C force-unwind-tables` for #83482

`panic=unwind` does not require `force-unwind-tables` to be "yes" anymore.
I forgot to update this in #83482.

3 years agoRollup merge of #85906 - LingMan:iter_find, r=matthewjasper
Yuki Okushi [Tue, 8 Jun 2021 04:26:28 +0000 (13:26 +0900)]
Rollup merge of #85906 - LingMan:iter_find, r=matthewjasper

Use `Iterator::find` instead of open-coding it

```@rustbot``` modify labels +C-cleanup +T-compiler

3 years agoAuto merge of #86115 - Xanewok:update-rls, r=Xanewok
bors [Tue, 8 Jun 2021 04:23:27 +0000 (04:23 +0000)]
Auto merge of #86115 - Xanewok:update-rls, r=Xanewok

Update RLS

This bumps racer to 2.1.48, which bumps rustc-ap-* crates to v722 in
order to unbreak the toolstate.

r? `@ghost`

3 years agoAuto merge of #83515 - tamird:string-remove-matches-rev, r=m-ou-se
bors [Tue, 8 Jun 2021 01:05:48 +0000 (01:05 +0000)]
Auto merge of #83515 - tamird:string-remove-matches-rev, r=m-ou-se

String::remove_matches O(n^2) -> O(n)

Copy only non-matching bytes. Replace collection of matches into a
vector with iteration over rejections, exploiting the guarantee that we
mutate parts of the haystack that have already been searched over.

r? `@joshtriplett`

3 years agoClarify documentation of slice sorting methods
Lionel Foxcroft [Fri, 4 Jun 2021 05:27:19 +0000 (01:27 -0400)]
Clarify documentation of slice sorting methods

3 years agoUpdate RLS
Igor Matuszewski [Mon, 7 Jun 2021 20:12:24 +0000 (22:12 +0200)]
Update RLS

This bumps racer to 2.1.48, which bumps rustc-ap-* crates to v722 in
order to unbreak the toolstate.

3 years agoCorrect type signature in doc for Bound::as_mut
Griffin Smith [Mon, 7 Jun 2021 14:55:31 +0000 (10:55 -0400)]
Correct type signature in doc for Bound::as_mut

3 years agoRemove lifetime hack
Cameron Steffen [Mon, 7 Jun 2021 14:50:07 +0000 (09:50 -0500)]
Remove lifetime hack

3 years agoAuto merge of #85903 - bjorn3:rustc_serialize_cleanup, r=varkor
bors [Mon, 7 Jun 2021 14:40:26 +0000 (14:40 +0000)]
Auto merge of #85903 - bjorn3:rustc_serialize_cleanup, r=varkor

Remove unused functions and arguments from rustc_serialize

3 years agoBless ui/where-clauses/where-for-self.rs test
Fabian Wolff [Mon, 7 Jun 2021 13:00:47 +0000 (15:00 +0200)]
Bless ui/where-clauses/where-for-self.rs test

3 years agoAdd E0316.md
Fabian Wolff [Mon, 7 Jun 2021 11:05:17 +0000 (13:05 +0200)]
Add E0316.md

3 years agoComment out unused error codes in error_codes.rs
Fabian Wolff [Mon, 7 Jun 2021 11:01:04 +0000 (13:01 +0200)]
Comment out unused error codes in error_codes.rs

3 years agoAuto merge of #85891 - bjorn3:revert_merge_crate_disambiguator, r=Mark-Simulacrum
bors [Mon, 7 Jun 2021 10:42:56 +0000 (10:42 +0000)]
Auto merge of #85891 - bjorn3:revert_merge_crate_disambiguator, r=Mark-Simulacrum

Revert "Merge CrateDisambiguator into StableCrateId"

This reverts https://github.com/rust-lang/rust/pull/85804

3 years agoAdd test to ensure the result descripton is correctly handling codeblocks
Guillaume Gomez [Mon, 7 Jun 2021 09:19:29 +0000 (11:19 +0200)]
Add test to ensure the result descripton is correctly handling codeblocks

3 years agoFix integration of codeblocks in search result description
Guillaume Gomez [Mon, 7 Jun 2021 09:12:27 +0000 (11:12 +0200)]
Fix integration of codeblocks in search result description

3 years agoRevert "Merge CrateDisambiguator into StableCrateId"
bjorn3 [Tue, 1 Jun 2021 14:32:13 +0000 (16:32 +0200)]
Revert "Merge CrateDisambiguator into StableCrateId"

This reverts commit d0ec85d3fb6d322496cb8f4bc1c21e19f23284ad.

3 years agoRevert "Fix test"
bjorn3 [Tue, 1 Jun 2021 14:31:58 +0000 (16:31 +0200)]
Revert "Fix test"

This reverts commit 3abdebe79d9a3a2256a36fe8f408dad6a466f89f.

3 years agoRevert "Update tests"
bjorn3 [Tue, 1 Jun 2021 14:31:57 +0000 (16:31 +0200)]
Revert "Update tests"

This reverts commit c76b1b031753fc08a18a3906d828683476c1e595.

3 years agoRevert "Update mir opt tests"
bjorn3 [Tue, 1 Jun 2021 14:31:54 +0000 (16:31 +0200)]
Revert "Update mir opt tests"

This reverts commit e0e0cfa6492292d0b905b07a4ed727f4e1aefc80.

3 years agoAuto merge of #86091 - JohnTitor:rollup-wceot6d, r=JohnTitor
bors [Mon, 7 Jun 2021 08:01:45 +0000 (08:01 +0000)]
Auto merge of #86091 - JohnTitor:rollup-wceot6d, r=JohnTitor

Rollup of 6 pull requests

Successful merges:

 - #84262 (Fix ICE during type layout when there's a `[type error]`)
 - #85973 (Replace a `match` with an `if let`)
 - #85996 (rustbuild: take changes to the standard library into account for `download-rustc`)
 - #86016 (Unify duplicate linker_and_flavor methods in rustc_codegen_{cranelift,ssa}.)
 - #86025 (Remove the install prefix from the rpath set when using -Crpath)
 - #86081 (Use `try_into` instead of asserting manually)

Failed merges:

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

3 years agoRollup merge of #86081 - LingMan:try_into, r=jyn514
Yuki Okushi [Mon, 7 Jun 2021 06:21:05 +0000 (15:21 +0900)]
Rollup merge of #86081 - LingMan:try_into, r=jyn514

Use `try_into` instead of asserting manually

`@rustbot` modify labels +C-cleanup +T-compiler

3 years agoRollup merge of #86025 - bjorn3:no_rpath_cfg_prefix, r=jackh726
Yuki Okushi [Mon, 7 Jun 2021 06:21:04 +0000 (15:21 +0900)]
Rollup merge of #86025 - bjorn3:no_rpath_cfg_prefix, r=jackh726

Remove the install prefix from the rpath set when using -Crpath

It was broken anyway for rustup installs and nobody seems to have noticed.

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

3 years agoRollup merge of #86016 - luqmana:infer-linker-flavor, r=petrochenkov
Yuki Okushi [Mon, 7 Jun 2021 06:21:03 +0000 (15:21 +0900)]
Rollup merge of #86016 - luqmana:infer-linker-flavor, r=petrochenkov

Unify duplicate linker_and_flavor methods in rustc_codegen_{cranelift,ssa}.

The two methods were exactly the same so this removes the cranelift copy. This will help make sure both they don't get out of sync.

3 years agoRollup merge of #85996 - jyn514:library-changes, r=Mark-Simulacrum
Yuki Okushi [Mon, 7 Jun 2021 06:21:02 +0000 (15:21 +0900)]
Rollup merge of #85996 - jyn514:library-changes, r=Mark-Simulacrum

rustbuild: take changes to the standard library into account for `download-rustc`

Previously, changing the standard library with `download-rustc =
"if-unchanged"` would incorrectly reuse the cached compiler and standard
library from CI, which was confusing and led to incorrect test failures
or successes.

r? `@Mark-Simulacrum`

3 years agoRollup merge of #85973 - LingMan:indentation, r=jyn514
Yuki Okushi [Mon, 7 Jun 2021 06:21:01 +0000 (15:21 +0900)]
Rollup merge of #85973 - LingMan:indentation, r=jyn514

Replace a `match` with an `if let`

Seems like a better fit here and saves one level of indentation.

`@rustbot` modify labels +C-cleanup +T-compiler

3 years agoRollup merge of #84262 - camelid:sized-ice, r=estebank
Yuki Okushi [Mon, 7 Jun 2021 06:20:56 +0000 (15:20 +0900)]
Rollup merge of #84262 - camelid:sized-ice, r=estebank

Fix ICE during type layout when there's a `[type error]`

Fixes #84108.

Based on estebank's [comment], except I used `delay_span_bug` because it
should work in more cases, and I think it expresses its intent more
clearly.

r? `@estebank`

[comment]: https://github.com/rust-lang/rust/issues/84108#issuecomment-818916848

3 years ago:arrow_up: rust-analyzer
Laurențiu Nicola [Mon, 7 Jun 2021 05:15:15 +0000 (08:15 +0300)]
:arrow_up: rust-analyzer

3 years agoAuto merge of #85810 - bjorn3:further_driver_cleanup, r=varkor
bors [Mon, 7 Jun 2021 02:30:24 +0000 (02:30 +0000)]
Auto merge of #85810 - bjorn3:further_driver_cleanup, r=varkor

Driver improvements

This PR contains a couple of cleanups for the driver and a few small improvements for the custom codegen backend interface. It also implements `--version` and `-Cpasses=list` support for custom codegen backends.

3 years agoAuto merge of #86080 - GuillaumeGomez:rollup-vb5g14e, r=GuillaumeGomez
bors [Mon, 7 Jun 2021 00:01:10 +0000 (00:01 +0000)]
Auto merge of #86080 - GuillaumeGomez:rollup-vb5g14e, r=GuillaumeGomez

Rollup of 8 pull requests

Successful merges:

 - #83433 (Pass --cfg=bootstrap for proc macros built by stage0)
 - #84940 (Don't run sanity checks for `x.py setup`)
 - #85912 (Use `Iterator::any` and `filter_map` instead of open-coding them)
 - #85965 (Remove dead code from `LocalAnalyzer`)
 - #86010 (Fix two ICEs in the parser)
 - #86040 (Fix display for search results)
 - #86058 (Remove `_`  from E0121 diagnostic suggestions)
 - #86077 (Fix corrected example in E0759.md)

Failed merges:

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

3 years agoUpdate testsuite to match new panic msg
Reagan McFarland [Sun, 6 Jun 2021 23:38:53 +0000 (19:38 -0400)]
Update testsuite to match new panic msg

This patch fixes tests from failing that were matching on `Box<Any>`,
which was the old panic message. Since the new panic message is `Box<dyn
Any>`, the tests have been updated to match against this instead.

3 years agoUse `try_into` instead of asserting manually
LingMan [Sun, 6 Jun 2021 23:27:40 +0000 (01:27 +0200)]
Use `try_into` instead of asserting manually

3 years agoRollup merge of #86077 - FabianWolff:issue-86061, r=GuillaumeGomez
Guillaume Gomez [Sun, 6 Jun 2021 23:06:55 +0000 (01:06 +0200)]
Rollup merge of #86077 - FabianWolff:issue-86061, r=GuillaumeGomez

Fix corrected example in E0759.md

This pull request fixes #86061, which was probably caused by a copy-paste error, where the supposedly corrected code example was also marked with `compile_fail`. Thus, the fact that the "correct" example actually _isn't_ correct was not caught by the doc-tests. This pull request removes the incorrect `compile_fail` annotation and fixes the example.

r? ``@GuillaumeGomez``

3 years agoRollup merge of #86058 - fee1-dead:E0121-improvements, r=jackh726
Guillaume Gomez [Sun, 6 Jun 2021 23:06:54 +0000 (01:06 +0200)]
Rollup merge of #86058 - fee1-dead:E0121-improvements, r=jackh726

Remove `_`  from E0121 diagnostic suggestions

Fixes #86021.

3 years agoRollup merge of #86040 - GuillaumeGomez:search-result-display-height, r=jsha
Guillaume Gomez [Sun, 6 Jun 2021 23:06:53 +0000 (01:06 +0200)]
Rollup merge of #86040 - GuillaumeGomez:search-result-display-height, r=jsha

Fix display for search results

This fixes unwanted margin and font-weight coming from `.method`. Before:

![Screenshot from 2021-06-05 23-03-34](https://user-images.githubusercontent.com/3050060/120905486-9e46f380-c652-11eb-8008-6db6e0517ba3.png)

after:

![Screenshot from 2021-06-05 23-05-02](https://user-images.githubusercontent.com/3050060/120905489-9edf8a00-c652-11eb-817d-f676f6ab7303.png)

r? ``@jsha``

3 years agoRollup merge of #86010 - FabianWolff:ICE-parser, r=varkor
Guillaume Gomez [Sun, 6 Jun 2021 23:06:52 +0000 (01:06 +0200)]
Rollup merge of #86010 - FabianWolff:ICE-parser, r=varkor

Fix two ICEs in the parser

This pull request fixes #84104 and fixes #84148. The latter is caused by an invalid `assert_ne!()` in the parser, which I have simply removed because the error is then caught in another part of the parser.

#84104 is somewhat more subtle and has to do with a suggestion to remove extraneous `<` characters; for instance:
```rust
fn main() {
    foo::<Ty<<<i32>();
}
```
currently leads to
```
error: unmatched angle brackets
 --> unmatched-langle.rs:2:10
  |
2 |     foo::<Ty<<<i32>();
  |          ^^^ help: remove extra angle brackets
```
which is obviously wrong and stems from the fact that the code for issuing the above suggestion does not consider the possibility that there might be other tokens in between the opening angle brackets. In #84104, this has led to a span being generated that ends in the middle of a multi-byte character (because the code issuing the suggestion thought that it was only skipping over `<`, which are single-byte), causing an ICE.

3 years agoRollup merge of #85965 - tmiasko:a, r=nagisa
Guillaume Gomez [Sun, 6 Jun 2021 23:06:51 +0000 (01:06 +0200)]
Rollup merge of #85965 - tmiasko:a, r=nagisa

Remove dead code from `LocalAnalyzer`

3 years agoRollup merge of #85912 - LingMan:iter_any, r=nagisa
Guillaume Gomez [Sun, 6 Jun 2021 23:06:50 +0000 (01:06 +0200)]
Rollup merge of #85912 - LingMan:iter_any, r=nagisa

Use `Iterator::any` and `filter_map` instead of open-coding them

``@rustbot`` modify labels +C-cleanup +T-compiler

3 years agoRollup merge of #84940 - jyn514:ninja, r=Mark-Simulacrum
Guillaume Gomez [Sun, 6 Jun 2021 23:06:49 +0000 (01:06 +0200)]
Rollup merge of #84940 - jyn514:ninja, r=Mark-Simulacrum

Don't run sanity checks for `x.py setup`

These requirements change as soon as the command finishes running, and
`setup` doesn't build anything, so the check doesn't make sense.

Previously, `x.py setup` would give hard errors if `ninja` and `cmake`
were not installed, even if the new profile didn't require them.

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

3 years agoRollup merge of #83433 - jyn514:cfg-bootstrap-macro, r=Mark-Simulacrum
Guillaume Gomez [Sun, 6 Jun 2021 23:06:48 +0000 (01:06 +0200)]
Rollup merge of #83433 - jyn514:cfg-bootstrap-macro, r=Mark-Simulacrum

Pass --cfg=bootstrap for proc macros built by stage0

Cargo has a bug where it ignores RUSTFLAGS when building proc macro
crates (https://github.com/rust-lang/cargo/issues/4423).
However, sometimes rustc_macro needs to have conditional
compilation when there are breaking changes to the `libproc_macro` API
(see for example #83363). Previously, this wasn't possible, because the
crate couldn't tell the difference between stage 0 and stage 1.

Another alternative is to unconditionally build rustc_macros with the
master libstd instead of the beta one (i.e. use `--sysroot
stage0-sysroot`), but that led to strange and maddening errors:

```
error[E0460]: found possibly newer version of crate `std` which `synstructure` depends on
 --> compiler/rustc_macros/src/lib.rs:5:5
  |
5 | use synstructure::decl_derive;
  |     ^^^^^^^^^^^^
  |
  = note: perhaps that crate needs to be recompiled?
  = note: the following crate versions were found:
          crate `std`: /home/joshua/rustc2/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-b3602c301b71cc3d.rmeta
          crate `synstructure`: /home/joshua/rustc2/build/x86_64-unknown-linux-gnu/stage0-rustc/release/deps/libsynstructure-74ee66863479e972.rmeta
error[E0460]: found possibly newer version of crate `std` which `proc_macro2` depends on
  --> /home/joshua/.local/lib/cargo/registry/src/github.com-1ecc6299db9ec823/tracing-attributes-0.1.13/src/lib.rs:90:5
   |
90 | use proc_macro2::TokenStream;
   |     ^^^^^^^^^^^
   |
   = note: perhaps that crate needs to be recompiled?
   = note: the following crate versions were found:
           crate `std`: /home/joshua/rustc2/build/x86_64-unknown-linux-gnu/stage0-sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-b3602c301b71cc3d.rmeta
           crate `proc_macro2`: /home/joshua/rustc2/build/x86_64-unknown-linux-gnu/stage0-rustc/release/deps/libproc_macro2-a83c1f01610c129e.rlib
```

r? `@Mark-Simulacrum` cc `@jhpratt`

3 years agoAdd test to check that font-weight is correctly set on type page
Guillaume Gomez [Sun, 6 Jun 2021 21:06:49 +0000 (23:06 +0200)]
Add test to check that font-weight is correctly set on type page

3 years agoFix invalid weight for type pages
Guillaume Gomez [Sun, 6 Jun 2021 21:06:01 +0000 (23:06 +0200)]
Fix invalid weight for type pages

3 years agoFix corrected example in E0759.md
Fabian Wolff [Sun, 6 Jun 2021 20:54:00 +0000 (22:54 +0200)]
Fix corrected example in E0759.md

3 years agoDefault panic message should print Box<dyn Any>
Reagan McFarland [Sun, 6 Jun 2021 20:21:47 +0000 (16:21 -0400)]
Default panic message should print Box<dyn Any>

Prior to this patch, the default panic message (resulting from calling
`panic_any(42);` for example), would print the following error message:

```
thread 'main' panicked at 'Box<Any>', ...
```

However, this should be `Box<dyn Any>` instead.

3 years agoAuto merge of #85343 - Aaron1011:variance-diag, r=estebank
bors [Sun, 6 Jun 2021 19:12:05 +0000 (19:12 +0000)]
Auto merge of #85343 - Aaron1011:variance-diag, r=estebank

Add variance-related information to lifetime error messages

This PR adds a basic framework for displaying variance-related information in error messages. For example:

```
error: lifetime may not live long enough
  --> $DIR/type-check-pointer-comparisons.rs:12:5
   |
LL | fn compare_mut<'a, 'b>(x: *mut &'a i32, y: *mut &'b i32) {
   |                --  -- lifetime `'b` defined here
   |                |
   |                lifetime `'a` defined here
LL |     x == y;
   |     ^ requires that `'a` must outlive `'b`
   |
   = help: consider adding the following bound: `'a: 'b`
   = note: requirement occurs because of a mutable pointer to &i32
   = note: mutable pointers are invariant over their type parameter
   = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
```

The last three lines are new.

This is accomplished by adding a new struct `VarianceDiagInfo`, and passing it along through the various relation methods. When relating types that change the variance (e.g. `&mut T` or `*mut T`), we pass a more specific `VarianceDiagInfo` storing information about the cause of the variance change. When an error, we use the `VarianceDiagInfo` to add additional information to the error message.

This PR doesn't change any variance-related computation or behavior - only diagnostic messages. Therefore, the implementation is quite incomplete - more detailed error messages can be filled in in subsequent PRs.

Limitations:
* We only attempt to deal with invariance - since it's at the bottom of the 'variance lattice', our variance will never change again after it becomes invariant. Handling contravariance would be trickier, since we can change between contravariance and covariance multiple times (e.g. `fn(fn(&'static u8))`). Since contravariance (AFAIK) is only used for function arguments, we can probably get away without a very fancy message for cases involving contravariance.
* `VarianceDiagInfo` currently only handles mutable pointers/references. However, user-defined types (structs, enums, and unions) have the variance of their type parameters inferred, so it would be good to eventually display information about that. We'll want to try to find a balance between displaying too much and too little information about how the variance was inferred.
* The improved error messages are only displayed when `#![feature(nll)]` / `-Z borrowck=mir` is enabled.  If issue https://github.com/rust-lang/rust/issues/58781 is not resolved relatively soon, then we might want to duplicate some of this logic in the 'current' (non-NLL) region/outlives handling code.

3 years agoAdd variance-related information to lifetime error messages
Aaron Hill [Thu, 13 May 2021 13:30:14 +0000 (09:30 -0400)]
Add variance-related information to lifetime error messages

3 years agoAuto merge of #85086 - petrochenkov:linkord2, r=nagisa
bors [Sun, 6 Jun 2021 16:41:36 +0000 (16:41 +0000)]
Auto merge of #85086 - petrochenkov:linkord2, r=nagisa

linker: Reorder linker arguments

- Split arguments into order-independent and order-dependent, to define more precisely what (pre-,post-,late-,)link-args mean.
- Add some comments.

3 years agolinker: Re-apply Solaris fixes for `-z ignore`
Vadim Petrochenkov [Sun, 6 Jun 2021 14:48:18 +0000 (17:48 +0300)]
linker: Re-apply Solaris fixes for `-z ignore`

3 years agolinker: Restore the old order of linking native libraries
Vadim Petrochenkov [Mon, 10 May 2021 18:01:18 +0000 (21:01 +0300)]
linker: Restore the old order of linking native libraries

3 years agolinker: Reorder linker arguments
Vadim Petrochenkov [Sat, 8 May 2021 17:38:13 +0000 (20:38 +0300)]
linker: Reorder linker arguments

- Combine all native library arguments together, to simplify potential support for library deduplication and similar things
- Split arguments into order-independent and order-dependent, to define more precisely what (pre,post,late)-link-args mean

3 years agolinker: Inline `fn link_local_crate_native_libs_and_dependent_crate_libs`
Vadim Petrochenkov [Sat, 8 May 2021 16:27:01 +0000 (19:27 +0300)]
linker: Inline `fn link_local_crate_native_libs_and_dependent_crate_libs`

3 years agoAuto merge of #84995 - petrochenkov:tcollect, r=Aaron1011
bors [Sun, 6 Jun 2021 14:00:43 +0000 (14:00 +0000)]
Auto merge of #84995 - petrochenkov:tcollect, r=Aaron1011

parser: Ensure that all nonterminals have tokens after parsing

`parse_nonterminal` should always result in something with tokens.

This requirement wasn't satisfied in two cases:
- `stmt` nonterminal with expression statements (e.g. `0`, or `{}`, or `path + 1`) because `fn parse_stmt_without_recovery` forgot to propagate `force_collect` in some cases.
- `expr` nonterminal with expressions with built-in attributes (e.g. `#[allow(warnings)] 0`) due to an incorrect optimization in `fn parse_expr_force_collect`, it assumed that all expressions starting with `#` have their tokens collected during parsing, but that's not true if all the attributes on that expression are built-in and inert.

(Discovered when trying to implement eager `cfg` expansion for all attributes https://github.com/rust-lang/rust/pull/83824#issuecomment-817317170.)

r? `@Aaron1011`

3 years agoString::remove_matches O(n^2) -> O(n)
Tamir Duberstein [Fri, 26 Mar 2021 14:39:42 +0000 (10:39 -0400)]
String::remove_matches O(n^2) -> O(n)

Copy only non-matching bytes.

3 years agoUse iter::from_fn in String::remove_matches
Tamir Duberstein [Fri, 26 Mar 2021 14:38:32 +0000 (10:38 -0400)]
Use iter::from_fn in String::remove_matches

3 years agoAuto merge of #86054 - JohnTitor:rollup-j40z7sm, r=JohnTitor
bors [Sun, 6 Jun 2021 11:31:16 +0000 (11:31 +0000)]
Auto merge of #86054 - JohnTitor:rollup-j40z7sm, r=JohnTitor

Rollup of 8 pull requests

Successful merges:

 - #85436 (Avoid cloning cache key)
 - #85772 (Preserve metadata w/ Solaris-like linkers.)
 - #85920 (Tweak wasm_base target spec to indicate linker is not GNU and update linker inferring logic for wasm-ld.)
 - #85930 (Update standard library for IntoIterator implementation of arrays )
 - #85972 (Rustdoc html fixes)
 - #86028 (Drop an `if let` that will always succeed)
 - #86043 (don't clone attrs)
 - #86047 (Don't fire `invalid_doc_attributes` on `extern crate` items)

Failed merges:

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

3 years agoparser: Ensure that all nonterminals have tokens after parsing
Vadim Petrochenkov [Thu, 6 May 2021 13:21:40 +0000 (16:21 +0300)]
parser: Ensure that all nonterminals have tokens after parsing

3 years agoRollup merge of #86047 - jyn514:doc-attrs, r=petrochenkov
Yuki Okushi [Sun, 6 Jun 2021 10:11:24 +0000 (19:11 +0900)]
Rollup merge of #86047 - jyn514:doc-attrs, r=petrochenkov

Don't fire `invalid_doc_attributes` on `extern crate` items

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

3 years agoRollup merge of #86043 - klensy:attr-clone, r=jyn514
Yuki Okushi [Sun, 6 Jun 2021 10:11:23 +0000 (19:11 +0900)]
Rollup merge of #86043 - klensy:attr-clone, r=jyn514

don't clone attrs

3 years agoRollup merge of #86028 - LingMan:dupe_empty_check, r=jyn514
Yuki Okushi [Sun, 6 Jun 2021 10:11:22 +0000 (19:11 +0900)]
Rollup merge of #86028 - LingMan:dupe_empty_check, r=jyn514

Drop an `if let` that will always succeed

We've already checked that `proj_base == []` in the line above and renaming
`place_local` to `local` doesn't gain us anything.

``@rustbot`` modify labels +C-cleanup +T-compiler

3 years agoRollup merge of #85972 - GuillaumeGomez:rustdoc-html-fixes, r=jsha
Yuki Okushi [Sun, 6 Jun 2021 10:11:21 +0000 (19:11 +0900)]
Rollup merge of #85972 - GuillaumeGomez:rustdoc-html-fixes, r=jsha

Rustdoc html fixes

#84480 latest update allowed me to fix the remaining issues. The last one is coming from `pulldown-cmark` so I'll send them a fix soon.

r? ``@jsha``

3 years agoRollup merge of #85930 - mominul:array_into_iter, r=m-ou-se
Yuki Okushi [Sun, 6 Jun 2021 10:11:19 +0000 (19:11 +0900)]
Rollup merge of #85930 - mominul:array_into_iter, r=m-ou-se

Update standard library for IntoIterator implementation of arrays

This PR partially resolves issue #84513 of updating the standard library part.

I haven't found any remaining doctest examples which are using iterators over e.g. &i32 instead of just i32 in the standard library. Can anyone point me to them if there's remaining any?

Thanks!

r? ```@m-ou-se```

3 years agoRollup merge of #85920 - luqmana:wasm-linker-tweaks, r=petrochenkov
Yuki Okushi [Sun, 6 Jun 2021 10:11:18 +0000 (19:11 +0900)]
Rollup merge of #85920 - luqmana:wasm-linker-tweaks, r=petrochenkov

Tweak wasm_base target spec to indicate linker is not GNU and update linker inferring logic for wasm-ld.

Reported via [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/wasi.20linker.20unknown.20argument.3A.20--as-needed): we try passing `--as-needed` to the linker if it's GNU ld which `wasm-ld` is not. Usually this isn't an issue for wasm as we would use the WasmLd linker driver but because the linker in question (`wasm32-unknown-wasi-wasm-ld`) ended with `-ld` our linker inferring [logic](https://github.com/rust-lang/rust/blob/f64503eb555475d65ae5503ef22439ca5dd394fd/compiler/rustc_codegen_ssa/src/back/link.rs#L957-L1040) used the `GccLinker` implementations. (UPD: The linker inferring logic actually didn't apply in this case because the linker is actually invoked through gcc in the reported issue. But it's still worth updating the logic I think.)

This change then has 2 parts:
1. Update wasm_base target spec to indicate `linker_is_gnu: false` plus a few additions of `target.is_like_wasm` to handle flags `wasm-ld` does in fact support.
2. Improve the linker detection logic to properly determine the correct flavor of wasm linker we're using when we can.

We need to add the new `target.is_like_wasm` branches to handle the case where the "linker" used could be something like clang which would then under the hood call wasm-ld.

3 years agoRollup merge of #85772 - luqmana:ignored-metadata, r=petrochenkov
Yuki Okushi [Sun, 6 Jun 2021 10:11:17 +0000 (19:11 +0900)]
Rollup merge of #85772 - luqmana:ignored-metadata, r=petrochenkov

Preserve metadata w/ Solaris-like linkers.

#84468 moved the `-zignore` linker flag from the `gc_sections` method to `add_as_needed` which is more accurate but Solaris-style linkers will also end up removing an unreferenced ELF sections [1]. This had the unfortunate side effect of causing the `.rustc` section (which has the metada) to be removed which could cause issues when trying to link against the resulting crates or use proc macros.

Since the `-zignore` is positional, we fix this by moving the metadata objects to before the flag.

[1] Specifically a section is considered unreferenced if:
* The section is allocatable
* No other sections bind to (relocate) to this section
* The section provides no global symbols

https://docs.oracle.com/cd/E19683-01/817-3677/6mj8mbtbs/index.html#chapter4-19

3 years agoRollup merge of #85436 - tamird:save-clone, r=estebank
Yuki Okushi [Sun, 6 Jun 2021 10:11:16 +0000 (19:11 +0900)]
Rollup merge of #85436 - tamird:save-clone, r=estebank

Avoid cloning cache key

r? `@estebank`

3 years agoAuto merge of #84863 - ABouttefeux:libtest, r=m-ou-se
bors [Sun, 6 Jun 2021 09:13:59 +0000 (09:13 +0000)]
Auto merge of #84863 - ABouttefeux:libtest, r=m-ou-se

Show test type during prints

Test output can sometimes be confusing. For example doctest with the no_run argument are displayed the same way than test that are run.

During #83857 I got the feedback that test output can be confusing.

For the moment test output is
```
test $DIR/test-type.rs - f (line 12) ... ignored
test $DIR/test-type.rs - f (line 15) ... ok
test $DIR/test-type.rs - f (line 21) ... ok
test $DIR/test-type.rs - f (line 6) ... ok
```

I propose to change output by indicating the test type as
```
test $DIR/test-type.rs - f (line 12) ... ignored
test $DIR/test-type.rs - f (line 15) - compile ... ok
test $DIR/test-type.rs - f (line 21) - compile fail ... ok
test $DIR/test-type.rs - f (line 6) ... ok
```
by indicating the test type after the test name (and in the case of doctest after the function name and line) and before the "...".

------------

Note: this is a proof of concept, the implementation is probably not optimal as the properties added in `TestDesc` are only use in the display and does not represent actual change of behavior, maybe `TestType::DocTest` could have fields

3 years agoUnify duplicate linker_and_flavor methods in rustc_codegen_{cranelift,ssa}.
Luqman Aden [Sat, 5 Jun 2021 02:47:28 +0000 (19:47 -0700)]
Unify duplicate linker_and_flavor methods in rustc_codegen_{cranelift,ssa}.

3 years agoAuto merge of #84171 - ricobbe:raw-dylib-via-llvm, r=petrochenkov
bors [Sun, 6 Jun 2021 03:59:17 +0000 (03:59 +0000)]
Auto merge of #84171 - ricobbe:raw-dylib-via-llvm, r=petrochenkov

Partial support for raw-dylib linkage

First cut of functionality for issue #58713: add support for `#[link(kind = "raw-dylib")]` on `extern` blocks in lib crates compiled to .rlib files.  Does not yet support `#[link_name]` attributes on functions, or the `#[link_ordinal]` attribute, or `#[link(kind = "raw-dylib")]` on `extern` blocks in bin crates; I intend to publish subsequent PRs to fill those gaps.  It's also not yet clear whether this works for functions in `extern "stdcall"` blocks; I also intend to investigate that shortly and make any necessary changes as a follow-on PR.

This implementation calls out to an LLVM function to construct the actual `.idata` sections as temporary `.lib` files on disk and then links those into the generated .rlib.

3 years agoDon't fire `invalid_doc_attributes` on `extern crate` items
Joshua Nelson [Sun, 6 Jun 2021 01:16:19 +0000 (21:16 -0400)]
Don't fire `invalid_doc_attributes` on `extern crate` items

3 years agoAuto merge of #79608 - alessandrod:bpf, r=nagisa
bors [Sun, 6 Jun 2021 01:02:32 +0000 (01:02 +0000)]
Auto merge of #79608 - alessandrod:bpf, r=nagisa

BPF target support

This adds `bpfel-unknown-none` and `bpfeb-unknown-none`, two new no_std targets that generate little and big endian BPF. The approach taken is very similar to the cuda target, where `TargetOptions::obj_is_bitcode` is enabled and code generation is done by the linker.

I added the targets to `dist-various-2`. There are [some tests](https://github.com/alessandrod/bpf-linker/tree/main/tests/assembly) in bpf-linker and I'm planning to add more. Those are currently not ran as part of rust CI.

3 years agoFix invalid ID value in all.html file
Guillaume Gomez [Thu, 3 Jun 2021 18:16:47 +0000 (20:16 +0200)]
Fix invalid ID value in all.html file

3 years agoAdd missing backslash in HTML layout string
Guillaume Gomez [Thu, 3 Jun 2021 18:07:54 +0000 (20:07 +0200)]
Add missing backslash in HTML layout string

3 years agoEscape <meta> content attribute value
Guillaume Gomez [Thu, 3 Jun 2021 18:07:25 +0000 (20:07 +0200)]
Escape <meta> content attribute value

3 years agoAuto merge of #86002 - cjgillot:expn_that_defined, r=petrochenkov
bors [Sat, 5 Jun 2021 21:10:01 +0000 (21:10 +0000)]
Auto merge of #86002 - cjgillot:expn_that_defined, r=petrochenkov

Always go through the expn_that_defined query.

3 years agoFix display for search results
Guillaume Gomez [Sat, 5 Jun 2021 21:03:54 +0000 (23:03 +0200)]
Fix display for search results

3 years agoAuto merge of #86032 - GuillaumeGomez:rollup-y3ij27b, r=GuillaumeGomez
bors [Sat, 5 Jun 2021 18:41:36 +0000 (18:41 +0000)]
Auto merge of #86032 - GuillaumeGomez:rollup-y3ij27b, r=GuillaumeGomez

Rollup of 7 pull requests

Successful merges:

 - #83646 (Add a map method to Bound)
 - #85501 (Fix `deny(invalid_doc_attributes)`)
 - #85503 (rustdoc: add tooltips to some buttons)
 - #85710 (Document `From` impls in path.rs)
 - #85760 (Possible errors when accessing file metadata are platform specific)
 - #85974 (td align attribute)
 - #86014 (msp430 linker does not accept -znoexecstack. Set linker_is_gnu to fal…)

Failed merges:

 - #85972 (Rustdoc html fixes)

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

3 years agoUpdate compiler/rustc_middle/src/query/mod.rs
Camille Gillot [Sat, 5 Jun 2021 18:40:58 +0000 (20:40 +0200)]
Update compiler/rustc_middle/src/query/mod.rs

3 years agoRollup merge of #86014 - cr1901:msp430-link, r=jonas-schievink
Guillaume Gomez [Sat, 5 Jun 2021 17:41:45 +0000 (19:41 +0200)]
Rollup merge of #86014 - cr1901:msp430-link, r=jonas-schievink

msp430 linker does not accept -znoexecstack. Set linker_is_gnu to fal…

…se as workaround for now.

Tested locally and works. Closes #85948.

3 years agoRollup merge of #85974 - GuillaumeGomez:td-align, r=jsha
Guillaume Gomez [Sat, 5 Jun 2021 17:41:44 +0000 (19:41 +0200)]
Rollup merge of #85974 - GuillaumeGomez:td-align, r=jsha

td align attribute

This is a follow-up of #85972. I have put this one on its own because it changes the display:

![Screenshot from 2021-06-03 21-49-11](https://user-images.githubusercontent.com/3050060/120703622-d533d280-c4b5-11eb-9519-ea1131a40bee.png)

Without align:

![Screenshot from 2021-06-03 21-49-15](https://user-images.githubusercontent.com/3050060/120703623-d5cc6900-c4b5-11eb-95f9-878d3915c7fb.png)

I also opened an issue about it: raphlinus/pulldown-cmark#533. However, I'm not sure if this is the right course of action... Should we instead ignore the warning?

r? ``@jsha``