]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #70159 - alexcrichton:update-wasi, r=pietroalbini
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:14 +0000 (10:29 +0100)]
Rollup merge of #70159 - alexcrichton:update-wasi, r=pietroalbini

Update the bundled wasi-libc with libstd

Brings in WebAssembly/wasi-libc#184 which can help standalone programs
with environment variables!

4 years agoRollup merge of #70123 - cuviper:library-path, r=Mark-Simulacrum
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:13 +0000 (10:29 +0100)]
Rollup merge of #70123 - cuviper:library-path, r=Mark-Simulacrum

Ensure LLVM is in the link path for rustc tools

The build script for `rustc_llvm` outputs LLVM information in `cargo:rustc-link-lib` and `cargo:rustc-link-search` so the compiler can be linked correctly. However, while the lib is carried along in metadata, the search paths are not. So when cargo is invoked again later for rustc _tools_, they'll also try to link with LLVM, but the necessary paths may be left out.

Rustbuild can use the environment to set the LLVM link path for tools -- `LIB` for MSVC toolchains and `LIBRARY_PATH` for everyone else.

Fixes #68714.

4 years agoRollup merge of #69968 - eddyb:tupled-closure-captures, r=nikomatsakis
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:11 +0000 (10:29 +0100)]
Rollup merge of #69968 - eddyb:tupled-closure-captures, r=nikomatsakis

rustc: keep upvars tupled in {Closure,Generator}Substs.

Previously, each closure/generator capture's (aka "upvar") type was tracked as one "synthetic" type parameter in the closure/generator substs, and figuring out where the parent `fn`'s generics end and the synthetics start involved slicing at `tcx.generics_of(def_id).parent_count`.

Needing to query `generics_of` limited @davidtwco (who wants to compute some `TypeFlags` differently for parent generics vs upvars, and `TyCtxt` is not available there), which is how I got started on this, but it's also possible that the `generics_of` queries are slowing down `{Closure,Generator}Substs` methods.

To give an example, for a `foo::<T, U>::{closure#0}` with captures `x: X` and `y: Y`, substs are:
* before this PR: `[T, U, /*kind*/, /*signature*/, X, Y]`
* after this PR: `[T, U, /*kind*/, /*signature*/, (X, Y)]`

You can see that, with this PR, no matter how many captures, the last 3 entries in the substs (or 5 for a generator) are always the "synthetic" ones, with the last one being the tuple of capture types.

r? @nikomatsakis cc @Zoxc

4 years agoRollup merge of #69942 - estebank:sized-verbose-sugg, r=matthewjasper
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:09 +0000 (10:29 +0100)]
Rollup merge of #69942 - estebank:sized-verbose-sugg, r=matthewjasper

Increase verbosity when suggesting subtle code changes

Do not suggest changes that are actually quite small inline, to minimize the likelihood of confusion.

Fix #69243.

4 years agoRollup merge of #69940 - tmiasko:llvm-api, r=hanna-kruppe
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:07 +0000 (10:29 +0100)]
Rollup merge of #69940 - tmiasko:llvm-api, r=hanna-kruppe

librustc_codegen_llvm: Replace deprecated API usage

4 years agoRollup merge of #69080 - eddyb:one-billion-dwarves-walk-into-a-bar, r=michaelwoerister
Mazdak Farrokhzad [Mon, 23 Mar 2020 09:29:05 +0000 (10:29 +0100)]
Rollup merge of #69080 - eddyb:one-billion-dwarves-walk-into-a-bar, r=michaelwoerister

rustc_codegen_llvm: don't generate any type debuginfo for -Cdebuginfo=1.

Works towards #69074 by adding more checks for `DebugInfo::Full` in a few places in `rustc_codegen_llvm`, bringing us in line with what `clang -g1` generates (no debuginfo types, nor debuginfo for `static`s).

<hr/>

My local build's (`debuginfo-level=1`, `debug-assertions=1`) `librustc_driver-*.so` went from just over 1GiB (1019MiB) down to 402MiB.

It's still bad, but the `.debug_*` sections themselves (as reported by `objdump`) went from something like 853MiB down to 236MiB, i.e. roughly a 3.6x reduction.

<hr/>

Sadly, I don't think this is enough to justify *shipping* all of this debuginfo, but now it's more plausible that we could at least *build* with `debuginfo-level=1` *then* strip it.
That would give us real backtraces for e.g. ICEs during builds, but I don't know how often that's relevant.

We could also look into split DWARF, and maybe have a `rustc-debuginfo` component in `rustup`.

There's also the possibility of making it slimmer by omitting parameters to functions, or perhaps some deduplication (I think right now there is no DWARF reuse across CGUs? maybe ThinLTO helps?).

r? @michaelwoerister cc @rust-lang/wg-codegen @alexcrichton @Mark-Simulacrum

4 years agoAuto merge of #70296 - Centril:rollup-wvfmb3n, r=Centril
bors [Mon, 23 Mar 2020 06:02:34 +0000 (06:02 +0000)]
Auto merge of #70296 - Centril:rollup-wvfmb3n, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #69251 (#[track_caller] in traits)
 - #69880 (miri engine: turn error sanity checks into assertions)
 - #70207 (Use getentropy(2) on macos)
 - #70227 (Only display definition when suggesting a typo)
 - #70236 (resolve: Avoid "self-confirming" import resolutions in one more case)
 - #70248 (parser: simplify & remove unused field)
 - #70249 (handle ConstKind::Unresolved after monomorphizing)
 - #70269 (remove redundant closures (clippy::redundant_closure))
 - #70270 (Clean up E0449 explanation)

Failed merges:

r? @ghost

4 years agoRollup merge of #70270 - GuillaumeGomez:cleanup-e0449, r=Dylan-DPC
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:16 +0000 (04:26 +0100)]
Rollup merge of #70270 - GuillaumeGomez:cleanup-e0449, r=Dylan-DPC

Clean up E0449 explanation

r? @Dylan-DPC

4 years agoRollup merge of #70269 - matthiaskrgr:clippy_closures, r=Dylan-DPC
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:15 +0000 (04:26 +0100)]
Rollup merge of #70269 - matthiaskrgr:clippy_closures, r=Dylan-DPC

remove redundant closures (clippy::redundant_closure)

4 years agoRollup merge of #70249 - lcnr:issue70125, r=eddyb
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:13 +0000 (04:26 +0100)]
Rollup merge of #70249 - lcnr:issue70125, r=eddyb

handle ConstKind::Unresolved after monomorphizing

fixes #70125

r? @bjorn3

4 years agoRollup merge of #70248 - Centril:unroot, r=petrochenkov
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:12 +0000 (04:26 +0100)]
Rollup merge of #70248 - Centril:unroot, r=petrochenkov

parser: simplify & remove unused field

r? @petrochenkov

4 years agoRollup merge of #70236 - petrochenkov:globimpice, r=ecstatic-morse
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:10 +0000 (04:26 +0100)]
Rollup merge of #70236 - petrochenkov:globimpice, r=ecstatic-morse

resolve: Avoid "self-confirming" import resolutions in one more case

So the idea behind "blacklisted bindings" is that we must ignore some name definitions during resolution because otherwise they cause infinite cycles.
E.g. import
```rust
use my_crate;
```
would refer to itself (on 2018 edition) without this blacklisting, because `use my_crate;` is the first name in scope when we are resolving `my_crate` here.

In this PR we are doing this blacklisting for the case
```rust
use same::same;
```
, namely blacklisting the second `same` when resolving the first `same`.
This was previously forgotten.

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

4 years agoRollup merge of #70227 - LeSeulArtichaut:typo-def, r=Centril
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:08 +0000 (04:26 +0100)]
Rollup merge of #70227 - LeSeulArtichaut:typo-def, r=Centril

Only display definition when suggesting a typo

Closes #70206
r? @Centril

4 years agoRollup merge of #70207 - hatoo:macos-getentropy, r=dtolnay
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:07 +0000 (04:26 +0100)]
Rollup merge of #70207 - hatoo:macos-getentropy, r=dtolnay

Use getentropy(2) on macos

resolves #70179

4 years agoRollup merge of #69880 - RalfJung:miri-assert-error-sanity, r=oli-obk
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:05 +0000 (04:26 +0100)]
Rollup merge of #69880 - RalfJung:miri-assert-error-sanity, r=oli-obk

miri engine: turn error sanity checks into assertions

We had these as debug assertions so far to make sure our test suite is clean, but really these are conditions that should never arise and also @eddyb told me to turn non-performance-critical debug assertions into full assertions so here we go. ;)

I propose that we do a check-only crater run to make sure this does not actually happen in practice.

r? @oli-obk

4 years agoRollup merge of #69251 - anp:track-caller-in-traits, r=eddyb
Mazdak Farrokhzad [Mon, 23 Mar 2020 03:26:04 +0000 (04:26 +0100)]
Rollup merge of #69251 - anp:track-caller-in-traits, r=eddyb

#[track_caller] in traits

Per https://github.com/rust-lang/rust/issues/47809#issuecomment-572791760, this allows the `#[track_caller]` attribute on trait methods.

Includes tests for `#[track_caller]` with:

* "regular" trait impls
* default trait impls
* "blanket-tracked" trait impls, where the annotation is in the trait definition and is inherited by "regular" impls of the trait

4 years agoAuto merge of #70204 - Centril:unshackled-lowering, r=Zoxc
bors [Mon, 23 Mar 2020 03:10:48 +0000 (03:10 +0000)]
Auto merge of #70204 - Centril:unshackled-lowering, r=Zoxc

Liberate `rustc_ast_lowering` from `rustc`

The whole point of this PR is the very last commit, in which we remove `rustc` as one of `rustc_ast_lowering`'s dependencies, thereby improving `./x.py` parallelism and working towards https://github.com/rust-lang/rust/issues/65031.

Noteworthy:
- From `rustc::arena` we move logic into `arena`, in particular `declare_arena!`. This is then used in `rustc_ast_lowering` so that lowering has its own separate arena.
- Some linting code is unfortunately moved to `rustc_session::lint` cause its used both in `rustc_lint` and `rustc_ast_lowering`, and this is their common dependency.
- `rustc_session::CrateDisambiguator` is moved into `rustc_ast` so that `rustc::hir::map::definitions` can be moved into `rustc_hir`, so that `rustc_ast_lowering` can stop referring to `rustc::hir`.

r? @Zoxc

4 years agorustc_llvm: don't use -g when LLVM_NDEBUG is set.
Eduard-Mihai Burtescu [Wed, 12 Feb 2020 00:15:34 +0000 (02:15 +0200)]
rustc_llvm: don't use -g when LLVM_NDEBUG is set.

4 years agorustc_codegen_llvm: don't generate static and vtable debuginfo for -Cdebuginfo=1.
Eduard-Mihai Burtescu [Tue, 11 Feb 2020 22:20:02 +0000 (00:20 +0200)]
rustc_codegen_llvm: don't generate static and vtable debuginfo for -Cdebuginfo=1.

4 years agorustc_codegen_llvm: don't generate Self type debuginfo for methods for -Cdebuginfo=1.
Eduard-Mihai Burtescu [Tue, 11 Feb 2020 21:03:00 +0000 (23:03 +0200)]
rustc_codegen_llvm: don't generate Self type debuginfo for methods for -Cdebuginfo=1.

4 years agorustc_codegen_llvm: don't generate "lexical block" scopes for -Cdebuginfo=1.
Eduard-Mihai Burtescu [Tue, 11 Feb 2020 20:52:59 +0000 (22:52 +0200)]
rustc_codegen_llvm: don't generate "lexical block" scopes for -Cdebuginfo=1.

4 years agoRemove special-casing from TyCtxt::impl_of_method.
Adam Perry [Sun, 22 Mar 2020 23:59:02 +0000 (16:59 -0700)]
Remove special-casing from TyCtxt::impl_of_method.

We can do this now that opt_associated_item doesn't have any panicking paths.

4 years agoAllow #[track_caller] in traits.
Adam Perry [Mon, 17 Feb 2020 23:36:36 +0000 (15:36 -0800)]
Allow #[track_caller] in traits.

The codegen implementation already works for this, so we're:

* propagating track_caller attr from trait def to impl
* relaxing errors
* adding tests

Approved in a recent lang team meeting:
https://github.com/rust-lang/lang-team/blob/master/minutes/2020-01-09.md

4 years agoUse more targetted span for error label
Esteban Küber [Sun, 22 Mar 2020 23:09:42 +0000 (16:09 -0700)]
Use more targetted span for error label

4 years agoNormalize wording of privacy access labels
Esteban Küber [Sun, 22 Mar 2020 22:36:54 +0000 (15:36 -0700)]
Normalize wording of privacy access labels

4 years agoAuto merge of #69778 - Marwes:dep_graph, r=davidtwco
bors [Sun, 22 Mar 2020 22:36:44 +0000 (22:36 +0000)]
Auto merge of #69778 - Marwes:dep_graph, r=davidtwco

perf(dep_graph): Avoid allocating a set on when the number reads are …

…small

`reserve_and_rehash` takes up 1.4% of the runtime on the `packed-simd`
benchmark which I believe is due to the number of reads are very low in
many cases (see https://github.com/rust-lang/rust/pull/50565 for
instance).

This avoids allocating the set until we start allocating the `reads`
`SmallVec` but it is possible that a lower limit might be better (not
tested since the improvement will be hard to spot either way).

4 years agomiri engine: turn error sanity checks into assertions
Ralf Jung [Tue, 10 Mar 2020 08:22:16 +0000 (09:22 +0100)]
miri engine: turn error sanity checks into assertions

4 years agoAuto merge of #69079 - CAD97:layout-of-ptr, r=RalfJung
bors [Sun, 22 Mar 2020 18:37:19 +0000 (18:37 +0000)]
Auto merge of #69079 - CAD97:layout-of-ptr, r=RalfJung

Allow calculating the layout behind a pointer

There was some discussion around allowing this previously.

This does make the requirement for raw pointers to have valid metadata exposed as part of the std API (as a safety invariant, not validity invariant), though I think this is not strictly necessarily required as of current. cc @rust-lang/wg-unsafe-code-guidelines

Naming is hard; I picked the best "obvious" name I could come up with.

If it's agreed that this is actually a desired API surface, I'll file a tracking issue and update the attributes.

4 years agoAdd span label to primary error span
Esteban Küber [Sun, 22 Mar 2020 18:18:06 +0000 (11:18 -0700)]
Add span label to primary error span

4 years agoIncrease verbosity when suggesting subtle code changes
Esteban Küber [Thu, 12 Mar 2020 03:38:21 +0000 (20:38 -0700)]
Increase verbosity when suggesting subtle code changes

4 years agoAuto merge of #70275 - Dylan-DPC:rollup-1fbosob, r=Dylan-DPC
bors [Sun, 22 Mar 2020 15:04:50 +0000 (15:04 +0000)]
Auto merge of #70275 - Dylan-DPC:rollup-1fbosob, r=Dylan-DPC

Rollup of 10 pull requests

Successful merges:

 - #68099 (Amend Rc/Arc::from_raw() docs regarding unsafety)
 - #70172 (parse/lexer: support `StringReader::retokenize` called on external files.)
 - #70209 (parser: recover on `for<'a> |...| body` closures)
 - #70223 (fix type of const params in associated types.)
 - #70229 (more clippy fixes)
 - #70240 (Return NonZeroU64 from ThreadId::as_u64.)
 - #70250 (Remove wrong entry from RELEASES.md)
 - #70253 (Remove another wrong entry from RELEASES.md)
 - #70254 (couple more clippy fixes (let_and_return, if_same_then_else))
 - #70266 (proc_macro_harness: Use item header spans for errors)

Failed merges:

r? @ghost

4 years agoRollup merge of #70266 - petrochenkov:prochead, r=varkor
Dylan DPC [Sun, 22 Mar 2020 14:48:43 +0000 (15:48 +0100)]
Rollup merge of #70266 - petrochenkov:prochead, r=varkor

proc_macro_harness: Use item header spans for errors

Addresses https://github.com/rust-lang/rust/pull/70233#discussion_r396043004.

4 years agoRollup merge of #70254 - matthiaskrgr:cl4ppy, r=Centril
Dylan DPC [Sun, 22 Mar 2020 14:48:41 +0000 (15:48 +0100)]
Rollup merge of #70254 - matthiaskrgr:cl4ppy, r=Centril

couple more clippy fixes (let_and_return, if_same_then_else)

* summarize if-else-code with identical blocks (clippy::if_same_then_else)
* don't create variable bindings just to return the bound value immediately (clippy::let_and_return)

4 years agoRollup merge of #70253 - jplatte:patch-2, r=Mark-Simulacrum
Dylan DPC [Sun, 22 Mar 2020 14:48:40 +0000 (15:48 +0100)]
Rollup merge of #70253 - jplatte:patch-2, r=Mark-Simulacrum

Remove another wrong entry from RELEASES.md

The entry is under 1.11.0, but the feature is only available since 1.12.0 (for which an identical entry exists).

![Screenshot_2020-03-22 Support `cfg_attr` on `path` attributes by jseyfried · Pull Request #34546 · rust-lang rust](https://user-images.githubusercontent.com/951129/77238862-85c8f580-6bd4-11ea-8d31-77e2994a4b5a.png)

4 years agoRollup merge of #70250 - jplatte:patch-1, r=Centril
Dylan DPC [Sun, 22 Mar 2020 14:48:38 +0000 (15:48 +0100)]
Rollup merge of #70250 - jplatte:patch-1, r=Centril

Remove wrong entry from RELEASES.md

resolves #70247

4 years agoRollup merge of #70240 - brain0:thread_id, r=Mark-Simulacrum
Dylan DPC [Sun, 22 Mar 2020 14:48:37 +0000 (15:48 +0100)]
Rollup merge of #70240 - brain0:thread_id, r=Mark-Simulacrum

Return NonZeroU64 from ThreadId::as_u64.

As discussed in #67939, this allows turning Option<ThreadId> into Option<NonZeroU64> which
can then be stored inside an AtomicU64.

4 years agoRollup merge of #70229 - matthiaskrgr:cl3ppy, r=Mark-Simulacrum
Dylan DPC [Sun, 22 Mar 2020 14:48:35 +0000 (15:48 +0100)]
Rollup merge of #70229 - matthiaskrgr:cl3ppy, r=Mark-Simulacrum

more clippy fixes

* remove unused unit values (clippy::unused_unit)
* make some let-if-bindings more idiomatic (clippy::useless_let_if_seq)
* clarify when we pass () to functions (clippy::unit_arg)
* don't redundantly repeat field names (clippy::redundant_field_names)
* remove redundant returns (clippy::needless_return)
* use let instead of match for matches with single bindings (clippy::match_single_binding)
* don't convert results to options just for matching (clippy::if_let_some_result)

4 years agoRollup merge of #70223 - lcnr:issue70167, r=eddyb
Dylan DPC [Sun, 22 Mar 2020 14:48:34 +0000 (15:48 +0100)]
Rollup merge of #70223 - lcnr:issue70167, r=eddyb

fix type of const params in associated types.

fixes #66906
fixes #70167

r? @eddyb

4 years agoRollup merge of #70209 - Centril:recover-quant-closure, r=petrochenkov
Dylan DPC [Sun, 22 Mar 2020 14:48:32 +0000 (15:48 +0100)]
Rollup merge of #70209 - Centril:recover-quant-closure, r=petrochenkov

parser: recover on `for<'a> |...| body` closures

When encountering `for` and `<` is 1 token ahead, interpret this as an explicitly quantified generic closure and recover, rather than attempting to parse a `for` loop. This provides both improved diagnostics as well as an insurance policy for the ability to use this as the syntax for generic closures in the future.

As requested by r? @eddyb

4 years agoRollup merge of #70172 - eddyb:retokenize-external-src, r=petrochenkov
Dylan DPC [Sun, 22 Mar 2020 14:48:30 +0000 (15:48 +0100)]
Rollup merge of #70172 - eddyb:retokenize-external-src, r=petrochenkov

parse/lexer: support `StringReader::retokenize` called on external files.

This ~~should theoretically~~ fixes #69933, ~~but I'm not sure what the best way to test it is~~.
**EDIT**: see https://github.com/rust-lang/rust/issues/69933#issuecomment-602019598.

r? @petrochenkov cc @Xanewok @staktrace

4 years agoRollup merge of #68099 - lukaslueg:into_raw_unsafe, r=LukasKalbertodt
Dylan DPC [Sun, 22 Mar 2020 14:48:28 +0000 (15:48 +0100)]
Rollup merge of #68099 - lukaslueg:into_raw_unsafe, r=LukasKalbertodt

Amend Rc/Arc::from_raw() docs regarding unsafety

[This](https://stackoverflow.com/questions/59671647/is-it-safe-to-clone-a-type-erased-arc-via-raw-pointer) question on SO boils down to "is it safe to `::from_raw()` a `Rc<T>`/`Arc<T>` using a dummy `T` even if `T` is never dereferenced via the new `Rc`/`Arc`?". It almost never is.

This PR amends the docs of `from_raw()` regarding this point.

4 years agoClean up E0449 explanation
Guillaume Gomez [Sun, 22 Mar 2020 12:33:29 +0000 (13:33 +0100)]
Clean up E0449 explanation

4 years agoAuto merge of #68820 - WaffleLapkin:remove_finished_from_map_while, r=LukasKalbertodt
bors [Sun, 22 Mar 2020 11:57:58 +0000 (11:57 +0000)]
Auto merge of #68820 - WaffleLapkin:remove_finished_from_map_while, r=LukasKalbertodt

Remove `finished` flag from `MapWhile`

This PR removes  `finished` flag from `MapWhile` as been proposed in https://github.com/rust-lang/rust/pull/66577#discussion_r370958025.

This also resolves open questions of the tracking issue (#68537):
- `MapWhile` can't implement both
  + `DoubleEndedIterator` (discussed in https://github.com/rust-lang/rust/pull/66577#discussion_r370947990 and following comments)
  + `FusedIterator` (this pr removes `finished` flag, so `MapWhile` isn't fused anymore)
- Debug output (this pr removes `finished` flag, so there is no question in including it in debug output)

r? @Mark-Simulacrum

4 years agoremove redundant closures (clippy::redundant_closure)
Matthias Krüger [Sun, 22 Mar 2020 11:43:19 +0000 (12:43 +0100)]
remove redundant closures (clippy::redundant_closure)

4 years agorename tests
Bastian Kauschke [Sun, 22 Mar 2020 10:59:01 +0000 (11:59 +0100)]
rename tests

4 years agosimplify eval_mir_constant
Bastian Kauschke [Sun, 22 Mar 2020 10:53:13 +0000 (11:53 +0100)]
simplify eval_mir_constant

4 years agohandle unevaluated consts after monomophize
Bastian Kauschke [Sun, 22 Mar 2020 10:34:42 +0000 (11:34 +0100)]
handle unevaluated consts after monomophize

4 years agoproc_macro_harness: Use item header spans for errors
Vadim Petrochenkov [Sun, 22 Mar 2020 09:38:50 +0000 (12:38 +0300)]
proc_macro_harness: Use item header spans for errors

4 years agoAuto merge of #68098 - ssomers:btreemap_gdb_pretty_print, r=Mark-Simulacrum
bors [Sun, 22 Mar 2020 08:55:18 +0000 (08:55 +0000)]
Auto merge of #68098 - ssomers:btreemap_gdb_pretty_print, r=Mark-Simulacrum

Test gdb pretty printing more and fix overzealous type substitution

Adresses a problem concerning printing BTreeMap / BTreeSet data in gdb: when the key or value type name contains substring "LeafNode", and the map has multiple nodes (e.g. more than 11 elements), printing causes an exception. E.g.

```
rustc -g - <<EOF
    use std::collections::BTreeMap;

    struct MyLeafNode(i8);

    fn main() {
        let m: BTreeMap<i8, MyLeafNode> = (0..12).map(|i| (i, MyLeafNode(i))).collect();
        assert!(!m.is_empty());
    }
EOF
```

```
$ rust-gdb rust_out
(gdb) b 7
(gdb) r
(gdb) p m
$1 = BTreeMap<i8, rust_out::MyLeafNode>(len: 12)Python Exception <class 'gdb.error'> No type named alloc::collections::btree::node::InternalNode<i8, rust_out::MyInternalNode>.:
use std::collections::BTreeMap;
```

The code was written in #56144 by @tromey (and later touched upon by @RalfJung in #57045, but I think that had nothing to do with the issues in this PR).

4 years agoAuto merge of #70153 - flip1995:clippyup, r=Dylan-DPC
bors [Sun, 22 Mar 2020 00:57:57 +0000 (00:57 +0000)]
Auto merge of #70153 - flip1995:clippyup, r=Dylan-DPC

Update Clippy

Closes #70128

cc rust-lang/rust-clippy#5342

r? @Manishearth

4 years agoAllow calculating the layout behind a pointer
CAD97 [Tue, 11 Feb 2020 19:10:49 +0000 (14:10 -0500)]
Allow calculating the layout behind a pointer

Let align/size_of_of_val intrinsics work on ptrs

4 years agodon't create variable bindings just to return the bound value immediately (clippy...
Matthias Krüger [Sat, 21 Mar 2020 23:20:58 +0000 (00:20 +0100)]
don't create variable bindings just to return the bound value immediately (clippy::let_and_return)

4 years agoparse: nix new_sub_parser_from_file
Mazdak Farrokhzad [Sat, 21 Mar 2020 22:10:10 +0000 (23:10 +0100)]
parse: nix new_sub_parser_from_file

4 years agosummarize if-else-code with identical blocks (clippy::if_same_then_else)
Matthias Krüger [Sat, 21 Mar 2020 22:58:21 +0000 (23:58 +0100)]
summarize if-else-code with identical blocks (clippy::if_same_then_else)

4 years agoRemove another wrong entry from RELEASES.md
Jonas Platte [Sat, 21 Mar 2020 23:29:12 +0000 (00:29 +0100)]
Remove another wrong entry from RELEASES.md

4 years agoRemove wrong entry from RELEASES.md
Jonas Platte [Sat, 21 Mar 2020 22:33:33 +0000 (23:33 +0100)]
Remove wrong entry from RELEASES.md

4 years agoAuto merge of #70246 - Dylan-DPC:rollup-vt9wex2, r=Dylan-DPC
bors [Sat, 21 Mar 2020 21:57:38 +0000 (21:57 +0000)]
Auto merge of #70246 - Dylan-DPC:rollup-vt9wex2, r=Dylan-DPC

Rollup of 10 pull requests

Successful merges:

 - #70003 (symbol_names: treat ReifyShim like VtableShim.)
 - #70051 (Allow `hir().find` to return `None`)
 - #70126 (Fix ICE caused by truncating a negative ZST enum discriminant)
 - #70197 (For issue 53957: revise unit test to focus on underlying bug of 23076.)
 - #70215 (ast: Compress `AttrId` from `usize` to `u32`)
 - #70218 (Fix deprecated Error.description() usage in docs)
 - #70228 (Remove CARGO_BUILD_TARGET from bootstrap.py)
 - #70231 (Add explanation message for E0224)
 - #70232 (Tweak wording for std::io::Read::read function)
 - #70238 (Add a test for out-of-line module passed through a proc macro)

Failed merges:

r? @ghost

4 years agoRollup merge of #70238 - petrochenkov:procmod, r=Centril
Dylan DPC [Sat, 21 Mar 2020 21:56:31 +0000 (22:56 +0100)]
Rollup merge of #70238 - petrochenkov:procmod, r=Centril

Add a test for out-of-line module passed through a proc macro

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

4 years agoRollup merge of #70232 - adrian5:patch-1, r=Dylan-DPC
Dylan DPC [Sat, 21 Mar 2020 21:56:30 +0000 (22:56 +0100)]
Rollup merge of #70232 - adrian5:patch-1, r=Dylan-DPC

Tweak wording for std::io::Read::read function

I think the sentence as a whole reads smoother that way.

4 years agoRollup merge of #70231 - aDotInTheVoid:E0224, r=Dylan-DPC
Dylan DPC [Sat, 21 Mar 2020 21:56:28 +0000 (22:56 +0100)]
Rollup merge of #70231 - aDotInTheVoid:E0224, r=Dylan-DPC

Add explanation message for E0224

Addresses some of #61137

4 years agoRollup merge of #70228 - lzutao:patch-1, r=Mark-Simulacrum
Dylan DPC [Sat, 21 Mar 2020 21:56:27 +0000 (22:56 +0100)]
Rollup merge of #70228 - lzutao:patch-1, r=Mark-Simulacrum

Remove CARGO_BUILD_TARGET from bootstrap.py

Closes #70208

4 years agoRollup merge of #70218 - intgr:fix-deprecated-method-in-docs, r=jonas-schievink
Dylan DPC [Sat, 21 Mar 2020 21:56:25 +0000 (22:56 +0100)]
Rollup merge of #70218 - intgr:fix-deprecated-method-in-docs, r=jonas-schievink

Fix deprecated Error.description() usage in docs

4 years agoRollup merge of #70215 - petrochenkov:attrid, r=Centril
Dylan DPC [Sat, 21 Mar 2020 21:56:24 +0000 (22:56 +0100)]
Rollup merge of #70215 - petrochenkov:attrid, r=Centril

ast: Compress `AttrId` from `usize` to `u32`

An easy size win for `ast::Attribute` (96 bytes -> 88 bytes).

Also stop encoding/decoding `AttrId` entirely.

4 years agoRollup merge of #70197 - pnkfelix:issue-53957-revise-test-of-23076, r=LukasKalbertodt
Dylan DPC [Sat, 21 Mar 2020 21:56:22 +0000 (22:56 +0100)]
Rollup merge of #70197 - pnkfelix:issue-53957-revise-test-of-23076, r=LukasKalbertodt

For issue 53957: revise unit test to focus on underlying bug of 23076.

Fix #53957 by revising unit test to focus on underlying bug of #23076.

Namely, this version focuses on the end-to-end behavior that the attempt to create the UDP binding will fail, regardless of the semantics of how particular DNS servers handle junk inputs.

(I spent some time trying to create a second more-focused test that would sidestep the DNS resolution, but this is not possible without more invasive changes to the internal infrastructure of `ToSocketAddrs` and what not. It is not worth it.)

4 years agoRollup merge of #70126 - wesleywiser:fix_miri_ice_neg_zst_enum_discr, r=RalfJung...
Dylan DPC [Sat, 21 Mar 2020 21:56:20 +0000 (22:56 +0100)]
Rollup merge of #70126 - wesleywiser:fix_miri_ice_neg_zst_enum_discr, r=RalfJung,eddyb

Fix ICE caused by truncating a negative ZST enum discriminant

Fixes #70114

r? @oli-obk or @RalfJung

4 years agoRollup merge of #70051 - Zoxc:opt-find, r=eddyb
Dylan DPC [Sat, 21 Mar 2020 21:56:19 +0000 (22:56 +0100)]
Rollup merge of #70051 - Zoxc:opt-find, r=eddyb

Allow `hir().find` to return `None`

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

r? @eddyb

4 years agoRollup merge of #70003 - eddyb:symbol-mangling-reify-shims, r=nikomatsakis
Dylan DPC [Sat, 21 Mar 2020 21:56:18 +0000 (22:56 +0100)]
Rollup merge of #70003 - eddyb:symbol-mangling-reify-shims, r=nikomatsakis

symbol_names: treat ReifyShim like VtableShim.

Without this, the `#[track_caller]` tests don't pass with `-Zsymbol-mangling-version=v0`, because there is a symbol name collision between the `ReifyShim` and the original definition.

cc @anp

4 years agoparse: nix unused `root_module_name`.
Mazdak Farrokhzad [Sat, 21 Mar 2020 21:51:03 +0000 (22:51 +0100)]
parse: nix unused `root_module_name`.

4 years agolowering: remove librustc dependency
Mazdak Farrokhzad [Sat, 21 Mar 2020 03:48:12 +0000 (04:48 +0100)]
lowering: remove librustc dependency

4 years ago{rustc::hir::map -> rustc_hir}::definitions
Mazdak Farrokhzad [Sat, 21 Mar 2020 03:39:48 +0000 (04:39 +0100)]
{rustc::hir::map -> rustc_hir}::definitions

4 years agomove CrateDisambiguator -> rustc_ast
Mazdak Farrokhzad [Sat, 21 Mar 2020 03:30:30 +0000 (04:30 +0100)]
move CrateDisambiguator -> rustc_ast

4 years agodep_graph.assert_ignored() -> rustc_interface
Mazdak Farrokhzad [Sat, 21 Mar 2020 02:17:30 +0000 (03:17 +0100)]
dep_graph.assert_ignored() -> rustc_interface

4 years agoadd_elided_lifetime_in_path_suggestion -> rustc_session
Mazdak Farrokhzad [Sat, 21 Mar 2020 02:13:14 +0000 (03:13 +0100)]
add_elided_lifetime_in_path_suggestion -> rustc_session

4 years agolowering: bug! -> panic!
Mazdak Farrokhzad [Sat, 21 Mar 2020 01:38:48 +0000 (02:38 +0100)]
lowering: bug! -> panic!

4 years agoseparate out an arena for HIR
Mazdak Farrokhzad [Sat, 21 Mar 2020 01:21:21 +0000 (02:21 +0100)]
separate out an arena for HIR

4 years agomove move stuff into declare_arena!
Mazdak Farrokhzad [Sat, 21 Mar 2020 00:42:14 +0000 (01:42 +0100)]
move move stuff into declare_arena!

4 years agomove more logic into declare_arena!
Mazdak Farrokhzad [Sat, 21 Mar 2020 00:05:45 +0000 (01:05 +0100)]
move more logic into declare_arena!

4 years agomerge impl_arena_allocatable & declare_arena
Mazdak Farrokhzad [Sat, 21 Mar 2020 00:02:46 +0000 (01:02 +0100)]
merge impl_arena_allocatable & declare_arena

4 years agomove DropArena -> libarena
Mazdak Farrokhzad [Fri, 20 Mar 2020 23:57:30 +0000 (00:57 +0100)]
move DropArena -> libarena

4 years agoremove unused unit values (clippy::unused_unit)
Matthias Krüger [Sat, 21 Mar 2020 14:06:04 +0000 (15:06 +0100)]
remove unused unit values (clippy::unused_unit)

4 years agomake some let-if-bindings more idiomatic (clippy::useless_let_if_seq)
Matthias Krüger [Sat, 21 Mar 2020 13:44:17 +0000 (14:44 +0100)]
make some let-if-bindings more idiomatic (clippy::useless_let_if_seq)

4 years agoclarify when we pass () to functions (clippy::unit_arg)
Matthias Krüger [Sat, 21 Mar 2020 13:24:57 +0000 (14:24 +0100)]
clarify when we pass () to functions (clippy::unit_arg)

4 years agoAllow `hir().find` to return `None`
John Kåre Alsaker [Mon, 16 Mar 2020 18:17:40 +0000 (19:17 +0100)]
Allow `hir().find` to return `None`

4 years agoReturn NonZeroU64 from ThreadId::as_u64.
Thomas Bächler [Sat, 21 Mar 2020 18:48:23 +0000 (19:48 +0100)]
Return NonZeroU64 from ThreadId::as_u64.

As discussed in #67939, this allows turning Option<ThreadId> into Option<NonZeroU64> which
can then be stored inside an AtomicU64.

4 years agoAdd a test for out-of-line module passed through a proc macro
Vadim Petrochenkov [Sat, 21 Mar 2020 18:40:58 +0000 (21:40 +0300)]
Add a test for out-of-line module passed through a proc macro

4 years agoresolve: Avoid "self-confirming" import resolutions in one more case
Vadim Petrochenkov [Sat, 21 Mar 2020 16:19:48 +0000 (19:19 +0300)]
resolve: Avoid "self-confirming" import resolutions in one more case

4 years agoAuto merge of #69729 - RalfJung:backtrace, r=Mark-Simulacrum
bors [Sat, 21 Mar 2020 16:41:39 +0000 (16:41 +0000)]
Auto merge of #69729 - RalfJung:backtrace, r=Mark-Simulacrum

update backtrace crate

In particular this release includes https://github.com/rust-lang/backtrace-rs/pull/297 and https://github.com/rust-lang/backtrace-rs/pull/300.

4 years agoTweak wording for std::io::Read::read function
adrian5 [Sat, 21 Mar 2020 16:06:10 +0000 (17:06 +0100)]
Tweak wording for std::io::Read::read function

4 years agoAdd explanation message for E0224
Nixon Enraght-Moony [Sat, 21 Mar 2020 15:43:12 +0000 (15:43 +0000)]
Add explanation message for E0224

4 years agoslightly change the `Iterator::map_while` docs
Waffle [Sat, 21 Mar 2020 15:40:28 +0000 (18:40 +0300)]
slightly change the `Iterator::map_while` docs

4 years agodon't redundantly repeat field names (clippy::redundant_field_names)
Matthias Krüger [Sat, 21 Mar 2020 12:53:34 +0000 (13:53 +0100)]
don't redundantly repeat field names (clippy::redundant_field_names)

4 years agoremove redundant returns (clippy::needless_return)
Matthias Krüger [Sat, 21 Mar 2020 12:37:29 +0000 (13:37 +0100)]
remove redundant returns (clippy::needless_return)

4 years agouse let instead of match for matches with single bindings (clippy::match_single_binding)
Matthias Krüger [Sat, 21 Mar 2020 12:14:44 +0000 (13:14 +0100)]
use let instead of match for matches with single bindings (clippy::match_single_binding)

4 years agoRemove CARGO_BUILD_TARGET from bootstrap.py
lzutao [Sat, 21 Mar 2020 14:54:01 +0000 (21:54 +0700)]
Remove CARGO_BUILD_TARGET from bootstrap.py

4 years agodon't convert results to options just for matching (clippy::if_let_some_result)
Matthias Krüger [Sat, 21 Mar 2020 11:50:22 +0000 (12:50 +0100)]
don't convert results to options just for matching (clippy::if_let_some_result)

4 years agoBless tests
LeSeulArtichaut [Sat, 21 Mar 2020 14:03:58 +0000 (15:03 +0100)]
Bless tests

4 years agoTest pretty printing more and fix overzealous type substitution
Stein Somers [Fri, 10 Jan 2020 16:31:56 +0000 (17:31 +0100)]
Test pretty printing more and fix overzealous type substitution

4 years agoOnly display definition on typo
LeSeulArtichaut [Sat, 21 Mar 2020 13:28:07 +0000 (14:28 +0100)]
Only display definition on typo

4 years agoAuto merge of #70222 - Dylan-DPC:rollup-cwkv5ez, r=Dylan-DPC
bors [Sat, 21 Mar 2020 13:26:44 +0000 (13:26 +0000)]
Auto merge of #70222 - Dylan-DPC:rollup-cwkv5ez, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #69497 (Don't unwind when hitting the macro expansion recursion limit)
 - #69901 (add #[rustc_layout(debug)])
 - #69910 (Avoid query type in generics)
 - #69955 (Fix abort-on-eprintln during process shutdown)
 - #70032 (put type params in front of const params in generics_of)
 - #70119 (rustc: use LocalDefId instead of DefId in TypeckTables.)

Failed merges:

r? @ghost

4 years agosymbol_names: treat ReifyShim like VtableShim.
Eduard-Mihai Burtescu [Sat, 14 Mar 2020 16:48:10 +0000 (18:48 +0200)]
symbol_names: treat ReifyShim like VtableShim.