Commit Graph

107651 Commits

Author SHA1 Message Date
Dylan DPC
8ca3e59f8a
Rollup merge of #69650 - matthiaskrgr:clnp, r=varkor
cleanup more iterator usages (and other things)

* Improve weird formatting by moving comment inside else-code block.
* Use .any(x) instead of .find(x).is_some() on iterators.
* Use .nth(x) instead of .skip(x).next() on iterators.
* Simplify conditions like  x + 1 <= y   to   x < y
* Use let instead of match to get value of enum with single variant.
2020-03-03 21:26:13 +01:00
Dylan DPC
2cfab73594
Rollup merge of #69621 - matthiaskrgr:q, r=petrochenkov
use question mark operator in a few places.
2020-03-03 21:26:12 +01:00
Dylan DPC
fab54fc34e
Rollup merge of #69565 - RalfJung:assert, r=eddyb
miri engine: turn some debug_assert into assert

@eddyb said to avoid debug assertions in rustc. These checks here look like they are probably not too expensive. Cc @oli-obk
2020-03-03 21:26:10 +01:00
bors
3c5b1b7d63 Auto merge of #69371 - tmiasko:weak-lang-cycle, r=alexcrichton
Improve linking of crates with circular dependencies

Previously, the code responsible for handling the cycles between crates
introduces through weak lang items, would keep a set of missing language
items:

* extending it with items missing from the current crate,
* removing items provided by the current crate,
* grouping the crates when the set changed from non-empty back to empty.

This could produce incorrect results, if a lang item was missing from a
crate that comes after the crate that provides it (in the loop iteration
order). In that case the grouping would not take place.

The changes here address this specific failure scenario by keeping track
of two separate sets of crates. Those that are required to link successfully,
and those that are available for linking.

Verified using test case from #69368.
2020-03-03 16:38:02 +00:00
bors
b135c739fb Auto merge of #69482 - lqd:poloniusup, r=nikomatsakis
Polonius: update `polonius-engine` to 0.12.0

Since @albins won't have the time to finish up #68993 for a while, I'll take care of the trivial remaining tasks (rebasing, taking care of tidy/rustfmt).

I'll r? @nikomatsakis since they're assigned to #68993, but have actually [already reviewed it pre-rebase](https://github.com/rust-lang/rust/pull/68993#issuecomment-586413089).

When CI passes: I'll notify bors and close #68993, since this PR supersedes it.
2020-03-03 13:27:52 +00:00
Tomasz Miąsko
44dba79124 Add regression test for linking issue with start-group / end-group 2020-03-03 13:11:23 +01:00
Tomasz Miąsko
3ab596514a Improve linking of crates with circular dependencies
Previously, the code responsible for handling the cycles between crates
introduces through weak lang items, would keep a set of missing language
items:

* extending it with items missing from the current crate,
* removing items provided by the current crate,
* grouping the crates when the set changed from non-empty back to empty.

This could produce incorrect results, if a lang item was missing from a
crate that comes after the crate that provides it (in the loop iteration
order). In that case the grouping would not take place.

The changes here address this specific failure scenario by keeping track
of two separate sets of crates. Those that are required to link successfully,
and those that are available for linking.

Verified using test case from 69368.
2020-03-03 13:11:19 +01:00
Matthias Krüger
ecae6e4260 use question mark operator in a few places. 2020-03-03 11:52:14 +01:00
bors
a5de254862 Auto merge of #69666 - JohnTitor:rollup-6nt3op0, r=JohnTitor
Rollup of 9 pull requests

Successful merges:

 - #69213 (Improve documentation on iterators length)
 - #69609 (Remove `usable_size` APIs)
 - #69619 (more cleanups)
 - #69620 (doc(librustc_error_codes): add long error explanation for E0719)
 - #69626 (Toolstate: don't duplicate nightly tool list.)
 - #69628 (Fix a leak in `DiagnosticBuilder::into_diagnostic`.)
 - #69633 (Update my mailmap entry)
 - #69634 (clean up E0378 explanation)
 - #69637 (Don't convert Results to Options just for matching.)

Failed merges:

r? @ghost
2020-03-03 10:18:57 +00:00
Yuki Okushi
e453a0cc49
Rollup merge of #69637 - matthiaskrgr:if_let_some_result, r=ecstatic-morse
Don't convert Results to Options just for matching.
2020-03-03 17:50:17 +09:00
Yuki Okushi
9be7932d35
Rollup merge of #69634 - GuillaumeGomez:clean-up-e0378, r=Dylan-DPC
clean up E0378 explanation

r? @Dylan-DPC
2020-03-03 17:50:16 +09:00
Yuki Okushi
017a2f4ce6
Rollup merge of #69633 - XAMPPRocky:master, r=Dylan-DPC
Update my mailmap entry

superceding #68891
2020-03-03 17:50:14 +09:00
Yuki Okushi
ef311d5ab4
Rollup merge of #69628 - nnethercote:fix-DiagnosticBuilder-into_diagnostic-leak, r=Centril
Fix a leak in `DiagnosticBuilder::into_diagnostic`.

Fixes #69600.

r? @Centril
2020-03-03 17:50:13 +09:00
Yuki Okushi
c9d421f5c0
Rollup merge of #69626 - ehuss:toolstate-nightly-cleanup, r=Mark-Simulacrum
Toolstate: don't duplicate nightly tool list.

Just some cleanup, seems good to avoid duplicating this list.
2020-03-03 17:50:11 +09:00
Yuki Okushi
9f3a192327
Rollup merge of #69620 - thekuom:doc/61137-add-long-error-code-e0719, r=davidtwco
doc(librustc_error_codes): add long error explanation for E0719

Reference issue #61137

- Updated error_codes.rs
- Added E0719.md in error_codes
- Updated necessary test .stderr files
2020-03-03 17:50:10 +09:00
Yuki Okushi
f19684c7cf
Rollup merge of #69619 - matthiaskrgr:misc, r=eddyb
more cleanups

* use starts_with() instead of chars().next() == Some(x)
* use subsec_micros() instead of subsec_nanos() / 1000
* use for (idx, item) in iter.enumerate() instead of manually counting loop iterations with variables
* use values() or keys() respectively when iterating only over keys or values of maps.
2020-03-03 17:50:08 +09:00
Yuki Okushi
4699b29a04
Rollup merge of #69609 - TimDiekmann:excess, r=Amanieu
Remove `usable_size` APIs

This removes the usable size APIs:
- remove `usable_size` (obv)
- change return type of allocating methods to include the allocated size
- remove `_excess` API

r? @Amanieu
closes rust-lang/wg-allocators#17
2020-03-03 17:50:06 +09:00
Yuki Okushi
dfacdda649
Rollup merge of #69213 - LeSeulArtichaut:improve-doc-iter, r=steveklabnik
Improve documentation on iterators length

Attempts to resolve #66491. @the8472 does this help?

r? @steveklabnik
2020-03-03 17:50:04 +09:00
bors
9381e8178b Auto merge of #69247 - CAD97:remove-chalk, r=nikomatsakis
Remove experimental chalk option

As suggested by @nikomatsakis [here](https://github.com/rust-lang/rust/pull/68807#issuecomment-583339932).

The current version of chalk used by the experimental `-Zchalk` flag is [v0.9.0, which is over a year old](https://crates.io/crates/chalk-engine). Since v0.9.0, chalk has seen [a lot of further development](https://github.com/rust-lang/chalk/compare/41dfe13...master), and the intent is to eventually upgrade rustc to use a more recent chalk.

However, it will take a decent chunk of effort to upgrade the current experimental chalk support, and it is currently [blocking at least some PRs](https://github.com/rust-lang/rust/pull/68807) due to chalk:0.9.0's use of unstable features. So for the interim until the next chalk release and experimental rustc integration, we remove the chalk-specific code from rustc.
2020-03-03 04:31:01 +00:00
Matthias Krüger
10183851fb Improve weird formatting by moving comment inside else-code block. 2020-03-03 01:01:21 +01:00
Matthias Krüger
ae34b9d996 Use .any(x) instead of .find(x).is_some() on iterators. 2020-03-03 01:01:14 +01:00
Matthias Krüger
c287d86d2c Use .nth(x) instead of .skip(x).next() on iterators. 2020-03-03 01:00:48 +01:00
Matthias Krüger
5abaeb3d67 Simplify conditions like x + 1 <= y to x < y 2020-03-03 01:00:32 +01:00
Matthias Krüger
e364c283fd Use let instead of match to get value of enum with single variant. 2020-03-03 01:00:08 +01:00
CAD97
b3777c952f Remove chalk integration 2020-03-02 18:11:53 -05:00
Tim Diekmann
d8e3557dba Remove usable_size APIs 2020-03-03 00:08:24 +01:00
bors
97b3d81615 Auto merge of #69627 - ehuss:update-cargo-clippy, r=Dylan-DPC
Update cargo, clippy

Closes #69601

## cargo

16 commits in e57bd02999c9f40d52116e0beca7d1dccb0643de..bda50510d1daf6e9c53ad6ccf603da6e0fa8103f
2020-02-21 20:20:10 +0000 to 2020-03-02 18:05:34 +0000
- Fix rare failure in collision_export test. (rust-lang/cargo#7956)
- Ignore broken Cargo.toml in git sources (rust-lang/cargo#7947)
- Add more fingerprint mtime debug logging. (rust-lang/cargo#7952)
- Fix plugin tests for latest nightly. (rust-lang/cargo#7955)
- Simplified usage code of SipHasher (rust-lang/cargo#7945)
- Add a special case for git config discovery inside tests (rust-lang/cargo#7944)
- Fixes issue rust-lang/cargo#7543 (rust-lang/cargo#7946)
- Filter out cfgs which should not be used during build (rust-lang/cargo#7943)
- Provide extra context on a query failure. (rust-lang/cargo#7934)
- Try to clarify `cargo metadata`'s relationship with the workspace. (rust-lang/cargo#7927)
- Update libgit2 dependency (rust-lang/cargo#7939)
- Fix link in comment (rust-lang/cargo#7936)
- Enable `cargo doc --open` tests on macos. (rust-lang/cargo#7932)
- build-std: remove sysroot probe (rust-lang/cargo#7931)
- Try to clarify how feature flags work on the "current" package. (rust-lang/cargo#7928)
- Add extra details in the new feature resolver doc comment. (rust-lang/cargo#7918)

## clippy

6 commits in fc5d0cc583cb1cd35d58fdb7f3e0cfa12dccd6c0..8b7f7e667268921c278af94ae30a61e87a22b22b
2020-02-24 05:58:17 +0000 to 2020-03-02 20:00:31 +0000
- Rustup to rust-lang/rust#69469 (rust-lang-nursery/rust-clippy#5254)
- Some rustups (rust-lang-nursery/rust-clippy#5247)
- Update git2 to 0.12 (rust-lang-nursery/rust-clippy#5232)
- Rustup to rust-lang/rust#61812 (rust-lang-nursery/rust-clippy#5231)
- Add lint to improve floating-point expressions (rust-lang-nursery/rust-clippy#4897)
- Do not run deploy action on other repos (rust-lang-nursery/rust-clippy#5222)
2020-03-02 22:58:48 +00:00
LeSeulArtichaut
0c82a5c1d3 Apply suggestions from code review 2020-03-02 21:42:55 +01:00
Eric Huss
15264e95f2 Update cargo, clippy 2020-03-02 12:25:29 -08:00
Eric Huss
fdc14cb0b0 Toolstate: don't duplicate nightly tool list. 2020-03-02 08:42:35 -08:00
Matthias Krüger
0ec14089a9 Don't convert Results to Options just for matching. 2020-03-02 15:31:14 +01:00
bors
18c275b423 Auto merge of #69635 - Dylan-DPC:rollup-2oh8uu5, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #68682 (Add documentation to compiler intrinsics)
 - #69544 (Unrevert "Remove `checked_add` in `Layout::repeat`")
 - #69617 (constify mem::forget)
 - #69622 (Rename `syntax` in librustc_ast/README.md)
 - #69623 (stash API: remove panic to fix ICE.)
 - #69624 (Toolstate: Don't block beta week on already broken tools.)

Failed merges:

 - #69626 (Toolstate: don't duplicate nightly tool list.)

r? @ghost
2020-03-02 12:48:26 +00:00
Dylan DPC
f8fb3efe6f
Rollup merge of #69624 - ehuss:toolstate-beta-regress, r=Mark-Simulacrum
Toolstate: Don't block beta week on already broken tools.

This changes it so that tools are allowed to be broken entering the beta week if they are already broken.  This restores the original behavior before the changes in #69332.

Closes #68458
2020-03-02 13:42:43 +01:00
Dylan DPC
0255561dea
Rollup merge of #69623 - Centril:fix-69396-tmp, r=petrochenkov
stash API: remove panic to fix ICE.

Implements the temporary solution suggested in https://github.com/rust-lang/rust/pull/69537#issuecomment-593143975.
Fixes https://github.com/rust-lang/rust/issues/69396.

r? @petrochenkov
2020-03-02 13:42:41 +01:00
Dylan DPC
74a8d8f44e
Rollup merge of #69622 - LeSeulArtichaut:patch-2, r=Centril
Rename `syntax` in librustc_ast/README.md

Related to e94d3b7.
r? @petrochenkov
2020-03-02 13:42:40 +01:00
Dylan DPC
e725c04e62
Rollup merge of #69617 - DutchGhost:master, r=LukasKalbertodt
constify mem::forget

implements https://github.com/rust-lang/rust/issues/69616
2020-03-02 13:42:38 +01:00
Dylan DPC
f548a387a4
Rollup merge of #69544 - lqd:unrevert-67174, r=Mark-Simulacrum
Unrevert "Remove `checked_add` in `Layout::repeat`"

This reapplies @kraai's original `libcore::alloc::Layout::repeat` change from #67174 which was temporarily reverted in #69241. Now that the proper LLVM fix has been cherry-picked, we can unrevert the revert.

This change was originally reviewed by @hanna-kruppe on the initial PR.

cc @RalfJung
2020-03-02 13:42:37 +01:00
Dylan DPC
ffb6d75314
Rollup merge of #68682 - LeSeulArtichaut:stable-intrinsics, r=steveklabnik
Add documentation to compiler intrinsics

This adds documentation to the compiler intrinsics having stable standard implementations.

Relates to #34338 (cc @bstrie)

r? @steveklabnik (for reassignment?)
2020-03-02 13:42:35 +01:00
Guillaume Gomez
ba49ed01f0 clean up E0378 explanation 2020-03-02 13:10:24 +01:00
Matthias Krüger
21affdd00d use values() or keys() respectively when iterating only over keys or values of maps. 2020-03-02 13:01:05 +01:00
Erin Power
4643b12f78
Update my mailmap entry 2020-03-02 12:04:09 +01:00
DutchGhost
a30b0a61b8 actually mark the function const 2020-03-02 11:00:20 +01:00
bors
c839a7b4c2 Auto merge of #69257 - RalfJung:layout-visitor, r=eddyb
Adjust Miri value visitor, and doc-comment layout components

I realized that I still didn't have quite the right intuition for how our `LayoutDetails` work, so I had to adjust the Miri value visitor to the things I understood better now. I also added some doc-comments to `LayoutDetails` as a hopefully canonical place to note such things.

The main visitor change is that we *first* look at all the fields (according to `FieldPlacement`), and *then* check the variants and handle `Multiple` appropriately. I did not quite realize how orthogonal "fields" and "variants" are.
I also moved the check for the scalar ABI to *after* checking all the fields; this leads to better (more type-driven) error messages.

And it looks like we can finally remove that magic hack for `ty::Generator`. :D

r? @oli-obk for the Miri/visitor changes and @eddyb for the layout docs
The Miri PR is at: https://github.com/rust-lang/miri/pull/1178
2020-03-02 09:37:35 +00:00
bors
6af4fd385e Auto merge of #69469 - matthewjasper:type-flags, r=cramertj
Clean up TypeFlags

* Add a new method `has_infer_types_or_consts` that's used instead of `has_infer_types` most of the time, since there's generally no reason to only consider types.
*  Remove `has_closure_types`/`HAS_TY_CLOSURE`, because closures are no longer implicitly linked to the `InferCtxt`.
* Reorder flags to group similar ones together
* Make some flags more granular
* Compute `HAS_FREE_LOCAL_NAMES` from the other flags
* Add some more doc comments
2020-03-02 06:30:52 +00:00
Nicholas Nethercote
99a595e406 Fix a leak in DiagnosticBuilder::into_diagnostic.
Fixes #69600.
2020-03-02 14:42:46 +11:00
bors
e86c9e6ef8 Auto merge of #69442 - jakevossen5:master, r=Mark-Simulacrum
`--explain` disambiguates no long description and invalid error codes

Closes #44710

First code contribution here, so feedback is very much appreciated!

cc @zackmdavis
cc @Mark-Simulacrum
2020-03-02 03:16:22 +00:00
bors
9dc8dad14f Auto merge of #69432 - petrochenkov:alldeps, r=eddyb
rustc_metadata: Load metadata for indirect macro-only dependencies

Imagine this dependency chain between crates
```
Executable crate -> Library crate -> Macro crate
```
where "Library crate" uses the macros from "Macro crate" for some code generation, but doesn't reexport them any further.

Currently, when compiling "Executable crate" we don't even load metadata for it, because why would we want to load any metadata from "Macro crate" if it already did all its code generation job when compiling "Library crate".
Right?

Wrong!
Hygiene data and spans (https://github.com/rust-lang/rust/issues/68686, https://github.com/rust-lang/rust/pull/68941) from "Macro crate" still may need to be decoded from "Executable crate".
So we'll have to load them properly.

Questions:
- How this will affect compile times for larger crate trees in practice? How to measure it?
Hygiene/span encoding/decoding will necessarily slow down compilation because right now we just don't do some work that we should do, but this introduces a whole new way to slow down things. E.g. loading metadata for `syn` (and its dependencies) when compiling your executable if one of its library dependencies uses it.
- We are currently detecting whether a crate reexports macros from "Macro crate" or not, could we similarly detect whether a crate "reexports spans" and keep it unloaded if it doesn't?
Or at least "reexports important spans" affecting hygiene, we can probably lose spans that only affect diagnostics.
2020-03-02 00:07:06 +00:00
Eric Huss
22d840e501 Toolstate: Don't block beta week on already broken tools. 2020-03-01 15:46:38 -08:00
Mazdak Farrokhzad
df20036848 stash API: remove panic to fix ICE. 2020-03-02 00:07:23 +01:00
LeSeulArtichaut
6bfa48a0ae
Rename syntax in librustc_ast/README.md 2020-03-01 23:56:03 +01:00