Commit Graph

97123 Commits

Author SHA1 Message Date
Stefan Schindler ae1e7cace3 Match the loop examples 2019-08-06 10:48:11 +02:00
bors 766b10a8d5 Auto merge of #62987 - Thomasdezeeuw:ioslice-advance, r=Thomasdezeeuw
Add {IoSlice, IoSliceMut}::advance

API inspired by the [`Buf::advance`](https://docs.rs/bytes/0.4.12/bytes/trait.Buf.html#tymethod.advance) method found in the [bytes](https://docs.rs/bytes) crate.

Closes #62726.
2019-08-06 04:43:03 +00:00
bors c4715198b5 Auto merge of #59369 - oli-obk:unwrap_usICE, r=eddyb,nikomatsakis
`unwrap_usize` should at least try to evaluate the underlying constant

r? @eddyb

fixes #59016

I know that I'm still using `ParamEnv` wrongly, but that's a preexisting issue not amplified by this PR.
2019-08-05 19:06:50 +00:00
Oliver Scherer bd57498e7d Get rid of one more useless lift invocation 2019-08-05 17:49:40 +02:00
Oliver Scherer f2079338b5 Update to new passing-ui-test scheme 2019-08-05 17:48:05 +02:00
Oliver Scherer d1f62b92eb Prevent array length printing cycle with debug assertions 2019-08-05 17:48:05 +02:00
Oliver Scherer 7385f2177f Fixup: eval_usize needs param env 2019-08-05 17:48:05 +02:00
Oliver Scherer 2d86d040a5 Address comment and formatting nits 2019-08-05 17:48:05 +02:00
Oliver Scherer f4f957d00b Clear the ParamEnv where its information is irrelevant 2019-08-05 17:48:05 +02:00
Oliver Scherer 7710820d18 Fiddle param env through to try_eval_bits in most places 2019-08-05 17:48:05 +02:00
Oliver Scherer f9e29b279c Add regression tests 2019-08-05 17:48:04 +02:00
Oliver Scherer 9b87d22ea8 Don't abort on unevaluated constants without at least tryting to eval them 2019-08-05 17:48:04 +02:00
Oliver Scherer 437f017e2e Clean up the ty::Const::assert* methods 2019-08-05 17:48:04 +02:00
bors f6ecdc2f61 Auto merge of #61491 - stjepang:impls-for-accesserror, r=dtolnay
Add a few trait impls for AccessError
2019-08-05 15:30:40 +00:00
bors 4be0675589 Auto merge of #63079 - RalfJung:ctfe-no-align, r=oli-obk
CTFE: simplify ConstValue by not checking for alignment

I hope the test suite actually covers the problematic cases here?

r? @oli-obk

Fixes https://github.com/rust-lang/rust/issues/61952
2019-08-05 08:16:51 +00:00
bors e1d7e4ae82 Auto merge of #63248 - petrochenkov:nomarker, r=matthewjasper
Move special treatment of `derive(Copy, PartialEq, Eq)` from expansion infrastructure to elsewhere

As described in https://github.com/rust-lang/rust/pull/62086#issuecomment-515195477.

Reminder:
- `derive(PartialEq, Eq)` makes the type it applied to a "structural match" type, so constants of this type can be used in patterns (and const generics in the future).
- `derive(Copy)` notifies other derives that the type it applied to implements `Copy`, so `derive(Clone)` can generate optimized code and other derives can generate code working with `packed` types and types with `rustc_layout_scalar_valid_range` attributes.

First, the special behavior is now enabled after properly resolving the derives, rather than after textually comparing them with `"Copy"`, `"PartialEq"` and `"Eq"` in `fn add_derived_markers`.

The markers are no longer kept as attributes in AST since derives cannot modify items and previously did it through hacks in the expansion infra.
Instead, the markers are now kept in a "global context" available from all the necessary places, namely - resolver.

For `derive(PartialEq, Eq)` the markers are created by the derive macros themselves and then consumed during HIR lowering to add the `#[structural_match]` attribute in HIR.
This is still a hack, but now it's a hack local to two specific macros rather than affecting the whole expansion infra.
Ideally we should find the way to put `#[structural_match]` on the impls rather than on the original item, and then consume it in `rustc_mir`, then no hacks in expansion and lowering will be required.
(I'll make an issue about this for someone else to solve, after this PR lands.)

The marker for `derive(Copy)` cannot be emitted by the `Copy` macro itself because we need to know it *before* the `Copy` macro is expanded for expanding other macros.
So we have to do it in resolve and block expansion of any derives in a `derive(...)` container until we know for sure whether this container has `Copy` in it or not.
Nasty stuff.

r? @eddyb or @matthewjasper
2019-08-05 04:36:51 +00:00
bors 11a51488f0 Auto merge of #63245 - RalfJung:miri-error, r=oli-obk
More Miri error tweaks

* Add `err_` version of the `_format!` macros
* Add `UbExperimental` variant so that Miri can mark some UB as experimental (e.g. Stacked Borrows)

r? @oli-obk
2019-08-05 00:57:19 +00:00
bors d3f8a0b5df Auto merge of #63213 - varkor:itemkind-tyalias, r=Centril
Rename `ItemKind::Ty` to `ItemKind::TyAlias`

The current name is not entirely clear without context and `TyAlias` is consistent with `ItemKind::TraitAlias`.
2019-08-04 20:03:28 +00:00
varkor fd819d02d7 Rename Target::Ty to Target::TyAlias 2019-08-04 20:17:09 +01:00
varkor 63659ca9f6 Rename ItemImplKind::Type to ItemImplKind::TyAlias 2019-08-04 20:16:41 +01:00
varkor 8aa45c65d8 Rename ItemKind::Ty to ItemKind::TyAlias 2019-08-04 20:13:37 +01:00
bors f01b9f803b Auto merge of #62816 - estebank:type-ascription-macros, r=petrochenkov
Point at type ascription before macro invocation on expansion parse error

Fix https://github.com/rust-lang/rust/issues/47666. Follow up to https://github.com/rust-lang/rust/pull/62791.

r? @petrochenkov
2019-08-04 16:19:04 +00:00
Stjepan Glavina d2c9c12546 Add #[stable] to Error impl 2019-08-04 15:11:08 +02:00
bors 460072ebee Auto merge of #63048 - Aaron1011:feature/rustdoc-reexport-doc, r=GuillaumeGomez
Use doc comments from 'pub use' statements

Split off from #62855

Currently, rustdoc ignores any doc comments found on 'pub use'
statements. As described in issue #58700, this makes it impossible to
properly document procedural macros. Any doc comments must be written on
the procedural macro definition, which must occur in a dedicated
proc-macro crate. This means that any doc comments or doc tests cannot
reference items defined in re-exporting crate, despite the fact that
such items may be required to use the procedural macro.

To solve this issue, this commit allows doc comments to be written on
'pub use' statements. For consistency, this applies to *all* 'pub use'
statements, not just those importing procedural macros.

When inlining documentation, documentation on 'pub use' statements will
be prepended to the documentation of the inlined item. For example,
the following items:

```rust

mod other_mod {
    /// Doc comment from definition
    pub struct MyStruct;
}

/// Doc comment from 'pub use'
///
pub use other_mod::MyStruct;
```

will caues the documentation for the re-export of 'MyStruct' to be
rendered as:

```
Doc comment from 'pub use'
Doc comment from definition
```

Note the empty line in the 'pub use' doc comments - because doc comments
are concatenated as-is, this ensure that the doc comments on the
definition start on a new line.
2019-08-04 11:30:12 +00:00
Ralf Jung b9d4c759f3 AssumptionNotHeld is used only once in Miri and never caught... remove from enum 2019-08-04 11:59:14 +02:00
Ralf Jung 18daa766f0 move AssumptionNotHeld to UB 2019-08-04 11:21:41 +02:00
bors 5170a3f45a Auto merge of #63233 - RalfJung:get_unchecked, r=Centril
clarify that unchecked indexing is UB even if the reference is never used
2019-08-04 07:53:25 +00:00
Ralf Jung 9b5623f8bc fix links
relative links do not work because this is included in several places
2019-08-04 09:52:36 +02:00
bors 2c13edcd9d Auto merge of #63199 - ehuss:fix-rustc-guide-toolstate, r=kennytm
Fix rustc-guide toolstate tracking.

The rustc-guide is still not saving its toolstate.  It needs to be done explicitly.

Note: There are some confusing bits here, like without `--no-fail-fast`, it saves the wrong value in `toolstates.json`.  Also, "rustbook" is always added as "test-fail".  Presumably [this code](https://github.com/rust-lang/rust/blame/63c1f17d950bfefc8f356777f124f304f0575c76/src/bootstrap/tool.rs#L201-L205) assumes everything fails until it passes tests, which is a bit confusing for things that don't run tests.

cc @mark-i-m
2019-08-04 03:36:10 +00:00
bors 17099768ea Auto merge of #63235 - Xanewok:update-rls, r=Centril
Update Rustfmt and RLS

Closes #63195

cc @topecongiro
2019-08-03 23:57:22 +00:00
Vadim Petrochenkov 2a9b75281b Move special treatment of derive(Copy, PartialEq, Eq) from expansion infrastructure to elsewhere 2019-08-03 23:57:35 +03:00
bors 6e0d27d936 Auto merge of #63059 - Centril:sound-bind-by-move, r=matthewjasper
Make `#![feature(bind_by_move_pattern_guards)]` sound without `#[feature(nll)]`

Implements https://github.com/rust-lang/rust/issues/15287#issuecomment-507054617 making `#![feature(bind_by_move_pattern_guards)]]` sound without also having `#![feature(nll)]`. The logic here is that if we see a `match` guard, we will refuse to downgrade NLL errors to warnings. This is in preparation for hopefully stabilizing the former feature in https://github.com/rust-lang/rust/pull/63118.

As fall out from the implementation we also:
Fixes https://github.com/rust-lang/rust/issues/31287
Fixes https://github.com/rust-lang/rust/issues/27282

r? @matthewjasper
2019-08-03 20:11:25 +00:00
Ralf Jung 89a370db0f add variant for experimental UB (like Stacked Borrows) 2019-08-03 20:36:05 +02:00
Ralf Jung fe08d9e2d2 also add macros for free-form error messages 2019-08-03 20:35:52 +02:00
bors 452087b4bf Auto merge of #63242 - pietroalbini:move-azure-pipelines, r=Mark-Simulacrum
ci: move .azure-pipelines to src/ci/azure-pipelines

As discussed in the last infra meeting this PR moves the Azure Pipelines configuration to `src/ci/azure-pipelines`, to clean up the root directory.

r? @Mark-Simulacrum
2019-08-03 16:23:31 +00:00
Pietro Albini 6e3c4c3b8e ci: move .azure-pipelines to src/ci/azure-pipelines 2019-08-03 18:21:38 +02:00
Mazdak Farrokhzad b289f6f2a4 cargotest: servo -> caac107ae8145ef2fd20365e2b8fadaf09c2eb3b 2019-08-03 14:53:01 +02:00
bors a457433456 Auto merge of #63234 - Centril:rollup-h9t731z, r=Centril
Rollup of 5 pull requests

Successful merges:

 - #62954 (Fix typo in Delimited::open_tt)
 - #63146 (Cleanup syntax::attr)
 - #63218 (rustbuild: RISC-V is no longer an experimental LLVM target)
 - #63227 (dead_code: Properly inspect fields in struct patterns with type relative paths)
 - #63229 (A bit of Miri error cleanup)

Failed merges:

r? @ghost
2019-08-03 12:20:42 +00:00
Ralf Jung 3b9cda4693 Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-08-03 13:45:15 +02:00
Mazdak Farrokhzad 42dfdc5aa5 Rollup merge of #63229 - RalfJung:miri-error, r=oli-obk
A bit of Miri error cleanup

Some cleanup after https://github.com/rust-lang/rust/pull/62969.

r? @oli-obk
Cc @saleemjaffer
2019-08-03 13:12:04 +02:00
Mazdak Farrokhzad 2fd9548039 Rollup merge of #63227 - jakubadamw:issue-63151, r=estebank
dead_code: Properly inspect fields in struct patterns with type relative paths

Closes #63151.
2019-08-03 13:12:02 +02:00
Mazdak Farrokhzad 6a38ef7abd Rollup merge of #63218 - lenary:riscv-non-experimental, r=alexcrichton
rustbuild: RISC-V is no longer an experimental LLVM target

This moves RISC-V from the experimental LLVM targets to the
regular LLVM targets. RISC-V was made non-experimental in
https://reviews.llvm.org/rL366399

I have also sorted the list of LLVM targets, and changed the code
around setting llvm_exp_targets (and its default) to match the code
setting llvm_targets (and its default), ensuring future changes to
the defaults, as LLVM targets become stable, affect as few places as
possible.

Given WebAssembly is in `LLVM_ALL_TARGETS` and is therefore built by default (and has been since October 2018), I'm not sure why rust still has it in `experimental-targets`. I'm happy to update this PR to move it into the main list of LLVM targets.

r? @alexcrichton
2019-08-03 13:12:01 +02:00
Mazdak Farrokhzad 15b5aacab6 Rollup merge of #63146 - Mark-Simulacrum:clean-attr, r=petrochenkov
Cleanup syntax::attr

Mostly removing needless arguments to constructors

r? @petrochenkov
2019-08-03 13:11:59 +02:00
Mazdak Farrokhzad 42a3281275 Rollup merge of #62954 - ia0:fix_typo_span, r=Centril
Fix typo in Delimited::open_tt
2019-08-03 13:11:57 +02:00
Igor Matuszewski 5bcce8269d Update Rustfmt and RLS 2019-08-03 13:05:42 +02:00
Ralf Jung f44abba4ec clarify that unchecked indexing is UB even if the reference is never used 2019-08-03 12:46:20 +02:00
Thomas de Zeeuw dad56c3947 Add {IoSlice, IoSliceMut}::advance 2019-08-03 10:44:45 +02:00
bors 8e917f4838 Auto merge of #62946 - RalfJung:miri_type_dispatch_first, r=oli-obk
Miri: dispatch first on the type

Based on the fact that Miri now always has intptrcast available, we can change binops and casts to first check the type of the source operand and then decide based on that what to do, instead of considering the value (pointer vs bits) first.
2019-08-03 08:33:07 +00:00
Eric Huss 2da89dea4b Fix rustc-guide toolstate tracking. 2019-08-02 21:28:16 -07:00
bors d7270712cb Auto merge of #63180 - varkor:trait-alias-impl-trait, r=Centril
Change opaque type syntax from `existential type` to type alias `impl Trait`

This implements a new feature gate `type_alias_impl_trait` (this is slightly different from the originally proposed feature name, but matches what has been used in discussion since), deprecating the old `existential_types` feature.

The syntax for opaque types has been changed. In addition, the "existential" terminology has been replaced with "opaque", as per previous discussion and the RFC.

This makes partial progress towards implementing https://github.com/rust-lang/rust/issues/63063.

r? @Centril
2019-08-03 02:21:23 +00:00