Commit graph

9348 commits

Author SHA1 Message Date
jumbatm
0399d141b6 Add comment explaining the reversed operands tests
Also, fix the goofy reversed names with something clearer.
2020-04-03 08:58:00 +10:00
jumbatm
de02a9ed67 Move #69020 test to ui/associated-const + rebless. 2020-04-02 23:21:13 +10:00
jumbatm
0d73bb926c Extend #69020 test to include reversed order.
Make sure we check the case where the generic operand comes first, in
case any future changes make this ordering matter.
2020-04-02 22:45:40 +10:00
bors
127a11a344 Auto merge of #70362 - TimDiekmann:alloc-overhaul, r=Amanieu
Overhaul of the `AllocRef` trait to match allocator-wg's latest consens; Take 2

GitHub won't let me reopen #69889 so I make a new PR.

In addition to #69889 this fixes the unsoundness of `RawVec::into_box` when using allocators supporting overallocating. Also it uses `MemoryBlock` in `AllocRef` to unify `_in_place` methods by passing `&mut MemoryBlock`. Additionally, `RawVec` now checks for `size_of::<T>()` again and ignore every ZST. The internal capacity of `RawVec` isn't used by ZSTs anymore, as `into_box` now requires a length to be specified.

r? @Amanieu

fixes rust-lang/wg-allocators#38
fixes rust-lang/wg-allocators#41
fixes rust-lang/wg-allocators#44
fixes rust-lang/wg-allocators#51
2020-04-02 06:08:35 +00:00
Dylan DPC
b919df21a9
Rollup merge of #70590 - RalfJung:miri-backtrace, r=oli-obk
Miri: make backtrace function names and spans match up

Currently, Miri backtraces are a bit confusing:
```
error: Undefined Behavior: entering unreachable code
  --> tests/compile-fail/never_transmute_void.rs:10:11
   |
10 |     match v {} //~ ERROR  entering unreachable code
   |           ^ entering unreachable code
   |
   = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
   = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
note: inside call to `f` at tests/compile-fail/never_transmute_void.rs:17:5
  --> tests/compile-fail/never_transmute_void.rs:17:5
   |
17 |     f(v); //~ inside call to `f`
   |     ^^^^
   = note: inside call to `main` at /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/src/libstd/rt.rs:67:34
   = note: inside call to closure at /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/src/libstd/rt.rs:52:73
   = note: inside call to closure at /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/src/libstd/sys_common/backtrace.rs:130:5
```
When reading this like a normal backtrace, one would expect that e.g. the backrace involves the "main" function at "libstd/rt.rs:67:34". But that is not actually where we are in the main function, that is *where the main function is called*.

This is not how backtraces are usually rendered (including e.g. with `RUST_BACKTRACE=1`). Usually we print next to each function name where inside that function the frame is currently executing, not where the *parent* frame is executing. With this PR and the Miri side at https://github.com/rust-lang/miri/pull/1283, the backtrace now looks as follows:
```
error: Undefined Behavior: entering unreachable code
  --> tests/compile-fail/never_transmute_void.rs:10:11
   |
10 |     match v {} //~ ERROR entering unreachable code
   |           ^ entering unreachable code
   |
   = help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
   = help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
   = note: inside `f` at tests/compile-fail/never_transmute_void.rs:10:11
note: inside `main` at tests/compile-fail/never_transmute_void.rs:17:5
  --> tests/compile-fail/never_transmute_void.rs:17:5
   |
17 |     f(v); //~ inside `main`
   |     ^^^^
   = note: inside closure at /home/r/src/rust/rustc/src/libstd/rt.rs:67:34
   = note: inside closure at /home/r/src/rust/rustc/src/libstd/rt.rs:52:73
   = note: inside `std::sys_common::backtrace::__rust_begin_short_backtrace::<[closure@DefId(1:6034 ~ std[87db]::rt[0]::lang_start_internal[0]::{{closure}}[0]::{{closure}}[0]) 0:&dyn std::ops::Fn() -> i32 + std::marker::Sync + std::panic::RefUnwindSafe], i32>` at /home/r/src/rust/rustc/src/libstd/sys_common/backtrace.rs:130:5
```
Now function name and printed line numbers match up in the notes.

This code is partially shared with const-eval, so the change also affects const-eval: instead of printing what is being called at some span, we print which function/constant this span is inside.

With this, we can also remove the `span` field from Miri's stack frames (which used to track the *caller span* of that frame, quite confusing), and then get of a whole lot of `span` arguments that ultimately just served to fill that field (and as a fallback for `caller_location`, which however was never actually used).

r? @oli-obk
2020-04-01 22:25:16 +02:00
Dylan DPC
0e0d84c13c
Rollup merge of #70535 - jonas-schievink:graph-refactor, r=nikomatsakis
Track the finalizing node in the specialization graph

Fixes https://github.com/rust-lang/rust/issues/70419
Fixes https://github.com/rust-lang/rust/issues/70442

r? @eddyb
2020-04-01 22:25:15 +02:00
Mazdak Farrokhzad
c739465b1b
Rollup merge of #70522 - rcoh:60762-raw-string-errors, r=petrochenkov
Improve error messages for raw strings (#60762)

This diff improves error messages around raw strings in a few ways:
- Catch extra trailing `#` in the parser. This can't be handled in the lexer because we could be in a macro that actually expects another # (see test)
- Refactor & unify error handling in the lexer between ByteStrings and RawByteStrings
- Detect potentially intended terminators (longest sequence of "#*" is suggested)

Fixes #60762
cc @estebank who reviewed the original (abandoned) PR for the same ticket.
r? @Centril
2020-04-01 14:32:14 +02:00
Dylan DPC
81f19ec909
Rollup merge of #70556 - Centril:fix-70552, r=estebank
parse_and_disallow_postfix_after_cast: account for `ExprKind::Err`.

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

r? @estebank
cc @daboross
2020-04-01 00:27:22 +02:00
Dylan DPC
8993358e77
Rollup merge of #70081 - lcnr:issue68387, r=varkor
add `unused_braces` lint

Add the lint `unused_braces` which is warn by default.

`unused_parens` is also extended and now checks anon consts.

closes #68387

r? @varkor
2020-04-01 00:27:20 +02:00
Dylan DPC
b9546075ac
Rollup merge of #70600 - danielframpton:aarch64-windows-tests, r=alexcrichton
Ensure there are versions of test code for aarch64 windows

Remove the `cfg` flags that were preventing some tests from running on `aarch64-pc-windows-msvc`.

All the existing `target_os = windows` targets had the same `align()` and `size()` values, so this change just removes the `target_arch` flags.

r? @alexcrichton
2020-03-31 19:29:31 +02:00
Bastian Kauschke
bab327c725 update unused_braces wording 2020-03-31 19:01:49 +02:00
Bastian Kauschke
bcf35b1d80 add tests for unused_braces 2020-03-31 19:01:49 +02:00
Bastian Kauschke
698b20eeda update tests 2020-03-31 19:01:49 +02:00
Ralf Jung
96deb950ac const backtrace: do not skip first frame 2020-03-31 17:58:14 +02:00
Mazdak Farrokhzad
3ef70fe156
Rollup merge of #70562 - lcnr:const-arr_len, r=Centril
infer array len from pattern

closes #70529

This still errors in the following case

```rust
#![feature(const_generics)]
fn arr<const N: usize>() -> [u8; N] {
    todo!()
}

fn main() {
    match arr() {
        [5, ..] => (),
        //~^ ERROR cannot pattern-match on an array without a fixed length
        [_, _] => (),
    }
}
```
Considering that this should be rare and is harder to implement I would merge this PR without *fixing* the above.
2020-03-31 15:59:46 +02:00
Mazdak Farrokhzad
65b85a571e
Rollup merge of #70555 - Centril:fix-70549, r=petrochenkov
resolve, `try_resolve_as_non_binding`: use `delay_span_bug` due to parser recovery

Fixes #70549

r? @petrochenkov
2020-03-31 15:59:43 +02:00
Mazdak Farrokhzad
cbe3266c65
Rollup merge of #70548 - Ersikan:master, r=GuillaumeGomez
Add long error code for error E0226

Added a long description message for error E0226, which previously did not exist.
As requested in issue #61137

r? @GuillaumeGomez
2020-03-31 15:59:41 +02:00
Ralf Jung
39e189d3bd bless tests 2020-03-30 20:26:48 +02:00
Jonas Schievink
103771ce57 Add a test 2020-03-30 19:44:21 +02:00
Bastian Kauschke
a3df1db8ee update tests, improve variable names 2020-03-30 19:34:16 +02:00
Bastian Kauschke
40c5eefdcd add test for array len inference 2020-03-30 19:13:47 +02:00
Bastian Kauschke
50ab77384e infer arr len from pattern 2020-03-30 18:13:14 +02:00
Dylan DPC
b99db6ee10
Rollup merge of #70546 - lqd:polonius_update, r=nikomatsakis
Polonius: update to 0.12.1, fix more move errors false positives, update test expectations

This PR:
- updates `polonius-engine` to version 0.12.1 to fix some move errors false positives
- fixes a fact generation mistake creating the other move errors false positives
- updates the test expectations for the polonius compare-mode so that all (minus the 2 OOMs) ui tests pass again (matching the [analysis doc](https://hackmd.io/CjYB0fs4Q9CweyeTdKWyEg?view) starting at case 34)

In my opinion, this is safe to rollup.

r? @nikomatsakis
2020-03-30 16:24:49 +02:00
Mazdak Farrokhzad
9f86d28537 try_resolve_as_non_binding: span_bug -> delay_span_bug 2020-03-30 13:23:26 +02:00
Mazdak Farrokhzad
96d7353678 parse_and_disallow_postfix_after_cast: account for ExprKind::Err. 2020-03-30 09:55:57 +02:00
Julien Philippon
8f7eb6229c Add long error code for error E0226 2020-03-30 02:51:25 +02:00
Remy Rakic
5af11d261d bless output of ui test nll/user-annotations/closure-substs.rs
Trivial diagnostics grammar change
2020-03-30 01:30:26 +02:00
Remy Rakic
82424634a3 bless output of ui test impl-trait/multiple-lifetimes/error-handling.rs
Some impl Trait fixes lead to locating more accurately the cause of
a universal region error with a user annotation
2020-03-30 01:28:27 +02:00
Remy Rakic
fcd12bd2f4 bless output of ui test closures/closure-expected-type/expect-region-supply-region.rs
trivial diagnostics grammar change
2020-03-30 01:24:52 +02:00
Remy Rakic
c73d5db21f bless output of ui test nll/outlives-suggestion-simple.rs
trivial diagnostics wording change
2020-03-30 01:22:59 +02:00
Remy Rakic
2a7644746b bless output of ui test hrtb/hrtb-perfect-forwarding.rs
trivial formatting changes
2020-03-30 01:18:27 +02:00
bors
4911572b2d Auto merge of #70009 - estebank:sugg-bound, r=Centril
Tweak `suggest_constraining_type_param`

Some of the bound restriction structured suggestions were incorrect while others had subpar output.

The only issue left is a suggestion for an already present bound when dealing with `const`s that should be handled independently.

Fix #69983.
2020-03-29 22:50:59 +00:00
Esteban Küber
2c71894657 Tweak suggest_constraining_type_param
Some of the bound restriction structured suggestions were incorrect
while others had subpar output.
2020-03-29 13:13:17 -07:00
Dylan DPC
1bf4873aac
Rollup merge of #70540 - jonas-schievink:link-attr-template, r=varkor
#[link]: mention wasm_import_module instead of cfg

`#[link(cfg)]` is perma-unstable and is not documented anywhere else. It makes more sense to mention `wasm_import_module` here since it's stable.

This makes it harder to hit https://github.com/rust-lang/rust/issues/70538 (if it weren't for this text, I wouldn't even know this feature existed).
2020-03-29 21:23:53 +02:00
Dodo
61d419314f add a build-pass test for issue 62220 2020-03-29 18:27:54 +02:00
Jonas Schievink
042f4941e7 #[link]: mention wasm_import_module instead of cfg 2020-03-29 17:40:04 +02:00
Russell Cohen
82b2989ae0 More raw string tests 2020-03-29 11:34:15 -04:00
Russell Cohen
c15f86b4b3 Cleanup error messages, improve docstrings 2020-03-29 11:12:48 -04:00
Mazdak Farrokhzad
c51fcb5f38
Rollup merge of #68692 - jyn514:vec-from-array, r=LukasKalbertodt
impl From<[T; N]> for Vec<T>

Closes https://github.com/rust-lang/rust/issues/67963
2020-03-29 11:50:10 +02:00
bors
8045865873 Auto merge of #70370 - petrochenkov:nosmatch, r=Centril
Remove attribute `#[structural_match]` and any references to it

A small remaining part of https://github.com/rust-lang/rust/issues/63438.
2020-03-29 06:33:42 +00:00
Russell Cohen
629e97a5a0 Improve error messages for raw strings (#60762)
This diff improves error messages around raw strings in a few ways:
- Catch extra trailing `#` in the parser. This can't be handled in the lexer because we could be in a macro that actually expects another # (see test)
- Refactor & unify error handling in the lexer between ByteStrings and RawByteStrings
- Detect potentially intended terminators (longest sequence of "#*" is suggested)
2020-03-29 00:43:43 -04:00
Tim Diekmann
bf6a46db31 Make fields in MemoryBlock public 2020-03-28 20:22:07 +01:00
Dylan DPC
1f13089bef
Rollup merge of #70418 - PankajChaudhary5:master, r=Dylan-DPC
Add long error explanation for E0703

Add long explanation for the E0703 error code
Part of #61137

r? @GuillaumeGomez
2020-03-28 15:21:57 +01:00
bors
b9d5ee5676 Auto merge of #70261 - Centril:angle-args-partition, r=varkor
Move arg/constraint partition check to validation & improve recovery

- In the first commit, we move the check rejecting e.g., `<'a, Item = u8, String>` from the parser into AST validation.
- We then use this to improve the code for parsing generic arguments.
- And we add recovery for e.g., `<Item = >` (missing), `<Item = 42>` (constant), and `<Item = 'a>` (lifetime).

This is also preparatory work for supporting https://github.com/rust-lang/rust/issues/70256.

r? @varkor
2020-03-28 11:13:09 +00:00
bors
b76238a3ee Auto merge of #70095 - jsgf:link-native, r=nagisa
Implement -Zlink-native-libraries

This implements a flag `-Zlink-native-libraries=yes/no`. If set to true/yes, or unspecified, then
native libraries referenced via `#[link]` attributes will be put on the linker line (ie, unchanged
behaviour).

If `-Zlink-native-libraries=no` is specified then rustc will not add the native libraries to the link
line. The assumption is that the outer build system driving the build already knows about the native
libraries and will specify them to the linker directly (for example via `-Clink-arg=`).

Addresses issue #70093
2020-03-28 08:16:47 +00:00
Russell Cohen
840a5769b0 Move raw string tests into the raw directory 2020-03-27 22:02:18 -04:00
Mazdak Farrokhzad
23d3fa266c
Rollup merge of #70457 - Centril:non-exhaustive-scrutinee-type, r=estebank
non-exhastive diagnostic: add note re. scrutinee type

This fixes https://github.com/rust-lang/rust/issues/67259 by adding a note:
```
    = note: the matched value is of type &[i32]
```
to non-exhaustive pattern matching errors.

r? @varkor @estebank
2020-03-27 22:39:39 +01:00
Mazdak Farrokhzad
cfe1e330b5
Rollup merge of #70434 - Centril:fix-34421, r=estebank
suggest `;` on expr `mac!()` which is good as stmt `mac!()`

Fixes https://github.com/rust-lang/rust/issues/34421 by implementing @jseyfried's suggestion in https://github.com/rust-lang/rust/issues/34421#issuecomment-301578683.

r? @petrochenkov
2020-03-27 22:39:38 +01:00
Mazdak Farrokhzad
42c5cfdfda add the label back but make it shorter 2020-03-27 21:52:09 +01:00
Jeremy Fitzhardinge
53c4e0c19a Implement -Zlink-native-libraries
This implements a flag `-Zlink-native-libraries=yes/no`. If set to true/yes, or unspecified, then
native libraries referenced via `#[link]` attributes will be put on the linker line (ie, unchanged
behaviour).

If `-Zlink-native-libraries=no` is specified then rustc will not add the native libraries to the link
line. The assumption is that the outer build system driving the build already knows about the native
libraries and will specify them to the linker directly (for example via `-Clink-arg=`).

Addresses issue #70093
2020-03-27 11:57:05 -07:00