Commit Graph

93771 Commits

Author SHA1 Message Date
John Kåre Alsaker
e77096b08c Remove subtle Default impl for Value 2019-05-23 18:51:47 +02:00
John Kåre Alsaker
ae8975c812 Update GenericPredicates queries 2019-05-23 18:51:46 +02:00
John Kåre Alsaker
ba5d9c094d Optimize alloc_from_iter 2019-05-23 18:51:46 +02:00
John Kåre Alsaker
28482db247 Update used_trait_imports 2019-05-23 18:51:45 +02:00
John Kåre Alsaker
b1398a0de6 Update item_children 2019-05-23 18:51:45 +02:00
John Kåre Alsaker
529aed81de Update resolve_lifetimes, named_region_map, is_late_bound_map and object_lifetime_defaults_map 2019-05-23 18:51:45 +02:00
John Kåre Alsaker
093940ddc4 Update implementations_of_trait and all_trait_implementations 2019-05-23 18:51:43 +02:00
John Kåre Alsaker
95dfd82666 Update upstream_monomorphizations and upstream_monomorphizations_for 2019-05-23 18:51:42 +02:00
John Kåre Alsaker
99f6221bb6 Update borrowck 2019-05-23 18:51:42 +02:00
John Kåre Alsaker
8c936e422f Update inherent_impls 2019-05-23 18:51:42 +02:00
John Kåre Alsaker
4ba144d5dd Update associated_item_def_ids 2019-05-23 18:51:41 +02:00
Ralf Jung
8d4e7fde47 adjust comment 2019-05-23 18:13:08 +02:00
Ralf Jung
6116f19f7b Box::into_unique: do the reborrow-to-raw *after* destroying the Box 2019-05-23 18:01:47 +02:00
Andy Russell
3cbf5864a6
tweak discriminant on non-nullary enum diagnostic
Adds notes pointing at the non-nullary variants, and uses "custom
discriminant" language to be consistent with the Reference.
2019-05-23 11:13:48 -04:00
Ralf Jung
f44b264447 fix dangling reference in Vec::append 2019-05-23 16:30:54 +02:00
bors
27cc0db7a2 Auto merge of #60965 - petrochenkov:lit3, r=matklad
syntax: Continue refactoring literals

A follow up to https://github.com/rust-lang/rust/pull/60679.

a2fd002bd5: Similarly to `EscapeError`, literal parsing now produces a `LitError`.
This way we can get rid of `diag: Option<(Span, &Handler)>` in interfaces while leaving attr/mod alone.

d9516d1120: Gathers all components of a literal token in a single struct.
2019-05-23 13:28:27 +00:00
Vadim Petrochenkov
90d15e7704 syntax: Some code cleanup 2019-05-23 12:46:41 +03:00
Vadim Petrochenkov
ca2a50fad7 syntax: Turn token::Lit into a struct 2019-05-23 12:46:24 +03:00
Vadim Petrochenkov
558559e70f syntax: Remove an obsolete hack from literal comparisons 2019-05-23 12:44:05 +03:00
Vadim Petrochenkov
9450e7d142 syntax: Fix spans for boolean literals passed to proc macros 2019-05-23 12:44:05 +03:00
Vadim Petrochenkov
694f76d561 syntax: More consistent wording for some literal parsing errors 2019-05-23 12:44:05 +03:00
Vadim Petrochenkov
fcc2f92f45 syntax: Return named errors from literal parsing functions 2019-05-23 12:44:05 +03:00
bors
f688ba6089 Auto merge of #61075 - Centril:rollup-1ugmcqu, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #60981 (Bump compiler-builtins to 0.1.15)
 - #61014 (Make -Zemit-artifact-notifications also emit the artifact type)
 - #61043 (Disable LLVM/debug assertions in gnu-full-bootstrap)
 - #61046 (Fix ICE with inconsistent macro matchers)
 - #61055 (Solaris CI: Build with dilos2 stable)
 - #61057 (Revert "Add implementations of last in terms of next_back on a bunch of DoubleEndedIterators.")
 - #61073 (librustc_errors: Remove unused annotation style `OldSchoolNoteText`)

Failed merges:

r? @ghost
2019-05-23 07:31:24 +00:00
Mazdak Farrokhzad
a89c62ca2b
Rollup merge of #61073 - phansch:remove_unused_annotation_style, r=matthewjasper
librustc_errors: Remove unused annotation style `OldSchoolNoteText`

I could not find any references to it and the `snippet` module does not
seem to be exported publicly, so I think it can be safely removed.

This was originally removed in 17bd76a51 and I'm not sure why it is still there.
2019-05-23 08:37:19 +02:00
Mazdak Farrokhzad
b2299b2689
Rollup merge of #61057 - sfackler:revert-next-back, r=alexcrichton
Revert "Add implementations of last in terms of next_back on a bunch of DoubleEndedIterators."

This changed observable behavior for several iterator types.

r? @alexcrichton
2019-05-23 08:37:18 +02:00
Mazdak Farrokhzad
4ab593984c
Rollup merge of #61055 - bgermann:master, r=sanxiyn
Solaris CI: Build with dilos2 stable

dilos2-testing has problems since the last repository update, so get the packages from dilos2 stable.

Fixes #61022.
2019-05-23 08:37:17 +02:00
Mazdak Farrokhzad
1ea0b1d274
Rollup merge of #61046 - mark-i-m:transcribe-fix, r=petrochenkov
Fix ICE with inconsistent macro matchers

Fixes #61033

r? @petrochenkov
2019-05-23 08:37:15 +02:00
Mazdak Farrokhzad
25c1dca1b3
Rollup merge of #61043 - alexcrichton:less-full-bootstrap, r=sanxiyn
Disable LLVM/debug assertions in gnu-full-bootstrap

This builder already is very close to the 2 hour mark and the debug
assertions aren't really buying us anything over what all the other
containers are enabling, so let's disable them for this slow builder.
2019-05-23 08:37:14 +02:00
Mazdak Farrokhzad
e4e97caba0
Rollup merge of #61014 - jsgf:emit-artifact-type, r=alexcrichton
Make -Zemit-artifact-notifications also emit the artifact type

This is easier for tooling to handle than trying to reverse-engineer the type from the filename extension. The field name and value is intended to reflect the `--emit` command-line option.

Related issues https://github.com/rust-lang/rust/issues/60988 https://github.com/rust-lang/rust/issues/58465
cc @alexcrichton
2019-05-23 08:37:12 +02:00
Mazdak Farrokhzad
30d550dcfc
Rollup merge of #60981 - alexcrichton:update-compiler-builtins, r=cuviper
Bump compiler-builtins to 0.1.15

This commit bumps the `compiler-builtins` dependency to 0.1.15 which
expects to have the source for `compiler-rt` provided externally if the
`c` feature is enabled. This then plumbs through the necessary support
in the build system to ensure that if the `llvm-project` directory is
checked out and present that we enable the `c` feature of
`compiler-builtins` and compile in all the C intrinsics.
2019-05-23 08:37:11 +02:00
Philipp Hansch
5ed42379e3
librustc_errors: Remove unused annotation style OldSchoolNoteText
I could not find any references to it and the `snippet` module does not
seem to be exported publicly, so I think it can be safely removed.
2019-05-23 08:01:38 +02:00
bors
85334c5092 Auto merge of #60174 - matthewjasper:add-match-arm-scopes, r=pnkfelix
Add match arm scopes and other scope fixes

* Add drop and lint scopes for match arms.
* Lint attributes are now respected on match arms.
* Make sure we emit a StorageDead if we diverge when initializing a temporary.
* Adjust MIR pretty printing of scopes for locals.
* Don't generate duplicate lint scopes for `let statements`.
* Add some previously missing fake borrows for matches.

closes #46525

cc @rust-lang/compiler
2019-05-23 04:48:21 +00:00
bors
15ccaf7791 Auto merge of #60740 - petrochenkov:kw, r=nnethercote
Simplify use of keyword symbols

They mirror non-keyword symbols now (see https://github.com/rust-lang/rust/pull/60630).

`keywords::MyKeyword.name()` -> `kw::MyKeyword`
`keywords::MyKeyword.ident()` -> `Ident::with_empty_ctxt(kw::MyKeyword)` (not common)
`keywords::Invalid.ident()` -> `Ident::invalid()` (more common)

Keywords are simply `Symbol` constants now, the `Keyword` struct is eliminated.
This means `kw::MyKeyword` can now be used in `match` in particular.
2019-05-23 01:50:55 +00:00
bors
11f01bfb9f Auto merge of #61044 - Centril:rollup-ztsgb9p, r=Centril
Rollup of 8 pull requests

Successful merges:

 - #60300 (Allow null-pointer-optimized enums in FFI if their underlying representation is FFI safe)
 - #60773 (Always try to project predicates when finding auto traits in rustdoc)
 - #60809 (Add FAQ for NLL migration)
 - #61023 (Migrate from recursion to iterate on qualify consts visitor impl)
 - #61029 (Simplify RefCell minimum_spanning_tree example)
 - #61030 (Make maybe_codegen_consume_direct iterate instead of doing recursion)
 - #61034 (rustc_metadata: parametrize schema::CrateRoot by 'tcx and rip out old unused incremental infra.)
 - #61037 (Update clippy submodule)

Failed merges:

r? @ghost
2019-05-22 22:57:48 +00:00
Steven Fackler
8a22bc3b30 Revert "Add implementations of last in terms of next_back on a bunch of DoubleEndedIterators."
This reverts commit 3e86cf36b5.
2019-05-22 14:09:34 -07:00
bgermann
e32370d628
Solaris CI: Build with dilos2 stable
dilos2-testing has problems since the last repository update, so get the packages from dilos2 stable.

Fixes #61022.
2019-05-22 22:43:24 +02:00
Esteban Küber
1e3302d85f Suggest dereferencing on assignment to mutable borrow 2019-05-22 13:10:38 -07:00
Mark Mansi
5a9de557b3 add ui tests 2019-05-22 12:20:43 -05:00
Vadim Petrochenkov
a1885cdba3 Restore the old behavior of the rustdoc keyword check + Fix rebase 2019-05-22 20:20:12 +03:00
Vadim Petrochenkov
c389a39c97 Eliminate unnecessary Ident::with_empty_ctxts 2019-05-22 19:48:56 +03:00
Vadim Petrochenkov
59a382122f Simplify use of keyword symbols 2019-05-22 19:48:56 +03:00
Pietro Albini
24f262f35e
ci: toggle builders 2019-05-22 18:10:44 +02:00
Mazdak Farrokhzad
68065173c7
Rollup merge of #61037 - oli-obk:clippy, r=Manishearth
Update clippy submodule

r? @Manishearth

If anyone is wondering where the odd old commits are coming from, we merged all beta backport commits and so into master in order to make sure we don't need to keep those branches around.
2019-05-22 18:08:26 +02:00
Mazdak Farrokhzad
d327e6e681
Rollup merge of #61034 - eddyb:soa-metadata-prereq, r=michaelwoerister
rustc_metadata: parametrize schema::CrateRoot by 'tcx and rip out old unused incremental infra.

These are the first two commits of #59953, already reviewed and approved by @michaelwoerister.

r? @michaelwoerister
2019-05-22 18:08:24 +02:00
Mazdak Farrokhzad
21ba9310c1
Rollup merge of #61030 - spastorino:make-operand-iterate, r=oli-obk
Make maybe_codegen_consume_direct iterate instead of doing recursion

r? @oli-obk
2019-05-22 18:08:22 +02:00
Mazdak Farrokhzad
9abc9361fa
Rollup merge of #61029 - blkerby:minimum_spanning_tree, r=alexcrichton
Simplify RefCell minimum_spanning_tree example

This simplifies the implementation of the `minimum_spanning_tree` example of `RefCell` in the `cell` module-level docs, avoiding an unnecessary recursive call. This also eliminates the need for a block to contain the scope of the borrow in this example. But since that use of a block served an important didactic purpose, we make up for this by instead introducing a block in the initial, simpler example of `RefCell`, where the point will hopefully be conveyed to the reader more easily.
2019-05-22 18:08:21 +02:00
Mazdak Farrokhzad
fba5ed355a
Rollup merge of #61023 - spastorino:use-iterate-qualify-consts, r=oli-obk
Migrate from recursion to iterate on qualify consts visitor impl

r? @oli-obk
2019-05-22 18:08:19 +02:00
Mazdak Farrokhzad
621231053c
Rollup merge of #60809 - jethrogb:jb/nll-faq, r=pnkfelix
Add FAQ for NLL migration

r? @pnkfelix

cc @oli-obk @davidtwco @Centril Since you've provided feedback on the warning wording before.
2019-05-22 18:08:17 +02:00
Mazdak Farrokhzad
90788159d7
Rollup merge of #60773 - Aaron1011:fix/rustdoc-project-all, r=eddyb
Always try to project predicates when finding auto traits in rustdoc

Fixes #60726

Previous, AutoTraitFinder would only try to project predicates when the
predicate type contained an inference variable. When finding auto
traits, we only project to try to unify inference variables - we don't
otherwise learn any new information about the required bounds.

However, this lead to failing to properly generate a negative auto trait
impl (indicating that a type never implements a certain auto trait) in
the following unusual scenario:

In almost all cases, a type has an (implicit) negative impl of an auto
trait due some other type having an explicit *negative* impl of that
auto trait. For example:

struct MyType<T> {
    field: *const T
}

has an implicit 'impl<T> !Send for MyType<T>', due to the explicit
negative impl (in libcore) 'impl<T: ?Sized> !Send for *const T'.

However, as exposed by the 'abi_stable' crate, this isn't always the
case. This minimzed example shows how a type can never implement
'Send', due to a projection error:

```
pub struct True;
pub struct False;

pub trait MyTrait {
    type Project;
}

pub struct MyStruct<T> {
    field: T
}

impl MyTrait for u8 {
    type Project = False;
}

unsafe impl<T> Send for MyStruct<T>
    where T: MyTrait<Project=True> {}

pub struct Wrapper {
    inner: MyStruct<u8>
}
```

In this example, `<u8 as MyTrait>::Project == True'
must hold for 'MyStruct<u8>: Send' to hold.
However, '<u8 as MyTrait>::Project == False' holds instead

To properly account for this unusual case, we need to call
'poly_project_and_unify' on *all* predicates, not just those with
inference variables. This ensures that we catch the projection error
that occurs above, and don't incorrectly determine that 'Wrapper: Send'
holds.
2019-05-22 18:08:14 +02:00
Mazdak Farrokhzad
7cd8d3d8d0
Rollup merge of #60300 - mjbshaw:ffi_types, r=rkruppe
Allow null-pointer-optimized enums in FFI if their underlying representation is FFI safe

I'm not sure if this requires an RFC. I attempted to start [a discussion on internals.rust-lang.org](https://internals.rust-lang.org/t/options-ffi-safety-and-guarantees-for-abi-compatibility-with-nonnull-optimizations/9784) and when no one really objected I figured I'd go ahead and try implementing this.

This allows types like `Option<NonZeroU8>` to be used in FFI without triggering the `improper_ctypes` lint. This works by changing the `is_repr_nullable_ptr` function to consider an enum `E` to be FFI-safe if:

- `E` has no explicit `#[repr(...)]`.
- It only has two variants.
- One of those variants is empty (meaning it has no fields).
- The other variant has only one field.
- That field is one of the following:
  - `&T`
  - `&mut T`
  - `extern "C" fn`
  - `core::num::NonZero*`
  - `core::ptr::NonNull<T>`
  - `#[repr(transparent)] struct` wrapper around one of the types in this list.
- The size of `E` and its field are both known and are both the same size (implying `E` is participating in the nonnull optimization).

This logic seems consistent with [the Rust nomicon](https://doc.rust-lang.org/nomicon/repr-rust.html).
2019-05-22 18:08:13 +02:00