103278 Commits

Author SHA1 Message Date
Guillaume Gomez
454d13badf Handle anchor errors 2019-11-23 18:46:07 +01:00
Camille GILLOT
4d1674f620 Use proc-macro for TokenTree. 2019-11-23 18:22:24 +01:00
Camille GILLOT
7e411e7f55 Implement HashStable for Span in libsyntax_pos. 2019-11-23 18:09:36 +01:00
Camille GILLOT
ea0c354758 Move CachingSourceMapView to libsyntax_pos. 2019-11-23 17:57:17 +01:00
Camille GILLOT
ce301075c0 Rename StableHashingContextLike to HashStableContext. 2019-11-23 17:57:00 +01:00
flip1995
450880fd89
Update Cargo.lock 2019-11-23 17:27:36 +01:00
flip1995
798d579f25
Update Clippy 2019-11-23 17:26:34 +01:00
Paul Dicker
3b1c742e23 Add as_mut_ptr method to atomic types. 2019-11-23 17:24:14 +01:00
bors
529829a037 Auto merge of #66653 - ivan:lint-name-fix, r=Centril
docs: fix lint name for `unused_variables`
2019-11-23 15:38:49 +00:00
Aaron Hill
2ba982d0e5
Remove unnecessary clone 2019-11-23 10:23:12 -05:00
Guillaume Gomez
09293bec92 Handle anchors in intra doc links 2019-11-23 16:21:29 +01:00
Vadim Petrochenkov
bbbdbb0e44 Move def collector from rustc to rustc_resolve 2019-11-23 18:19:57 +03:00
Ralf Jung
9233a54176 only print LEAK REPORT if there is a leak 2019-11-23 09:24:47 +01:00
Ralf Jung
a8430a4ee5 Miri: print leak report even without tracing 2019-11-23 09:12:24 +01:00
Ralf Jung
a2299799e6 enable more panic-catching tests in Miri 2019-11-23 08:53:53 +01:00
msizanoen1
75dac389fb Add riscv64gc-unknown-linux-gnu target 2019-11-23 14:47:53 +07:00
bors
9420ff4c0e 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
2019-11-23 07:27:17 +00:00
Mazdak Farrokhzad
59257e6e88 make ./x.py bench again 2019-11-23 07:06:27 +01:00
bors
d9025395c8 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
2019-11-23 04:24:35 +00:00
Janusz Marcinkiewicz
bbd0d9bea0 Cleanup code after review fixes 2019-11-23 04:01:14 +01:00
Janusz Marcinkiewicz
0e660d8a79 Add error reporting on nested keywords inside 'enum' definition 2019-11-23 03:41:12 +01:00
Oliver Middleton
05ef20f922 rustdoc: Don't panic when failing to write .lock file
It can be treated like any other unexpected IO error.
2019-11-23 02:08:10 +00:00
Wesley Wiser
8c406dc29c Allow miri allocation interning to work im generic Machines
This is necessary so that the `ComstPropMachine` can intern allocations.
2019-11-22 20:42:25 -05:00
Mazdak Farrokhzad
8024e0df4b
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.
2019-11-23 02:22:49 +01:00
Mazdak Farrokhzad
e94f066b02
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
2019-11-23 02:22:47 +01:00
Mazdak Farrokhzad
8256e735cf
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).
2019-11-23 02:22:45 +01:00
Mazdak Farrokhzad
0ae4a19cf3
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`.
2019-11-23 02:22:44 +01:00
bors
6d523ee501 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
2019-11-23 01:13:41 +00:00
Ivan Kozik
aa40c48c36 docs: fix lint name for unused_variables 2019-11-23 00:15:55 +00:00
Oliver Middleton
4fcb3384ad rustdoc: Mark --extern-private as unstable
It's not even stable in rustc so it shouldn't be stable in rustdoc.
2019-11-23 00:15:39 +00:00
Ralf Jung
8af2f22985 enable panic-catching tests in Miri 2019-11-22 23:35:56 +01:00
Ralf Jung
3277209af5 use catch_panic instead of thread::spawn to catch panics 2019-11-22 23:21:20 +01:00
Ralf Jung
1e91e4e20a enable panic-catching tests in Miri 2019-11-22 23:11:56 +01:00
bors
a449535bbc 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
2019-11-22 22:03:11 +00:00
Ralf Jung
be079117f0 remove the 'dereferenceable' attribute from Box 2019-11-22 22:04:22 +01:00
Camille GILLOT
9efd3205b5 Fix rebase fallout. 2019-11-22 20:17:22 +01:00
Camille GILLOT
edc5232a4d Retire impl_stable_hash_for. 2019-11-22 20:01:48 +01:00
Camille GILLOT
8c86a79947 Retire impl_stable_hash_for_spanned. 2019-11-22 20:01:47 +01:00
Camille GILLOT
e85c195174 Derives for ast. 2019-11-22 20:01:46 +01:00
Camille GILLOT
31298b41d6 Invert implementations for TokenKind.
Also export a bunch of Token-related impls.
2019-11-22 20:01:45 +01:00
Camille GILLOT
0073d3be97 Export HashStable for DelimSpan, Lit and Path. 2019-11-22 20:01:43 +01:00
Camille GILLOT
3c5ddfdd57 Derive HashStable_Generic for Ident. 2019-11-22 20:01:34 +01:00
Dylan MacKenzie
f9ed2199ff Create promoted MIR fragments in const and statics
The previous strategy of removing `Drop` and `StorageDead` for promoted
locals only worked for rvalue lifetime extension. We now use the same
implementation for promotion across all kinds of items.
2019-11-22 11:01:31 -08:00
Dylan MacKenzie
fcf4bee7d3 Fix tests for RFC 2203 in a const
The previous test was incorrect. `const fn`s are *always* promotable
when inside a `const`, so it should pass. The error was caused by a bug
in `promote_consts`. I've added a failing test outside a `const`
alongside the existing one, which is now run-pass.
2019-11-22 11:01:31 -08:00
Camille GILLOT
bf7c9ba7ce Derive HashStable_Generic for ExpnData. 2019-11-22 19:58:36 +01:00
Mazdak Farrokhzad
56512b9d42
Rollup merge of #66639 - Centril:simplify-fresh-binding, r=petrochenkov
resolve: more declarative `fresh_binding`

Following up on https://github.com/rust-lang/rust/pull/64111, this PR redefines `fresh_binding` wrt. `already_bound_and` and `already_bound_or` in a more declarative and simplified fashion.

cc #54883

r? @petrochenkov
2019-11-22 19:57:55 +01:00
Mazdak Farrokhzad
fd3bd29c18
Rollup merge of #66637 - RalfJung:typo, r=Centril
fix reoccuring typo: dereferencable -> dereferenceable
2019-11-22 19:57:54 +01:00
Mazdak Farrokhzad
8be9e90454
Rollup merge of #66633 - GuillaumeGomez:err-codes-cleanup, r=Dylan-DPC
Error code's long explanation cleanup

Continuing to clean up the error code's long explanation.

r? @Dylan-DPC
2019-11-22 19:57:52 +01:00
Mazdak Farrokhzad
a699945ead
Rollup merge of #66619 - guanqun:use-third-person-singular-verb, r=Centril
follow the convention in this file to use third-person singular verbs
2019-11-22 19:57:51 +01:00
Mazdak Farrokhzad
3031720d8f
Rollup merge of #66587 - matthewjasper:handle-static-as-const, r=oli-obk
Handle statics in MIR as const pointers

This is the first PR towards the goal of removing `PlaceBase::Static`. In this PR:

* Statics are lowered to dereferencing a const pointer.
* The temporaries holding such pointers are tracked in MIR, for the most part this is only used for diagnostics. There are two exceptions:
    * The borrow checker has some checks for thread-locals that directly use this data.
    * Const checking will suppress "cannot dereference raw pointer" diagnostics for pointers to `static mut`/`extern static`. This is to maintain the current behaviour (12 tests fail otherwise).

The following are left to future PRs (I think that @spastorino will be working on the first 3):

* Applying the same treatments to promoted statics.
* Removing `PlaceBase::Static`.
* Replacing `PlaceBase` with `Local`.
* Moving the ever growing collection of metadata that we have for diagnostics in MIR passes somewhere more appropriate.

r? @oli-obk
2019-11-22 19:57:49 +01:00