Commit Graph

106079 Commits

Author SHA1 Message Date
Pedro de Brito
074cfcbf2d fix: typo in vec.rs 2020-01-28 07:59:07 +01:00
Billy Rieger
5654305a7b Add BTreeMap::remove_entry
Mainly for API parity with HashMap.

- Add BTreeMap::remove_entry
- Rewrite BTreeMap::remove to use remove_entry
- Use btreemap_remove_entry feature in doc comment
2020-01-28 00:43:18 -05:00
bors
82018665a5 Auto merge of #68234 - CAD97:slice-from-raw-parts, r=KodrAus
Stabilize ptr::slice_from_raw_parts[_mut]

Closes #36925, the tracking issue.
Initial impl: #60667

r? @rust-lang/libs

In addition to stabilizing, I've adjusted the example of `ptr::slice_from_raw_parts` to use `slice_from_raw_parts` instead of `slice_from_raw_parts_mut`, which was unnecessary for the example as written.
2020-01-28 05:31:34 +00:00
bors
67fae2241b Auto merge of #68587 - JohnTitor:rollup-fz45xwc, r=JohnTitor
Rollup of 11 pull requests

Successful merges:

 - #68200 (Stabilize the debug_map_key_value feature)
 - #68383 (Clean up E0205 explanation)
 - #68412 (Clean up E0207 explanation)
 - #68454 (clean up E0214 explanation)
 - #68482 (clean up error codes explanation)
 - #68563 (Don't call `tcx.fn_sig` on closures)
 - #68570 (Bump LLVM submodule to fix LLVM assertion failure in MSP430 interrupt generation.)
 - #68571 (check_match: extract common logic)
 - #68573 (Clean up E0262 explanation)
 - #68575 (Disable the testcase for Vxworks.)
 - #68581 (Add support for icebreakers-cleanup-crew commands)

Failed merges:

r? @ghost
2020-01-28 02:17:10 +00:00
Yuki Okushi
aac5788a61
Rollup merge of #68581 - spastorino:support-ice-breaker-cleanup-crew, r=Dylan-DPC
Add support for icebreakers-cleanup-crew commands

r? @nikomatsakis
2020-01-28 10:48:23 +09:00
Yuki Okushi
41110edeeb
Rollup merge of #68575 - Wind-River:master_2020, r=alexcrichton
Disable the testcase for Vxworks.

r? @alexcrichton
2020-01-28 10:48:21 +09:00
Yuki Okushi
ee79cf28db
Rollup merge of #68573 - GuillaumeGomez:clean-up-e0262, r=Dylan-DPC
Clean up E0262 explanation

r? @Dylan-DPC
2020-01-28 10:48:20 +09:00
Yuki Okushi
8bc0e48540
Rollup merge of #68571 - Centril:check_in_cx, r=oli-obk
check_match: extract common logic

This is part of work on `hir::ExprKind::Let` which I thought made sense on its own (though makes even more sense with `::Let`).

r? @oli-obk
2020-01-28 10:48:19 +09:00
Yuki Okushi
1e47ca518f
Rollup merge of #68570 - cr1901:msp430-fix-1-2020, r=alexcrichton
Bump LLVM submodule to fix LLVM assertion failure in MSP430 interrupt generation.

This PR brings in changes introduced by [this cherry-pick](https://github.com/rust-lang/llvm-project/pull/37) to the Rust repository.

Nightlies downloaded from `rustup` do not appear to have llvm assertions enabled; the assertion failure [sometimes](https://github.com/YuhanLiin/msp430fr2355-quickstart/issues/3) causes link errors that shouldn't occur. I couldn't find any indication of other bugs; however, it should still be fixed.
2020-01-28 10:48:17 +09:00
Yuki Okushi
c38e97cc61
Rollup merge of #68563 - Aaron1011:fix/fn-sig-closure, r=varkor
Don't call `tcx.fn_sig` on closures

Fixes #68542
2020-01-28 10:48:16 +09:00
Yuki Okushi
8ed586581d
Rollup merge of #68482 - GuillaumeGomez:clean-up-err-codes, r=Dylan-DPC
clean up error codes explanation

r? @Dylan-DPC
2020-01-28 10:48:14 +09:00
Yuki Okushi
39407c9ab7
Rollup merge of #68454 - GuillaumeGomez:clean-up-e0214, r=Dylan-DPC
clean up E0214 explanation

r? @Dylan-DPC
2020-01-28 10:48:12 +09:00
Yuki Okushi
dc33cd3500
Rollup merge of #68412 - GuillaumeGomez:clean-up-e0207, r=Dylan-DPC
Clean up E0207 explanation

r? @Dylan-DPC
2020-01-28 10:48:10 +09:00
Yuki Okushi
2bfa058074
Rollup merge of #68383 - GuillaumeGomez:clean-up-e0205, r=Dylan-DPC
Clean up E0205 explanation

r? @Dylan-DPC
2020-01-28 10:48:05 +09:00
Yuki Okushi
5c42ffe150
Rollup merge of #68200 - KodrAus:stabilize/debug_map_key_value, r=alexcrichton
Stabilize the debug_map_key_value feature

RFC: https://github.com/rust-lang/rfcs/pull/2696
Tracking issue: #62482

Stabilizes the `debug_map_key_value` feature, which covers:

```rust
impl<'a, 'b> DebugMap<'a, 'b> {
    pub fn key(&mut self, key: &dyn fmt::Debug) -> &mut DebugMap<'a, 'b> {}
    pub fn value(&mut self, value: &dyn fmt::Debug) -> &mut DebugMap<'a, 'b> {}
}
```

These methods are small and self-contained, and are used as the basis for the existing `DebugMap::entry` method, so have been used in the wild for the last 6 months or so.
2020-01-28 10:48:04 +09:00
Mazdak Farrokhzad
dc17f38e04 check_unsafety: more code reuse 2020-01-28 02:30:47 +01:00
Ashley Mannix
2c07a621ef stabilize the debug_map_key_value feature 2020-01-28 11:15:22 +10:00
Mazdak Farrokhzad
979f5b4b1c lintify conflicting_repr_hints 2020-01-28 01:24:59 +01:00
bors
0859451592 Auto merge of #68580 - Mark-Simulacrum:rollup-r80xhus, r=Mark-Simulacrum
Rollup of 3 pull requests

Successful merges:

 - #68459 (don't clone types that are copy, round two.)
 - #68576 (update miri)
 - #68579 (Update cargo)

Failed merges:

r? @ghost
2020-01-27 22:59:38 +00:00
Tim Diekmann
7ca25db816
Rename Alloc to AllocRef 2020-01-27 21:39:51 +01:00
Santiago Pastorino
3124603f09
Add support for icebreakers-cleanup-crew commands 2020-01-27 15:58:27 -03:00
Mark Rousskov
b0f5f670b3
Rollup merge of #68579 - ehuss:update-cargo, r=Mark-Simulacrum
Update cargo

2 commits in b68b0978ab8012f871c80736fb910d14b89c4498..9d32b7b01409024b165545c568b1525d86e2b7cb
2020-01-24 18:26:23 +0000 to 2020-01-26 18:27:29 +0000
- Polish code to clarify meaning (rust-lang/cargo#7836)
- Store maximum queue length (rust-lang/cargo#7829)
2020-01-27 13:42:03 -05:00
Mark Rousskov
69362b9c9e
Rollup merge of #68576 - jonhoo:bump-miri, r=oli-obk
update miri

Bump miri for rust-lang/miri#1150

r? @oli-obk
2020-01-27 13:42:02 -05:00
Mark Rousskov
aa6e58b352
Rollup merge of #68459 - matthiaskrgr:clone_on_copy2, r=eddyb
don't clone types that are copy, round two.

Apparently fixing some of these issues makes clippy find even more so I did a couple of rounds now.

r? @eddyb
2020-01-27 13:42:00 -05:00
Eric Huss
e1a837c08f Update cargo 2020-01-27 10:30:44 -08:00
Jon Gjengset
98724074d7
Bump miri for rust-lang/miri#1150 2020-01-27 12:47:51 -05:00
Umesh Kalappa
2a38eb3a86 Disable the testcase for Vxworks. 2020-01-27 09:37:57 -08:00
Guillaume Gomez
4b0fe2ac63 Clean up E0262 explanation 2020-01-27 17:43:02 +01:00
Felix S. Klock II
6f4b904aa9 Collisions in the dep-graph due to path-reuse are rare but can occur.
So, instead of ICE'ing, just fail to mark green in such cases
(for `DepKind::{Hir, HirBody, CrateMetadata}`).

Fix #62649.
2020-01-27 17:06:06 +01:00
Mazdak Farrokhzad
de7f16d431 check_match: extract common logic 2020-01-27 16:53:45 +01:00
William D. Jones
b0174ecf34 Fix LLVM assertion failure in MSP430 interrupt generation. 2020-01-27 10:42:48 -05:00
Guillaume Gomez
833ffd7b83
Update src/librustc_error_codes/error_codes/E0220.md
Co-Authored-By: Dylan DPC <dylan.dpc@gmail.com>
2020-01-27 16:06:38 +01:00
bors
8a79d08fa5 Auto merge of #68566 - pietroalbini:rollup-22hbo3e, r=pietroalbini
Rollup of 4 pull requests

Successful merges:

 - #67928 (Update RELEASES.md for 1.41.0)
 - #68370 (Ensure that we error when calling "const extern fn" with wrong convention)
 - #68531 ([self-profiler] Two small cleanups)
 - #68562 (Fix spelling errors)

Failed merges:

r? @ghost
2020-01-27 11:59:57 +00:00
Pietro Albini
5f9284c95f
Rollup merge of #68562 - hjung4:spell, r=jonas-schievink
Fix spelling errors
2020-01-27 12:50:52 +01:00
Pietro Albini
9188bab4db
Rollup merge of #68531 - wesleywiser:cleanup_self_profiler, r=michaelwoerister
[self-profiler] Two small cleanups

r? @michaelwoerister
2020-01-27 12:50:50 +01:00
Pietro Albini
7e824343d3
Rollup merge of #68370 - Aaron1011:const-extern-test, r=RalfJung
Ensure that we error when calling "const extern fn" with wrong convention

See #64926
2020-01-27 12:50:49 +01:00
Pietro Albini
c8d5f4dcd1
Rollup merge of #67928 - XAMPPRocky:relnotes-1.41.0, r=pietroalbini
Update RELEASES.md for 1.41.0

### [Rendered](https://github.com/XAMPPRocky/rust/blob/relnotes-1.41.0/RELEASES.md)

cc @rust-lang/release
2020-01-27 12:50:47 +01:00
bors
1d5f6d41e1 Auto merge of #68165 - thomcc:lt_ones, r=sfackler
Add leading_ones and trailing_ones methods to the primitive integer types

I was surprised these were missing (given that `leading_zeros` and `trailing_zeros` exist), and they seem trivial and hopefully not controversial.

Note that there's some precedent in that `count_ones` and `count_zeros` are both supported even though only one of these has an intrinsic.

I'm not sure if these need a `rustc_const_unstable` flag (the tests don't seem to mind that it's missing). I just made them const, since there's not really any reason for these to be non-const when the `_zeros` variants are const.

Note: My understanding is trivial stuff like (hopefully) this can land without an RFC, but I'm not fully sure about the process though. Questions like "when does the tracking issue get filed?", are a total mystery to me. So, any guidance is appreciated, and sorry in advance if I should have gone through some more involved process for this.
2020-01-27 08:42:56 +00:00
Aaron Hill
9ad1a8c97f
Don't call tcx.fn_sig on closures
Fixes #68542
2020-01-27 00:49:56 -05:00
comet
9a78c2b11d
update 2020-01-26 22:52:13 -06:00
Aaron Hill
4a650324f8
Ensure that we error when calling "const extern fn" with wrong convention
See #64926
2020-01-26 23:05:36 -05:00
bors
320ada6479 Auto merge of #68447 - estebank:sugg-type-param, r=petrochenkov
Suggest defining type parameter when appropriate

```
error[E0412]: cannot find type `T` in this scope
 --> file.rs:3:12
  |
3 | impl Trait<T> for Struct {}
  |     -      ^ not found in this scope
  |     |
  |     help: you might be missing a type parameter: `<T>`
```

Fix #64298.
2020-01-27 03:01:59 +00:00
Matthias Krüger
f7dcdcc0b9 make matches exhaustive 2020-01-27 01:18:18 +01:00
Matthias Krüger
ec61761e46 don't clone types that are copy, round two. 2020-01-27 01:18:18 +01:00
bors
c3681d62ee Auto merge of #68122 - Centril:stabilize-transparent-enums, r=petrochenkov
Stabilize `#[repr(transparent)]` on `enum`s in Rust 1.42.0

# Stabilization report

The following is the stabilization report for `#![feature(transparent_enums)]`.

Tracking issue: https://github.com/rust-lang/rust/issues/60405
[Version target](https://forge.rust-lang.org/#current-release-versions): 1.42 (2020-01-30 => beta, 2020-03-12 => stable).

## User guide

A `struct` with only a single non-ZST field (let's call it `foo`) can be marked as `#[repr(transparent)]`. Such a `struct` has the same layout and ABI as `foo`. Here, we also extend this ability to `enum`s with only one variant, subject to the same restrictions as for the equivalent `struct`. That is, you can now write:

```rust
#[repr(transparent)]
enum Foo { Bar(u8) }
```

which, in terms of layout and ABI, is equivalent to:

```rust
#[repr(transparent)]
struct Foo(u8);
```

## Motivation

This is not a major feature that will unlock new and important use-cases. The utility of `repr(transparent)` `enum`s is indeed limited. However, there is still some value in it:

1. It provides conceptual simplification of the language in terms of treating univariant `enum`s and `struct`s the same, as both are product types. Indeed, languages like Haskell only have `data` as the only way to construct user-defined ADTs in the language.

2. In rare occasions, it might be that the user started out with a univariant `enum` for whatever reason (e.g. they thought they might extend it later). Now they want to make this `enum` `transparent` without breaking users by turning it into a `struct`. By lifting the restriction here, now they can.

## Technical specification

The reference specifies [`repr(transparent)` on a `struct`](https://doc.rust-lang.org/nightly/reference/type-layout.html#the-transparent-representation) as:

> ### The transparent Representation
>
>  The `transparent` representation can only be used on `struct`s that have:
>  - a single field with non-zero size, and
>  - any number of fields with size 0 and alignment 1 (e.g. `PhantomData<T>`).
>
> Structs with this representation have the same layout and ABI as the single non-zero sized field.
>
> This is different than the `C` representation because a struct with the `C` representation will always have the ABI of a `C` `struct` while, for example, a struct with the `transparent` representation with a primitive field will have the ABI of the primitive field.
>
> Because this representation delegates type layout to another type, it cannot be used with any other representation.

Here, we amend this to include univariant `enum`s as well with the same static restrictions and the same effects on dynamic semantics.

## Tests

All the relevant tests are adjusted in the PR diff but are recounted here:

- `src/test/ui/repr/repr-transparent.rs` checks that `repr(transparent)` on an `enum` must be univariant, rather than having zero or more than one variant. Restrictions on the fields inside the only variants, like for those on `struct`s, are also checked here.

- A number of codegen tests are provided as well:
    - `src/test/codegen/repr-transparent.rs` (the canonical test)
    - `src/test/codegen/repr-transparent-aggregates-1.rs`
    - `src/test/codegen/repr-transparent-aggregates-2.rs`
    - `src/test/codegen/repr-transparent-aggregates-3.rs`

- `src/test/ui/lint/lint-ctypes-enum.rs` tests the interactions with the `improper_ctypes` lint.

## History

- 2019-04-30, RFC https://github.com/rust-lang/rfcs/pull/2645
  Author: @mjbshaw
  Reviewers: The Language Team

  This is the RFC that proposes allowing `#[repr(transparent)]` on `enum`s and `union`.

- 2019-06-11, PR https://github.com/rust-lang/rust/pull/60463
  Author: @mjbshaw
  Reviewers: @varkor and @rkruppe

  The PR implements the RFC aforementioned in full.

- 2019, PR https://github.com/rust-lang/rust/pull/67323
  Author: @Centril
  Reviewers: @davidtwco

  The PR reorganizes the static checks taking advantage of the fact that `struct`s and `union`s are internally represented as ADTs with a single variant.

- This PR stabilizes `transparent_enums`.

## Related / possible future work

The remaining work here is to figure out the semantics of `#[repr(transparent)]` on `union`s and stabilize those. This work continues to be tracked in https://github.com/rust-lang/rust/issues/60405.
2020-01-27 00:05:57 +00:00
Tomasz Miąsko
47fd27a637 Move sanitizer tests to a separate directory 2020-01-27 00:00:00 +00:00
Tomasz Miąsko
461aada2fe Add use after scope example to the unstable book 2020-01-27 17:01:30 +01:00
Tomasz Miąsko
08a1c566a7 Detect use-after-scope bugs with AddressSanitizer
Enable use-after-scope checks by default when using AddressSanitizer.
They allow to detect incorrect use of stack objects after their scope
have already ended. The detection is based on LLVM lifetime intrinsics.

To facilitate the use of this functionality, the lifetime intrinsics are
now emitted regardless of optimization level if enabled sanitizer makes
use of them.
2020-01-27 16:56:25 +01:00
Tomasz Miąsko
3c02afe965 compiletest: Don't load TestProps from a directories 2020-01-27 00:00:00 +00:00
Tomasz Miąsko
db7ee95345 compiletest: Derive Default for EarlyProps 2020-01-27 00:00:00 +00:00