]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoAuto merge of #66279 - cjgillot:hashstable, r=Zoxc
bors [Mon, 25 Nov 2019 09:28:59 +0000 (09:28 +0000)]
Auto merge of #66279 - cjgillot:hashstable, r=Zoxc

Use proc-macro to derive HashStable everywhere

Hello,

A second proc-macro is added to derive HashStable for crates librustc depends on.
This proc-macro `HashStable_Generic` (to bikeshed) allows to decouple code and strip much of librustc's boilerplate.

Still, two implementations `Span` and `TokenKind` require to be placed in librustc.
The latter only depends on the `bug` macro. Advise welcome on how to sever that link.
A trait `StableHasingContextLike` has been introduced at each crate root,
in order to handle those implementations which require librustc's very `StableHashingContext`.

This overall effort allowed to remove the `impl_stable_hash_for` macro.

Each commit passes the `x.py check`.
I still have to double check there was no change in the implementation.

4 years agoAuto merge of #66669 - petrochenkov:tup2attr, r=matthewjasper
bors [Mon, 25 Nov 2019 05:41:27 +0000 (05:41 +0000)]
Auto merge of #66669 - petrochenkov:tup2attr, r=matthewjasper

Fix some issues with attributes on unnamed fields

Fixes https://github.com/rust-lang/rust/issues/66487
Fixes https://github.com/rust-lang/rust/issues/66555

4 years agoFix some rustdoc error capitalization
Esteban Küber [Mon, 25 Nov 2019 02:42:22 +0000 (18:42 -0800)]
Fix some rustdoc error capitalization

4 years agoAuto merge of #66671 - matthewjasper:ast-address-of, r=Centril
bors [Mon, 25 Nov 2019 01:20:38 +0000 (01:20 +0000)]
Auto merge of #66671 - matthewjasper:ast-address-of, r=Centril

Ast address-of

This is the parts of #64588 that don't affect MIR. If an address-of expression makes it to MIR lowering we error and lower to the best currently expressible approximation to limit further errors.

r? @Centril

4 years agoRespond to CR feedback
Wesley Wiser [Mon, 25 Nov 2019 00:09:58 +0000 (19:09 -0500)]
Respond to CR feedback

4 years agodisable redzone
Stefan Lankes [Sun, 24 Nov 2019 22:40:32 +0000 (23:40 +0100)]
disable redzone

4 years agoHandle non_exhaustive in borrow checking
Matthew Jasper [Sun, 24 Nov 2019 22:39:05 +0000 (22:39 +0000)]
Handle non_exhaustive in borrow checking

4 years agoAuto merge of #66540 - nnethercote:SmallVec-Candidate-match_pairs, r=matthewjasper
bors [Sun, 24 Nov 2019 21:39:09 +0000 (21:39 +0000)]
Auto merge of #66540 - nnethercote:SmallVec-Candidate-match_pairs, r=matthewjasper

Use a `SmallVec` for `Candidate::match_pairs`.

This is a small win for `encoding`.

r? @matthewjasper

4 years agouse nicer code style to pass tidy check
Stefan Lankes [Sun, 24 Nov 2019 21:36:50 +0000 (22:36 +0100)]
use nicer code style to pass tidy check

4 years agoStore ptr_width as u32 on Config
Mark Rousskov [Sun, 24 Nov 2019 21:25:20 +0000 (16:25 -0500)]
Store ptr_width as u32 on Config

This removes the dependency on IntTy, UintTy from Session.

4 years agotidy: Accommodate rustfmt's preferred layout of stability attributes
David Tolnay [Sun, 24 Nov 2019 20:44:49 +0000 (12:44 -0800)]
tidy: Accommodate rustfmt's preferred layout of stability attributes

Previously tidy would require that the `feature = "name_of_feature"`
part of the stability attribute was on the same line as the `#[stable(`
/ `#[unstable(` opening part of the attribute, and that `)]` was on the
same line as the last key-value pair.

That didn't work with rustfmt's preferred layout of long attributes,
which is like:

    #[unstable(
        feature = "c_variadic",
        reason = "the `c_variadic` feature has not been properly tested on \
                  all supported platforms",
        issue = "44930"
    )]

4 years agointroduce a target to build the kernel HermitCore
Stefan Lankes [Sun, 24 Nov 2019 20:05:32 +0000 (21:05 +0100)]
introduce a target to build the kernel HermitCore

- the target avoids the usage of SSE & AVX within the kernel

4 years agoAdd hardware floating point features to aarch64-pc-windows-msvc
Matt Ickstadt [Sun, 24 Nov 2019 19:39:03 +0000 (13:39 -0600)]
Add hardware floating point features to aarch64-pc-windows-msvc

4 years agoUpdate for ConstKind refactor
Aaron Hill [Mon, 18 Nov 2019 19:58:29 +0000 (14:58 -0500)]
Update for ConstKind refactor

4 years agoAdd example and extra documentation
Aaron Hill [Mon, 18 Nov 2019 19:46:16 +0000 (14:46 -0500)]
Add example and extra documentation

4 years agoFix missing character
Aaron Hill [Mon, 18 Nov 2019 19:37:56 +0000 (14:37 -0500)]
Fix missing character

Co-Authored-By: varkor <github@varkor.com>
4 years agobug!() on const inference variable in opaque type
Aaron Hill [Mon, 11 Nov 2019 20:01:53 +0000 (15:01 -0500)]
bug!() on const inference variable in opaque type

Add some tests to verify that this case is never hit

4 years agoAlso fix lifetimes and consts in opaque types
Aaron Hill [Mon, 11 Nov 2019 18:31:46 +0000 (13:31 -0500)]
Also fix lifetimes and consts in opaque types

4 years agoImprove error message when opaque type is not fully constrained
Aaron Hill [Fri, 8 Nov 2019 03:40:19 +0000 (22:40 -0500)]
Improve error message when opaque type is not fully constrained

4 years agoFix opaque types resulting from projections in function signature
Aaron Hill [Thu, 7 Nov 2019 02:26:40 +0000 (21:26 -0500)]
Fix opaque types resulting from projections in function signature

When we normalize the types in a function signature, we may end up
resolving a projection to an opaque type (e.g. `Self::MyType` when
we have `type MyType = impl SomeTrait`). When the projection is
resolved, we will instantiate the generic parameters into fresh
inference variables.

While we do want to normalize projections to opaque types, we don't want
to replace the explicit generic parameters (e.g. `T` in `impl
MyTrait<T>`) with inference variables. We want the opaque type in the
function signature to be eligible to be a defining use of that opaque
type - adding inference variables prevents this, since the opaque type
substs now appears to refer to some specific type, rather than a generic
type.

To resolve this issue, we inspect the opaque types in the function
signature after normalization. Any inference variables in the substs are
replaced with the corresponding generic parameter in the identity substs
(e.g. `T` in `impl MyTrait<T>`). Note that normalization is the only way
that we can end up with inference variables in opaque substs in a
function signature - users have no way of getting inference variables
into a function signature.

Note that all of this refers to the opaque type (ty::Opaque) and its
subst - *not* to the underlying type.

Fixes #59342

4 years agoAuto merge of #66647 - petrochenkov:nosynt, r=Centril
bors [Sun, 24 Nov 2019 18:16:43 +0000 (18:16 +0000)]
Auto merge of #66647 - petrochenkov:nosynt, r=Centril

rustc_plugin: Remove support for syntactic plugins

This part of the plugin interface was successfully replaced by token-based procedural macros in theory and in practice.

cc https://github.com/rust-lang/rust/issues/29597
cc https://github.com/rust-lang/rust/pull/64675
r? @Centril

4 years agoAdd tests for raw_ref_op
Matthew Jasper [Sat, 23 Nov 2019 14:22:30 +0000 (14:22 +0000)]
Add tests for raw_ref_op

4 years agoParse and feature gate raw address of expressions
Matthew Jasper [Sat, 23 Nov 2019 14:22:00 +0000 (14:22 +0000)]
Parse and feature gate raw address of expressions

4 years agoAdd raw address of expressions to the AST and HIR
Matthew Jasper [Sat, 23 Nov 2019 14:15:49 +0000 (14:15 +0000)]
Add raw address of expressions to the AST and HIR

4 years agoFix pointing at arg for fulfillment errors in function calls
Janusz Marcinkiewicz [Sun, 24 Nov 2019 13:31:19 +0000 (14:31 +0100)]
Fix pointing at arg for fulfillment errors in function calls

4 years agofixup! Lowercase diagnostic message label
Timo Freiberg [Sun, 24 Nov 2019 12:01:24 +0000 (13:01 +0100)]
fixup! Lowercase diagnostic message label

4 years agofixup! Add negative tests where the diagnostic message would be wrong
Timo Freiberg [Sun, 24 Nov 2019 12:01:13 +0000 (13:01 +0100)]
fixup! Add negative tests where the diagnostic message would be wrong

4 years agoAdd version mismatch help message for unimplemented trait
Timo Freiberg [Sun, 3 Nov 2019 22:06:48 +0000 (23:06 +0100)]
Add version mismatch help message for unimplemented trait

Issue #22750
The error reporting for E0277 (the trait `X` is not implemented for `Foo`)
now checks whether `Foo` implements a trait with the same path as `X`,
which probably means that the programmer wanted to actually use only one
version of the trait `X` instead of the two.

4 years agoAuto merge of #66592 - estebank:raw-raw-ah-ah-ah, r=cramertj
bors [Sun, 24 Nov 2019 14:08:08 +0000 (14:08 +0000)]
Auto merge of #66592 - estebank:raw-raw-ah-ah-ah, r=cramertj

Rework raw ident suggestions

Use heuristics to determine whethersuggesting raw identifiers is
appropriate.

Account for raw identifiers when printing a path in a `use` suggestion.

Fix #66126.

4 years agotidy: Remove unused import
Vadim Petrochenkov [Sun, 24 Nov 2019 13:09:55 +0000 (16:09 +0300)]
tidy: Remove unused import

4 years agomake comment compile
Ralf Jung [Sun, 24 Nov 2019 12:15:22 +0000 (13:15 +0100)]
make comment compile

4 years agoexpand type info on __rust_start_panic
Ralf Jung [Sun, 24 Nov 2019 12:13:33 +0000 (13:13 +0100)]
expand type info on __rust_start_panic

4 years agoUpdate tests for raw array in FFI lint
Elichai Turkel [Mon, 11 Nov 2019 17:56:45 +0000 (19:56 +0200)]
Update tests for raw array in FFI lint

4 years agoAdd FFI raw array lint
Elichai Turkel [Mon, 11 Nov 2019 17:55:49 +0000 (19:55 +0200)]
Add FFI raw array lint

4 years agoAuto merge of #66393 - ssomers:hash_benches, r=dtolnay
bors [Sun, 24 Nov 2019 10:52:12 +0000 (10:52 +0000)]
Auto merge of #66393 - ssomers:hash_benches, r=dtolnay

introduce benchmarks of HashSet operations

To avoid goofs such as corrected by #66280, I added benchmarks of binary HashSet operations.

Due to the fact x.py keeps recompiling the whole shebang (or at least a big part of it) whenever you touch the test code, and because piling up all tests in one file does not strike me as future proof, I tried moving the hash benches to the separate place they are for liballoc/collections/btree. But it turns out that, in a cleaned checkout, x.py still recompiles the whole shebang whenever you touch the test code (PS or when you add or delete any irrelevant file). So I'm not going to add more tests, and I doubt others will, and these tests have proven their point already, so this PR is kind of pointless

4 years agopanicking comments
Ralf Jung [Sun, 24 Nov 2019 10:26:07 +0000 (11:26 +0100)]
panicking comments

4 years agorustc_plugin: Remove support for syntactic plugins
Vadim Petrochenkov [Fri, 22 Nov 2019 20:06:56 +0000 (23:06 +0300)]
rustc_plugin: Remove support for syntactic plugins

4 years agoexpand: Fully preserve visibilities on unnamed fields with attributes
Vadim Petrochenkov [Sat, 23 Nov 2019 13:54:24 +0000 (16:54 +0300)]
expand: Fully preserve visibilities on unnamed fields with attributes

4 years agodef_collector: Do not forget to save indices of fields with multiple attributes
Vadim Petrochenkov [Sat, 23 Nov 2019 11:16:38 +0000 (14:16 +0300)]
def_collector: Do not forget to save indices of fields with multiple attributes

4 years agoAuto merge of #66322 - lzutao:consistent-result-map_or_else, r=dtolnay
bors [Sun, 24 Nov 2019 07:37:01 +0000 (07:37 +0000)]
Auto merge of #66322 - lzutao:consistent-result-map_or_else, r=dtolnay

Stabilize Result::map_or_else

Stabilized this API:
```rust
impl<T, E> Result<T, E> {
    pub fn map_or_else<U, D: FnOnce(E) -> U, F: FnOnce(T) -> U>(self, default: D, f: F) -> U {
        match self {
            Ok(t) => f(t),
            Err(e) => default(e),
        }
    }
}
```

Closes #53268
r? @SimonSapin

4 years agoreview comments: remove unnecessary `&str` to `String` conversions
Esteban Küber [Sun, 24 Nov 2019 02:36:33 +0000 (18:36 -0800)]
review comments: remove unnecessary `&str` to `String` conversions

4 years agoAuto merge of #66686 - Centril:rollup-07slyoo, r=Centril
bors [Sun, 24 Nov 2019 02:17:29 +0000 (02:17 +0000)]
Auto merge of #66686 - Centril:rollup-07slyoo, r=Centril

Rollup of 5 pull requests

Successful merges:

 - #64856 (Scope format! temporaries)
 - #66411 (mem::forget docs: mention ManuallyDrop)
 - #66594 (Fix cycle when debug-printing opaque types)
 - #66641 (parser: recover on nested ADTs as enum variants)
 - #66659 (make `./x.py bench` again)

Failed merges:

r? @ghost

4 years agoRollup merge of #66659 - Centril:fix-bench, r=Mark-Simulacrum
Mazdak Farrokhzad [Sun, 24 Nov 2019 02:17:03 +0000 (03:17 +0100)]
Rollup merge of #66659 - Centril:fix-bench, r=Mark-Simulacrum

make `./x.py bench` again

Fixes #54016

4 years agoRollup merge of #66641 - VirrageS:master, r=Centril
Mazdak Farrokhzad [Sun, 24 Nov 2019 02:17:02 +0000 (03:17 +0100)]
Rollup merge of #66641 - VirrageS:master, r=Centril

parser: recover on nested ADTs as enum variants

Closes: https://github.com/rust-lang/rust/issues/66127
4 years agoRollup merge of #66594 - Aaron1011:fix/debug-print-cycle, r=matthewjasper
Mazdak Farrokhzad [Sun, 24 Nov 2019 02:17:01 +0000 (03:17 +0100)]
Rollup merge of #66594 - Aaron1011:fix/debug-print-cycle, r=matthewjasper

Fix cycle when debug-printing opaque types

Fixes #61577

When printing an opaque type in non-verbose mode, we use the
`tcx.predicates_of` query to retrieve the opaque type's bounds for
pretty-printing. However, the pervasiveness of logging within librustc
means that we may already be executing `tcx.predicates_of` for the
opaque type we're trying to print, leading to a cycle error.

This commit adds a new 'no queries' thread-local flag to the pretty
printer. This flag is enabled during the computation of `predicates_of`
for opaque types, and causes us to print the opaque type in 'verbose'
mode (which does not require computing any additinal queries). This
should only affect debug logging for highly nested log messages, not any
user-visible output.

4 years agoRollup merge of #66411 - RalfJung:forget, r=sfackler
Mazdak Farrokhzad [Sun, 24 Nov 2019 02:16:59 +0000 (03:16 +0100)]
Rollup merge of #66411 - RalfJung:forget, r=sfackler

mem::forget docs: mention ManuallyDrop

Cc @SimonSapin @Centril

4 years agoRollup merge of #64856 - jonhoo:format-temporaries, r=sfackler
Mazdak Farrokhzad [Sun, 24 Nov 2019 02:16:57 +0000 (03:16 +0100)]
Rollup merge of #64856 - jonhoo:format-temporaries, r=sfackler

Scope format! temporaries

This places the temporaries that `format!` generates to refer to its arguments (through `&dyn Trait`) in a short-lived scope surrounding just the invocation of `format!`. This enables `format!` to be used in generators without the temporaries preventing the generator from being `Send` (due to `dyn Trait` not being `Sync`).

See rust-lang/rust#64477 for details.

4 years agoreview comments
Esteban Küber [Sun, 24 Nov 2019 01:08:04 +0000 (17:08 -0800)]
review comments

4 years agoRework raw ident suggestions
Esteban Küber [Wed, 20 Nov 2019 22:50:13 +0000 (14:50 -0800)]
Rework raw ident suggestions

Use heuristics to determine whethersuggesting raw identifiers is
appropriate.

Account for raw identifiers when printing a path in a `use` suggestion.

4 years agodrive-by cleanup in region naming
Mark Mansi [Sun, 24 Nov 2019 01:06:23 +0000 (19:06 -0600)]
drive-by cleanup in region naming

4 years agoHighlight parts of fn in type errors
Esteban Küber [Sun, 24 Nov 2019 00:01:20 +0000 (16:01 -0800)]
Highlight parts of fn in type errors

When a type error arises between two fn items, fn pointers or tuples,
highlight only the differing parts of each.

4 years agoAdd FIXME for using 'parse_delim_comma_seq' when parsing enum variants
Janusz Marcinkiewicz [Sat, 23 Nov 2019 03:21:21 +0000 (04:21 +0100)]
Add FIXME for using 'parse_delim_comma_seq' when parsing enum variants

4 years agoAuto merge of #66680 - Centril:rollup-1ke3svj, r=Centril
bors [Sat, 23 Nov 2019 22:23:20 +0000 (22:23 +0000)]
Auto merge of #66680 - Centril:rollup-1ke3svj, r=Centril

Rollup of 5 pull requests

Successful merges:

 - #61351 (Stabilize cfg(doc))
 - #66539 (Point at type in `let` assignment on type errors)
 - #66655 (rustdoc: Mark `--extern-private` as unstable)
 - #66657 (rustdoc: Don't panic when failing to write .lock file)
 - #66673 (Move def collector from `rustc` to `rustc_resolve`)

Failed merges:

r? @ghost

4 years agoRollup merge of #66673 - petrochenkov:toresolve, r=Centril
Mazdak Farrokhzad [Sat, 23 Nov 2019 22:22:39 +0000 (23:22 +0100)]
Rollup merge of #66673 - petrochenkov:toresolve, r=Centril

Move def collector from `rustc` to `rustc_resolve`

It's used only from `rustc_resolve`, so we can move it there, thus reducing the size of `rustc` (https://github.com/rust-lang/rust/issues/65031).

It's quite possible that we can merge the def collector pass into the "build reduced graph" pass (they are always run together and do similar things), but it's some larger work.

r? @eddyb

4 years agoRollup merge of #66657 - ollie27:rustdoc_flock_panic, r=GuillaumeGomez
Mazdak Farrokhzad [Sat, 23 Nov 2019 22:22:38 +0000 (23:22 +0100)]
Rollup merge of #66657 - ollie27:rustdoc_flock_panic, r=GuillaumeGomez

rustdoc: Don't panic when failing to write .lock file

It can be treated like any other unexpected IO error.

I couldn't think of a good way to add a test for this unfortunately.

r? @GuillaumeGomez

4 years agoRollup merge of #66655 - ollie27:rustdoc_extern-private_unstable, r=GuillaumeGomez
Mazdak Farrokhzad [Sat, 23 Nov 2019 22:22:36 +0000 (23:22 +0100)]
Rollup merge of #66655 - ollie27:rustdoc_extern-private_unstable, r=GuillaumeGomez

rustdoc: Mark `--extern-private` as unstable

It's not even stable in rustc so it shouldn't be stable in rustdoc.

r? @kinnison

4 years agoRollup merge of #66539 - estebank:let-ty, r=Centril
Mazdak Farrokhzad [Sat, 23 Nov 2019 22:22:34 +0000 (23:22 +0100)]
Rollup merge of #66539 - estebank:let-ty, r=Centril

Point at type in `let` assignment on type errors

Fix #61067.

4 years agoRollup merge of #61351 - GuillaumeGomez:stabilize-cfg-rustdoc, r=QuietMisdreavus
Mazdak Farrokhzad [Sat, 23 Nov 2019 22:22:33 +0000 (23:22 +0100)]
Rollup merge of #61351 - GuillaumeGomez:stabilize-cfg-rustdoc, r=QuietMisdreavus

Stabilize cfg(doc)

cc #43781.

4 years agoRemove useless line for error index generation
Guillaume Gomez [Sat, 23 Nov 2019 21:07:52 +0000 (22:07 +0100)]
Remove useless line for error index generation

4 years ago[const prop] Fix "alloc id without corresponding allocation" ICE
Wesley Wiser [Sat, 23 Nov 2019 17:25:03 +0000 (12:25 -0500)]
[const prop] Fix "alloc id without corresponding allocation" ICE

Fixes #66345

4 years agoIntern allocations during constant propagation
Wesley Wiser [Sat, 23 Nov 2019 01:48:18 +0000 (20:48 -0500)]
Intern allocations during constant propagation

4 years agoAuto merge of #66674 - flip1995:clippyup, r=Manishearth
bors [Sat, 23 Nov 2019 18:51:10 +0000 (18:51 +0000)]
Auto merge of #66674 - flip1995:clippyup, r=Manishearth

Update Clippy

r? @Manishearth @oli-obk

4 years agoDerive HashStable for TokenKind.
Camille GILLOT [Sat, 23 Nov 2019 13:47:31 +0000 (14:47 +0100)]
Derive HashStable for TokenKind.

4 years agoAdd test for anchors
Guillaume Gomez [Sat, 23 Nov 2019 17:45:55 +0000 (18:45 +0100)]
Add test for anchors

4 years agoHandle anchor errors
Guillaume Gomez [Sat, 23 Nov 2019 16:26:01 +0000 (17:26 +0100)]
Handle anchor errors

4 years agoUse proc-macro for TokenTree.
Camille GILLOT [Sat, 23 Nov 2019 13:41:56 +0000 (14:41 +0100)]
Use proc-macro for TokenTree.

4 years agoImplement HashStable for Span in libsyntax_pos.
Camille GILLOT [Sat, 23 Nov 2019 13:39:00 +0000 (14:39 +0100)]
Implement HashStable for Span in libsyntax_pos.

4 years agoMove CachingSourceMapView to libsyntax_pos.
Camille GILLOT [Sat, 23 Nov 2019 13:17:37 +0000 (14:17 +0100)]
Move CachingSourceMapView to libsyntax_pos.

4 years agoRename StableHashingContextLike to HashStableContext.
Camille GILLOT [Sat, 23 Nov 2019 12:58:17 +0000 (13:58 +0100)]
Rename StableHashingContextLike to HashStableContext.

4 years agoUpdate Cargo.lock
flip1995 [Sat, 23 Nov 2019 16:27:36 +0000 (17:27 +0100)]
Update Cargo.lock

4 years agoUpdate Clippy
flip1995 [Sat, 23 Nov 2019 16:26:34 +0000 (17:26 +0100)]
Update Clippy

4 years agoAuto merge of #66653 - ivan:lint-name-fix, r=Centril
bors [Sat, 23 Nov 2019 15:38:49 +0000 (15:38 +0000)]
Auto merge of #66653 - ivan:lint-name-fix, r=Centril

docs: fix lint name for `unused_variables`

4 years agoRemove unnecessary clone
Aaron Hill [Sat, 23 Nov 2019 15:23:12 +0000 (10:23 -0500)]
Remove unnecessary clone

4 years agoHandle anchors in intra doc links
Guillaume Gomez [Sat, 23 Nov 2019 15:21:29 +0000 (16:21 +0100)]
Handle anchors in intra doc links

4 years agoMove def collector from `rustc` to `rustc_resolve`
Vadim Petrochenkov [Sat, 23 Nov 2019 15:19:57 +0000 (18:19 +0300)]
Move def collector from `rustc` to `rustc_resolve`

4 years agoonly print LEAK REPORT if there is a leak
Ralf Jung [Sat, 23 Nov 2019 08:24:47 +0000 (09:24 +0100)]
only print LEAK REPORT if there is a leak

4 years agoMiri: print leak report even without tracing
Ralf Jung [Sat, 23 Nov 2019 08:12:17 +0000 (09:12 +0100)]
Miri: print leak report even without tracing

4 years agoAdd riscv64gc-unknown-linux-gnu target
msizanoen1 [Sat, 23 Nov 2019 07:15:27 +0000 (14:15 +0700)]
Add riscv64gc-unknown-linux-gnu target

4 years agoAuto merge of #66597 - MaulingMonkey:pr-natvis-std-collections-hash, r=michaelwoerister
bors [Sat, 23 Nov 2019 07:27:17 +0000 (07:27 +0000)]
Auto merge of #66597 - MaulingMonkey:pr-natvis-std-collections-hash, r=michaelwoerister

debuginfo:  Support for std::collections::Hash* in windows debuggers.

Okay, I finally needed to debug code involving a HashMap!  Added support for HashSet s as well.

r? @michaelwoerister

### Local Testing

Verified these are passing locally:
```cmd
:: cmd.exe
python x.py test --stage 1 --build x86_64-pc-windows-msvc src/test/debuginfo
python x.py test --stage 1 --build i686-pc-windows-msvc src/test/debuginfo
python x.py test --stage 1 src/tools/tidy

:: MinGW MSYS2
./x.py test --stage 1 --build x86_64-pc-windows-gnu src/test/debuginfo
```

### Related Issues

* https://github.com/rust-lang/rust/issues/36503
* https://github.com/rust-lang/rust/issues/40460
* https://github.com/rust-gamedev/wg/issues/20

4 years agomake `./x.py bench` again
Mazdak Farrokhzad [Sat, 23 Nov 2019 06:06:27 +0000 (07:06 +0100)]
make `./x.py bench` again

4 years agoAuto merge of #66656 - Centril:rollup-fivygwz, r=Centril
bors [Sat, 23 Nov 2019 04:24:35 +0000 (04:24 +0000)]
Auto merge of #66656 - Centril:rollup-fivygwz, r=Centril

Rollup of 4 pull requests

Successful merges:

 - #65961 (add fn type_name_of_val)
 - #66574 (Update tidy check for error codes testing)
 - #66576 (made gdb pretty-printing more robust when printing uninitialized vec)
 - #66583 (Clarify Step Documentation)

Failed merges:

r? @ghost

4 years agoCleanup code after review fixes
Janusz Marcinkiewicz [Sat, 23 Nov 2019 03:01:14 +0000 (04:01 +0100)]
Cleanup code after review fixes

4 years agoAdd error reporting on nested keywords inside 'enum' definition
Janusz Marcinkiewicz [Sat, 23 Nov 2019 02:41:12 +0000 (03:41 +0100)]
Add error reporting on nested keywords inside 'enum' definition

4 years agorustdoc: Don't panic when failing to write .lock file
Oliver Middleton [Sat, 23 Nov 2019 02:08:10 +0000 (02:08 +0000)]
rustdoc: Don't panic when failing to write .lock file

It can be treated like any other unexpected IO error.

4 years agoAllow miri allocation interning to work im generic Machines
Wesley Wiser [Sun, 27 Oct 2019 18:58:00 +0000 (14:58 -0400)]
Allow miri allocation interning to work im generic Machines

This is necessary so that the `ComstPropMachine` can intern allocations.

4 years agoRollup merge of #66583 - Phlosioneer:patch-2, r=Dylan-DPC
Mazdak Farrokhzad [Sat, 23 Nov 2019 01:22:49 +0000 (02:22 +0100)]
Rollup merge of #66583 - Phlosioneer:patch-2, r=Dylan-DPC

Clarify Step Documentation

While the redesign is in progress (#62886), clarify the purpose of replace_zero and replace_one.

First, "returning itself" is technically impossible due to the function signature of &mut self -> Self. A clone or copy operation must be used. So this is now explicitly stated in the documentation.

Second, the added docs give some guidance about the actual contract around implementation of replace_zero and replace one. Specifically, the only usage is to create a range with no more steps, by setting start to replace_one and end to replace_zero. So the only property that is actually used is `replace_one > replace_zero`. See https://github.com/rust-lang/rust/issues/42168#issuecomment-489554232

The new documentation does not say that is the *only* contract, and so it should not be considered an api change. It just highlights the most important detail for implementors.

The redesign doesn't seem to be landing any time soon, so this is a stopgap measure to reduce confusion in the meantime.

4 years agoRollup merge of #66576 - pnkfelix:more-robust-gdb-vec-printer, r=alexcrichton
Mazdak Farrokhzad [Sat, 23 Nov 2019 01:22:47 +0000 (02:22 +0100)]
Rollup merge of #66576 - pnkfelix:more-robust-gdb-vec-printer, r=alexcrichton

made gdb pretty-printing more robust when printing uninitialized vec

made gdb pretty-printing more robust when printing uninitialized vec

I based this solution on my reading of:

https://rethinkdb.com/blog/make-debugging-easier-with-custom-pretty-printers#what-is-still-to-be-done

That post claims that there is no clean way to check for garbage pointers, and
so this PR adopts the same solution of tentatively attempting to convert a
dererence to a string, which throws a clean exception on garbage that we can
catch and recover from.

I only made the change to vec and not the other pretty printers because I wanted
to focus my effort on the simplest thing that would resolve issue #64343. In
particular, I *considered* generalizing this fix to work on the other datatypes
in the pretty-printing support library, but I don't want to invest effort in
that until after we resolve our overall debugging support strategy; see also
issues #60826 and #65564.

Fix #64343

4 years agoRollup merge of #66574 - GuillaumeGomez:update-tidy-err-code-check, r=Mark-Simulacrum
Mazdak Farrokhzad [Sat, 23 Nov 2019 01:22:45 +0000 (02:22 +0100)]
Rollup merge of #66574 - GuillaumeGomez:update-tidy-err-code-check, r=Mark-Simulacrum

Update tidy check for error codes testing

Now that all the error codes have been grouped into one file, we moved the long error explanations into markdown files, which means that we need to read those markdown file to also count their code blocks as well.

So 2 "big" things happened here:
* No more need to keep the current error code when reading the `error_codes.rs` file since it's been put into the equivalent markdown file.
* Need to instead read the markdown file (but it's simpler since I can just look for code blocks directly).

4 years agoRollup merge of #65961 - lcnr:typename_of, r=Dylan-DPC
Mazdak Farrokhzad [Sat, 23 Nov 2019 01:22:44 +0000 (02:22 +0100)]
Rollup merge of #65961 - lcnr:typename_of, r=Dylan-DPC

add fn type_name_of_val

This function is often useful during testing and mirrors `align_of_val` and `size_of_val`.

# Example

Showing the default type of integers.

```rust
let x = 7;
println!("per default, integers have the type: {}", std::any::type_name_of_val(&x));
```

To my knowledge this can currently not be done without defining a function similar to `type_name_of_val`.

4 years agoAuto merge of #66507 - ecstatic-morse:const-if-match, r=oli-obk
bors [Sat, 23 Nov 2019 01:13:41 +0000 (01:13 +0000)]
Auto merge of #66507 - ecstatic-morse:const-if-match, r=oli-obk

Enable `if` and `match` in constants behind a feature flag

This PR is an initial implementation of #49146. It introduces a `const_if_match` feature flag and does the following if it is enabled:
- Allows `Downcast` projections, `SwitchInt` terminators and `FakeRead`s for matched places through the MIR const-checker.
- Allows `if` and `match` expressions through the HIR const-checker.
- Stops converting `&&` to `&` and `||` to `|` in `const` and `static` items.

As a result, the following operations are now allowed in a const context behind the feature flag:
- `if` and `match`
- short circuiting logic operators (`&&` and `||`)
- the `assert` and `debug_assert` macros (if the `const_panic` feature flag is also enabled)

However, the following operations remain forbidden:
- `while`, `loop` and `for` (see #52000)
- the `?` operator (calls `From::from` on its error variant)
- the `assert_eq` and `assert_ne` macros, along with their `debug` variants (calls `fmt::Debug`)

This PR is possible now that we use dataflow for const qualification (see #64470 and #66385).

r? @oli-obk
cc @rust-lang/wg-const-eval @eddyb

4 years agodocs: fix lint name for `unused_variables`
Ivan Kozik [Sat, 23 Nov 2019 00:15:55 +0000 (00:15 +0000)]
docs: fix lint name for `unused_variables`

4 years agorustdoc: Mark `--extern-private` as unstable
Oliver Middleton [Sat, 23 Nov 2019 00:15:39 +0000 (00:15 +0000)]
rustdoc: Mark `--extern-private` as unstable

It's not even stable in rustc so it shouldn't be stable in rustdoc.

4 years agoAuto merge of #66640 - Centril:rollup-862009l, r=Centril
bors [Fri, 22 Nov 2019 22:03:11 +0000 (22:03 +0000)]
Auto merge of #66640 - Centril:rollup-862009l, r=Centril

Rollup of 8 pull requests

Successful merges:

 - #66183 (*Syntactically* permit visibilities on trait items & enum variants)
 - #66566 (Document pitfall with `impl PartialEq<B> for A`)
 - #66575 (Remove pretty printing of specific nodes in AST)
 - #66587 (Handle statics in MIR as const pointers)
 - #66619 (follow the convention in this file to use third-person singular verbs)
 - #66633 (Error code's long explanation cleanup)
 - #66637 (fix reoccuring typo: dereferencable -> dereferenceable)
 - #66639 (resolve: more declarative `fresh_binding`)

Failed merges:

r? @ghost

4 years agoFix rebase fallout.
Camille GILLOT [Fri, 22 Nov 2019 19:17:22 +0000 (20:17 +0100)]
Fix rebase fallout.

4 years agoRetire impl_stable_hash_for.
Camille GILLOT [Sun, 10 Nov 2019 18:32:04 +0000 (19:32 +0100)]
Retire impl_stable_hash_for.

4 years agoRetire impl_stable_hash_for_spanned.
Camille GILLOT [Sun, 10 Nov 2019 17:50:11 +0000 (18:50 +0100)]
Retire impl_stable_hash_for_spanned.

4 years agoDerives for ast.
Camille GILLOT [Sun, 10 Nov 2019 17:32:43 +0000 (18:32 +0100)]
Derives for ast.

4 years agoInvert implementations for TokenKind.
Camille GILLOT [Sun, 10 Nov 2019 17:24:37 +0000 (18:24 +0100)]
Invert implementations for TokenKind.

Also export a bunch of Token-related impls.

4 years agoExport HashStable for DelimSpan, Lit and Path.
Camille GILLOT [Sun, 10 Nov 2019 17:10:15 +0000 (18:10 +0100)]
Export HashStable for DelimSpan, Lit and Path.

4 years agoDerive HashStable_Generic for Ident.
Camille GILLOT [Sun, 10 Nov 2019 16:46:49 +0000 (17:46 +0100)]
Derive HashStable_Generic for Ident.