Commit Graph

97522 Commits

Author SHA1 Message Date
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
Alexander Regueiro
0994cf4ab0 Added another test. 2019-08-05 16:07:26 +01:00
Mark Rousskov
288b4e9078 Don't store &Span
This is just needless indirection.
2019-08-05 10:29:06 -04:00
Jake Goulding
32324d22c3 Add implementations for converting boxed slices into boxed arrays
This mirrors the implementations of reference slices into arrays.
2019-08-05 10:26:53 -04:00
David Laban
f40190a6a5 test drop order for parameters when a future is dropped part-way through execution 2019-08-05 15:26:08 +01:00
Mark Rousskov
18130ef044 Replace error callback with Result 2019-08-05 10:21:25 -04:00
Alexander Regueiro
4e0e645dd9 Added test for issue. 2019-08-05 15:16:28 +01:00
Niko Matsakis
e0712c898e useful debug 2019-08-05 15:16:27 +01:00
Niko Matsakis
63a67a076f useful comments 2019-08-05 15:16:27 +01:00
Alexander Regueiro
709b924643 Ensure type_param_predicates fn only returns predicates for type param with given def-ID. 2019-08-05 15:16:27 +01:00
Alexander Regueiro
3d9d36b3ff Got rid of concept of 'principal trait' in more places in codebase. 2019-08-05 15:16:27 +01:00
Alexander Regueiro
8f9ca24f55 A few cosmetic improvements. 2019-08-05 15:16:27 +01:00
Ralf Jung
90b95cf53f
fix slice comparison
Co-Authored-By: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-08-05 15:30:08 +02:00
Mark Rousskov
fbf93d4931 Remove leftover AwaitOrigin
This was missed in PR #62293.
2019-08-05 09:14:51 -04:00
Mark Rousskov
8849149745 Make mk_attr_id private to libsyntax 2019-08-05 08:48:22 -04:00
Mark Rousskov
24a491f40c Drop explicit span argument from mk_name_value_item 2019-08-05 08:48:22 -04:00
Mark Rousskov
ab3fb1e775 Drop span argument from mk_list_item 2019-08-05 08:45:00 -04:00
Aleksey Kladov
b3e8c8bbe2 adapt rustdoc to infailable lexer 2019-08-05 13:15:12 +03:00
Aleksey Kladov
58ac81a60f add unknown token 2019-08-05 13:15:11 +03:00
Aleksey Kladov
b5e35b128e remove special code path for unknown tokens 2019-08-05 13:15:11 +03:00
Igor Matuszewski
2eb06cbce1 Update RLS 2019-08-05 12:08:57 +02:00
Ralf Jung
39185dd398 update getrandom 2019-08-05 11:23:06 +02:00
Ralf Jung
4e51ef7ccd
Test content, not value
Co-Authored-By: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-08-05 11:21:15 +02: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
Ilija Tovilo
ebc36001c0
Add test for #43398
Closes #43398
2019-08-05 09:47:20 +02: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
Esteban Küber
f621f890a6 revert change to single test 2019-08-04 13:14:53 -07: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
Esteban Küber
bdd79b849e tweak output and tests 2019-08-04 12:23:05 -07: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
Esteban Küber
387dcff796 review comments: clean up 2019-08-04 10:42:46 -07:00
Ariel Ben-Yehuda
95f29aa81b Revert "Rollup merge of #62696 - chocol4te:fix_#62194, r=estebank"
This reverts commit df21a6f040, reversing
changes made to cc16d04869.
2019-08-04 19:52:43 +03: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
David Laban
0a1bdd4a53 test .await while holding variables of different sizes 2019-08-04 16:10:07 +01:00
Stjepan Glavina
d2c9c12546 Add #[stable] to Error impl 2019-08-04 15:11:08 +02:00
Ralf Jung
0cb16f7d5e bump libcore tests to rand 0.7 2019-08-04 14:50:32 +02:00
Ralf Jung
5b78e98a37 bump rand to fix Miri failures 2019-08-04 14:50:26 +02:00
Ralf Jung
0d1584507b fix UB in a test 2019-08-04 14:43:02 +02:00
Yuki Okushi
92e4e8e783 Add test for issue-37433 2019-08-04 21:22:42 +09: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
Yuki Okushi
620567d87e Add test for issue-49544 2019-08-04 20:20:40 +09:00
Yuki Okushi
416caa10ed Add test for issue-29265 2019-08-04 20:20:12 +09:00