Commit Graph

84343 Commits

Author SHA1 Message Date
Oliver Schneider
f5106a23c3 Poke in the dark and see if bors+windows stops screaming 2018-10-03 10:07:05 +02:00
Oliver Schneider
a9156e9731 Fix typo 2018-10-03 10:07:05 +02:00
Oliver Schneider
1f943849b1 Update error id to an unused one 2018-10-03 10:07:05 +02:00
Oliver Schneider
9e46c0b689 Only promote calls to #[rustc_promotable] const fns 2018-10-03 10:07:05 +02:00
Andre Bogus
989f480297 simplify some unused lints code 2018-10-03 09:00:21 +02:00
Zack M. Davis
1081bbbfc5 abolish ICE when pretty-printing async block
Joshua Netterfield reported an ICE when the unused-parentheses lint
triggered around an async block (#54752). In order to compose an
autofixable suggestion, the lint invokes the pretty-printer on the
unnecessarily-parenthesized expression. (One wonders why the lint
doesn't just use `SourceMap::span_to_snippet` instead, to preserve the
formatting of the original source?—but for that, you'd have to ask the
author of 5c9f806d.)

But then the pretty-printer panics when trying to call `<pprust::State
as PrintState>::end` when `State.boxes` is empty. Empirically, the
problem would seem to be solved if we start some "boxes" beforehand in
the `ast::ExprKind::Async` arm of the big match in
`print_expr_outer_attr_style`, exactly like we do in the
immediately-preceding match arm for `ast::ExprKind::Block`—it would
seem pretty ("pretty") reasonable for the pretty-printing of async
blocks to work a lot like the pretty-printing of ordinary non-async
blocks, right??

Of course, it would be shamefully cargo-culty to commit code on the
basis of this kind of mere reasoning-by-analogy (in contrast to
understanding the design of the pretty-printer in such detail that the
correctness of the patch is comprehended with all the lucid certainty
of mathematical proof, rather than being merely surmised by
intuition). But maybe we care more about fixing the bug with high
probability today, than with certainty in some indefinite hypothetical
future?  Maybe the effort is worth a fifth of a shirt??

Humbly resolves #54752.
2018-10-02 23:02:51 -07:00
Wesley Wiser
d686896f90
Update a FIXME in memory.rs
In  #51833, I improved the performance of `copy_undef_mask()`. As such, the old FIXME wasn't appropriate anymore. The main remaining thing left to do is to implement a fast path for non-overlapping copies (per @oli-obk).
2018-10-02 22:11:38 -04:00
bors
4cf11765dc Auto merge of #54767 - pietroalbini:rollup, r=pietroalbini
Rollup of 10 pull requests

Successful merges:

 - #54269 (#53840: Consolidate pattern check errors)
 - #54458 (Allow both explicit and elided lifetimes in the same impl header)
 - #54603 (Add `crate::` to trait suggestions in Rust 2018.)
 - #54648 (Update Cargo's submodule)
 - #54680 (make run-pass tests with empty main just compile-pass tests)
 - #54687 (Use impl_header_lifetime_elision in libcore)
 - #54699 (Re-export `getopts` so custom drivers can reference it.)
 - #54702 (do not promote comparing function pointers)
 - #54728 (Renumber `proc_macro` tracking issues)
 - #54745 (make `CStr::from_bytes_with_nul_unchecked()` a const fn)

Failed merges:

r? @ghost
2018-10-02 23:29:58 +00:00
Son
30f2e96ab1 Remove main() in examples 2018-10-03 08:21:51 +10:00
jacob
84f75f0dbb
Fix typo in CONTRIBUTING.md
I noticed a small typo while reading over this document.
2018-10-02 16:59:48 -05:00
Pietro Albini
00e4b27796
Rollup merge of #54745 - abonander:cstr-const, r=oli-obk
make `CStr::from_bytes_with_nul_unchecked()` a const fn

closes #54678
2018-10-02 22:54:38 +02:00
Pietro Albini
1826970cf2
Rollup merge of #54728 - alexcrichton:renumber-issues, r=nikomatsakis
Renumber `proc_macro` tracking issues

Lots of issue links in the compiler still point to https://github.com/rust-lang/rust/issues/38356 which is a bit of a monster issue that isn't serving much purpose any more. I've split the issue into a number of more fine-grained tracking issues to track stabilizations.
2018-10-02 22:54:36 +02:00
Pietro Albini
d9d96637d4
Rollup merge of #54702 - RalfJung:fn-ptr-promotion, r=oli-obk
do not promote comparing function pointers

This *could* break existing code that relied on fn ptr comparison getting promoted to `'static` lifetime.

Fixes https://github.com/rust-lang/rust/issues/54696
2018-10-02 22:54:35 +02:00
Pietro Albini
958f1c5582
Rollup merge of #54699 - DiamondLovesYou:reexport-getopts, r=pnkfelix
Re-export `getopts` so custom drivers can reference it.

Otherwise, custom drivers will have to use their own copy of `getopts`, which won't match the types used in `CompilerCalls`.
2018-10-02 22:54:34 +02:00
Pietro Albini
7e571eead8
Rollup merge of #54687 - scottmcm:more-elision, r=dtolnay
Use impl_header_lifetime_elision in libcore

The feature is approved for stabilization, so let's use it to remove about 300 `'a`s.

Tracking issue for the feature: https://github.com/rust-lang/rust/issues/15872
2018-10-02 22:54:33 +02:00
Pietro Albini
32c1454a87
Rollup merge of #54680 - RalfJung:compile-pass, r=pnkfelix
make run-pass tests with empty main just compile-pass tests

Many run-pass tests have an empty main, so there is not actually any point in running them. This makes them `compile-pass` tests instead, saving some time (generating the binary and then running it).

For now I did this only for `run-pass/issues`; if there is interest I can also do it for the other directories. I used `^\s*fn\s+main\(\s*\)\s*\{\s*\}` as regexp to identify these files.
2018-10-02 22:54:32 +02:00
Pietro Albini
662f85ea26
Rollup merge of #54648 - alexcrichton:update-cargo, r=nikomatsakis
Update Cargo's submodule

Bring in a few updates and fixes, mostly a standard update.
2018-10-02 22:54:30 +02:00
Pietro Albini
f70f6ec567
Rollup merge of #54603 - davidtwco:issue-54559, r=nikomatsakis
Add `crate::` to trait suggestions in Rust 2018.

Fixes #54559.

In the 2018 edition, when suggesting traits to import that implement a
given method that is being invoked, suggestions will now include the
`crate::` prefix if the suggested trait is local to the current crate.

r? @nikomatsakis
2018-10-02 22:54:29 +02:00
Pietro Albini
ab338eadfa
Rollup merge of #54458 - scottmcm:bug-54456, r=nikomatsakis
Allow both explicit and elided lifetimes in the same impl header

While still prohibiting explicit and in-band in the same header.

Fixes #54456

As usual, I don't know the broader context of the code I'm changing, so please let me know whatever I can do better.

Pre-existing test that mixing explicit and in-band remains an error: https://github.com/rust-lang/rust/blob/master/src/test/ui/in-band-lifetimes/E0688.rs
2018-10-02 22:54:28 +02:00
Pietro Albini
49d4359f6d
Rollup merge of #54269 - PramodBisht:issue/53840, r=estebank
#53840: Consolidate pattern check errors

#53840  on this PR we are aggregating `cannot bind by-move and by-ref in the same pattern` message present on the different lines into one diagnostic message. Here we are first gathering those `spans` on `vector` then we are throwing them with the help of `MultiSpan`
r? @estebank

Addresses: #53480
2018-10-02 22:54:27 +02:00
bors
2bd5993ca2 Auto merge of #54343 - blitzerr:master, r=nikomatsakis
First shot at #54015

Closes #54015
2018-10-02 20:46:49 +00:00
Nathan West
ec59188025
Make spec_extend use for_each() 2018-10-02 12:35:25 -07:00
Austin Bonander
e0caaec6f9 make CStr::from_bytes_with_nul_unchecked() a const fn
closes #54678
2018-10-02 04:26:16 -07:00
Austin Bonander
092bf2b500 make CStr::from_bytes_with_nul_unchecked() a const fn
closes #54678
2018-10-02 04:25:40 -07:00
Ralf Jung
454b14a511 move some more tests 2018-10-02 13:16:56 +02:00
bors
1c5e9c68ea Auto merge of #54742 - Manishearth:clippyup, r=oli-obk
Update clippy

r? @oli-obk @kennytm
2018-10-02 10:36:25 +00:00
Manish Goregaokar
b8a67f1477 Update clippy 2018-10-02 11:11:35 +02:00
Pramod Bisht
e536e64702 Consolidate pattern check errors
we are consolidating `cannot bind by-move and by-ref in the same
pattern` message present on the different lines into single diagnostic
message.

To do this, we are first gathering those spans into the vector
after that we are throwing them with the help of MultiSpan in
a separate block.

Addresses: #53840
2018-10-02 05:51:02 +00:00
bors
e812ca472a Auto merge of #54701 - arielb1:outlives-later, r=nikomatsakis
normalize param-env type-outlives predicates last

The normalization of type-outlives predicates can depend on misc.
environment predicates, but not the other way around. Inferred lifetime
bounds can propagate type-outlives bounds far and wide, so their
normalization needs to work well.

Fixes #54467

r? @nikomatsakis
beta-nominating because this is required for inferred_outlives_bounds, which is in beta
2018-10-02 04:22:55 +00:00
bors
2d1065bc2a Auto merge of #54694 - csmoe:self_this, r=estebank
Suggest to use self for fake-self from other languages

Closes https://github.com/rust-lang/rust/issues/54019
r? @estebank
2018-10-02 01:09:36 +00:00
David Wood
02357e459b
Attempt to resolve linking issues.
This commit takes a different approach to add the `crate::` prefix to
item paths than previous commits. Previously, recursion was stopped
after a prelude crate name was pushed to the path. It is theorized that
this was the cause of the linking issues since the same path logic is
used for symbol names and that not recursing meant that details were
being missed that affect symbol names. As of this commit, instead of
ceasing recursion, a flag is passed through to any subsequent recursive
calls so that the same effect can be achieved by checking that flag.
2018-10-02 01:16:08 +02:00
David Wood
4cbd397ce8
Move prelude crate names into Session.
Avoid hardcoding and special-casing the `std` crate name in the item
path logic by moving the prelude crate name logic into the `Session`
type so it can be reused in the item path logic and resolve module.
2018-10-02 01:16:08 +02:00
David Wood
9e2d6e1e62
Add crate:: to trait suggestions in Rust 2018.
In the 2018 edition, when suggesting traits to import that implement a
given method that is being invoked, suggestions will now include the
`crate::` prefix if the suggested trait is local to the current crate.
2018-10-02 01:16:05 +02:00
David Wood
2be306939d
Improve mutability error suggestions.
This commit improves mutability error suggestions by suggesting the
removal of `&mut` where a mutable borrow is being taken of a `&mut self`
or a `self: &mut Self`.
2018-10-02 00:35:15 +02:00
David Wood
43b5d725d0
Improve implicit self mutability suggestions.
This commit adds an `ImplicitSelfKind` to the HIR and the MIR that keeps
track of whether a implicit self argument is immutable by-value, mutable
by-value, immutable reference or mutable reference so that the addition
of the `mut` keyword can be suggested for the immutable by-value case.
2018-10-02 00:35:15 +02:00
bors
7cbcdae818 Auto merge of #54693 - RalfJung:ctfe-scalar-pair-undef, r=oli-obk
do not normalize all non-scalar constants to a ConstValue::ScalarPair

We still need `ConstValue::ScalarPair` for match handling (matching slices and strings), but that will never see anything `Undef`. For non-fat-ptr `ScalarPair`, just point to the allocation like larger data structures do.

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

r? @eddyb
2018-10-01 22:32:26 +00:00
Ariel Ben-Yehuda
1069c0e38f add a special case for literal 'static: 'a where-clauses
This makes evaluation more consistent with fulfillment.
2018-10-01 22:44:45 +03:00
Ariel Ben-Yehuda
9d44e9eb7c enable using the evaluation cache on predicates with LBRs
There is no reason not to do it.
2018-10-01 22:44:45 +03:00
Ariel Ben-Yehuda
53a4b39909 handle outlives predicates in trait evaluation
Fixes #54302.
2018-10-01 22:44:45 +03:00
Ariel Ben-Yehuda
b95d0489d9 normalize param-env type-outlives predicates last
The normalization of type-outlives predicates can depend on misc.
environment predicates, but not the other way around. Inferred lifetime
bounds can propagate type-outlives bounds far and wide, so their
normalization needs to work well.

Fixes #54467
2018-10-01 22:42:53 +03:00
Alex Crichton
615214480a Extra proc macro gates are now at #54727 2018-10-01 12:37:07 -07:00
Alex Crichton
526ca7ce79 All proc_macro_span APIs tracked at #54725 now 2018-10-01 12:15:35 -07:00
Alex Crichton
7662523492 Span::def_site() is now at #54724 2018-10-01 12:15:35 -07:00
Alex Crichton
3ced475360 The proc_macro_raw_ident feature is now at #54723 2018-10-01 12:15:35 -07:00
Alex Crichton
b871293cfd The proc_macro_quote feature now lives at #54722 2018-10-01 12:15:35 -07:00
Christian Poveda
276557504d Fix conditions to allow missing tools in CI 2018-10-01 12:42:20 -05:00
bors
de3d640f59 Auto merge of #54667 - RalfJung:maybe-uninit, r=pnkfelix
Panic when using mem::uninitialized or mem::zeroed on an uninhabited type

All code by @japaric. This re-submits one half of https://github.com/rust-lang/rust/pull/53508. This is likely not the one that introduced the perf regression, but just to be sure I'll do a perf run anyway.
2018-10-01 14:58:24 +00:00
David Wood
8c6d08b71f
Add special cases for move from Rc/Arc errors.
This commit special cases the move out of borrowed content error,
previously:

```
error[E0507]: cannot move out of borrowed content
 --> src/main.rs:7:10
  |
7 |     drop(x.field);
  |          ^ cannot move out of borrowed content
```

to instead mention that it is a move out of a `Rc`/`Arc` which is more
helpful:

```
error[E0507]: cannot move out of an `Rc`
 --> src/main.rs:7:10
  |
7 |     drop(x.field);
  |          ^ cannot move out of an `Rc`
```
2018-10-01 13:50:22 +02:00
David Wood
da4a12038b
Introduce language items for Arc and Rc.
This commit introduces language items for `Arc` and `Rc` so that types
can later be checked to be `Arc` or `Rc` in the NLL borrow checker. The
`lang` attribute is currently limited to `stage1` as it requires a
compiler built with knowledge of the expected language items.
2018-10-01 13:50:21 +02:00
bors
6188c58a55 Auto merge of #54711 - kennytm:rollup, r=kennytm
Rollup of 13 pull requests

Successful merges:

 - #53784 (Document that slices cannot be larger than `isize::MAX` bytes)
 - #54308 (Better user experience when attempting to call associated functions with dot notation)
 - #54488 (in which we include attributes in unused `extern crate` suggestion spans)
 - #54544 (Indicate how to move value out of Box in docs.)
 - #54623 (Added help message for `impl_trait_in_bindings` feature gate)
 - #54641 (A few cleanups and minor improvements to rustc/infer)
 - #54656 (Correct doc for WorkQueue<T>::pop().)
 - #54674 (update miri)
 - #54676 (Remove `-Z disable_ast_check_for_mutation_in_guard`)
 - #54679 (Improve bug! message for impossible case in Relate)
 - #54681 (Rename sanitizer runtime libraries on OSX)
 - #54708 (Make ./x.py help <cmd> invoke ./x.py <cmd> -h on its own)
 - #54713 (Add nightly check for tool_lints warning)
2018-10-01 10:16:00 +00:00