]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoChange results to options
Christian Poveda [Sat, 21 Dec 2019 15:27:58 +0000 (10:27 -0500)]
Change results to options

4 years agoAuto merge of #67485 - Centril:rollup-gt0opvr, r=Centril
bors [Sat, 21 Dec 2019 14:30:26 +0000 (14:30 +0000)]
Auto merge of #67485 - Centril:rollup-gt0opvr, r=Centril

Rollup of 7 pull requests

Successful merges:

 - #67059 (Fix too restrictive checks on Drop impls)
 - #67355 (Merge `ast::Mutability` and `mir::Mutability`)
 - #67393 (Enable opting out of specific default LLVM arguments.)
 - #67422 (Cleanup err codes)
 - #67462 (Make ptr::slice_from_raw_parts a const fn available under a feature flag)
 - #67467 (Test slice patterns more)
 - #67478 (Fix src/libcore/str/mod.rs doc comments)

Failed merges:

r? @ghost

4 years agoRollup merge of #67478 - brunobell:master, r=Centril
Mazdak Farrokhzad [Sat, 21 Dec 2019 14:29:50 +0000 (15:29 +0100)]
Rollup merge of #67478 - brunobell:master, r=Centril

Fix src/libcore/str/mod.rs doc comments

Fix grammar in src/libcore/str/mod.rs doc comments. r? @steveklabnik

4 years agoRollup merge of #67467 - matthewjasper:test-slice-patterns, r=oli-obk
Mazdak Farrokhzad [Sat, 21 Dec 2019 14:29:49 +0000 (15:29 +0100)]
Rollup merge of #67467 - matthewjasper:test-slice-patterns, r=oli-obk

Test slice patterns more

Adds tests for const evaluation and some more borrow checking tests.

Fixes some bugs in const eval for subslice patterns.
closes #66934

r? @oli-obk
cc @Centril

4 years agoRollup merge of #67462 - DutchGhost:const_slice_from_raw_parts, r=dtolnay
Mazdak Farrokhzad [Sat, 21 Dec 2019 14:29:47 +0000 (15:29 +0100)]
Rollup merge of #67462 - DutchGhost:const_slice_from_raw_parts, r=dtolnay

Make ptr::slice_from_raw_parts a const fn available under a feature flag

A first step in the direction of https://github.com/rust-lang/rust/issues/67456 .
This makes `ptr::slice_from_raw_parts` and `ptr::slice_from_raw_parts_mut` available as a const fn under a feature flag.

4 years agoRollup merge of #67422 - GuillaumeGomez:cleanup-err-codes, r=Dylan-DPC
Mazdak Farrokhzad [Sat, 21 Dec 2019 14:29:45 +0000 (15:29 +0100)]
Rollup merge of #67422 - GuillaumeGomez:cleanup-err-codes, r=Dylan-DPC

Cleanup err codes

r? @Dylan-DPC

4 years agoRollup merge of #67393 - michaelwoerister:llvm-args-override, r=varkor
Mazdak Farrokhzad [Sat, 21 Dec 2019 14:29:44 +0000 (15:29 +0100)]
Rollup merge of #67393 - michaelwoerister:llvm-args-override, r=varkor

Enable opting out of specific default LLVM arguments.

`rustc` by default adds a few arguments to LLVM (like `-mergefunc-use-aliases` for example). With this PR `rustc` will only emit these arguments if the same argument has not already been specified by the user via `-Cllvm-args`. This enables opting out of these defaults.

The PR also removes a PGO specific `-Z` flag the effect of which can also be easily achieved by `-Cllvm-args`.

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

4 years agoRollup merge of #67355 - Centril:merge-mut, r=oli-obk
Mazdak Farrokhzad [Sat, 21 Dec 2019 14:29:42 +0000 (15:29 +0100)]
Rollup merge of #67355 - Centril:merge-mut, r=oli-obk

Merge `ast::Mutability` and `mir::Mutability`

r? @oli-obk

4 years agoRollup merge of #67059 - TommasoBianchi:dropck_fix_pr, r=pnkfelix
Mazdak Farrokhzad [Sat, 21 Dec 2019 14:29:40 +0000 (15:29 +0100)]
Rollup merge of #67059 - TommasoBianchi:dropck_fix_pr, r=pnkfelix

Fix too restrictive checks on Drop impls

Fixes #34426. Fixes #58311.

This PR completes and extends #59497 (which has been inactive for a while now).
The problem generating both issues was that when checking that the `Predicate`s of the `Drop` impl are exactly the same as the ones of the struct definition, the check was essentially performed by a simple `==` operator, which was not handling correctly HRTBs and involved `Fn` types.

The implemented solution relies on the `relate` machinery to more correctly equate `Predicate`s, and on `anonymize_late_bound_regions` to handle HRTB in a more general way. As the `Relate` trait currently is implemented only for `TraitPredicate` and `ProjectionPredicate` (and as they were the ones generating problems), `relate` is used only for them while for other `Predicate`s the equality check is kept. I'm currently considering whether it would make sense to implement the `Relate` trait also for all other `Predicate`s to render the proposed solution more general.

4 years agoFix rustdoc
Matthew Jasper [Sun, 8 Dec 2019 22:02:33 +0000 (22:02 +0000)]
Fix rustdoc

4 years agoUpdate tests for GATs
Matthew Jasper [Sun, 8 Dec 2019 17:22:35 +0000 (17:22 +0000)]
Update tests for GATs

* Make some run-pass or check-pass
* Use `#![allow(incomplete_features)]`
* Update FIXMEs now that some of the issues have been addressed
* Add regression tests

4 years agoAdd more tests for slice patterns
Matthew Jasper [Sun, 15 Dec 2019 16:14:24 +0000 (16:14 +0000)]
Add more tests for slice patterns

4 years agoRequire issue = "none" over issue = "0" in unstable attributes
Ross MacArthur [Sat, 21 Dec 2019 11:16:18 +0000 (13:16 +0200)]
Require issue = "none" over issue = "0" in unstable attributes

4 years agoAuto merge of #66994 - Centril:stmt-polish, r=estebank
bors [Sat, 21 Dec 2019 11:05:03 +0000 (11:05 +0000)]
Auto merge of #66994 - Centril:stmt-polish, r=estebank

refactor expr & stmt parsing + improve recovery

Summary of important changes (best read commit-by-commit, ignoring whitespace changes):

- `AttrVec` is introduces as an alias for `ThinVec<Attribute>`
- `parse_expr_bottom` and `parse_stmt` are thoroughly refactored.
- Extract diagnostics logic for `vec![...]` in a pattern context.
- Recovery is added for `do catch { ... }`
- Recovery is added for `'label: non_block_expr`
- Recovery is added for `var $local`, `auto $local`, and `mut $local`. Fixes #65257.
- Recovery is added for `e1 and e2` and `e1 or e2`.
- ~~`macro_legacy_warnings` is turned into an error (has been a warning for 3 years!)~~
- Fixes #63396 by forward-porting #64105 which now works thanks to added recovery.
- `ui-fulldeps/ast_stmt_expr_attr.rs` is turned into UI and pretty tests.
- Recovery is fixed for `#[attr] if expr {}`

r? @estebank

4 years agoFix src/libcore/str/mod.rs doc comments
Broono Lu [Sat, 21 Dec 2019 10:12:46 +0000 (18:12 +0800)]
Fix src/libcore/str/mod.rs doc comments

4 years agoRemove iter_private.rs
Masaki Hara [Sat, 21 Dec 2019 06:16:00 +0000 (15:16 +0900)]
Remove iter_private.rs

The contents of this file have been moved in #56932 (520e8b0) and the
file should have been removed as well.

4 years agoMove the rest of the mir-opt inline tests into a folder
Wesley Wiser [Sun, 15 Dec 2019 20:37:28 +0000 (15:37 -0500)]
Move the rest of the mir-opt inline tests into a folder

4 years ago[mir-opt] Fix `Inline` pass to handle inlining into `box` expressions
Wesley Wiser [Sun, 15 Dec 2019 19:07:30 +0000 (14:07 -0500)]
[mir-opt] Fix `Inline` pass to handle inlining into `box` expressions

4 years agoAuto merge of #67464 - Centril:rollup-j3mkl1m, r=Centril
bors [Sat, 21 Dec 2019 01:02:54 +0000 (01:02 +0000)]
Auto merge of #67464 - Centril:rollup-j3mkl1m, r=Centril

Rollup of 6 pull requests

Successful merges:

 - #67130 (Const prop should finish propagation into user defined variables)
 - #67163 (Split up ptr/mod.rs in libcore...)
 - #67314 (Don't suppress move errors for union fields)
 - #67392 (Fix unresolved type span inside async object)
 - #67404 (Separate region inference logic from error handling better)
 - #67428 (`is_binding_pat`: use explicit match & include or-pats in grammar)

Failed merges:

r? @ghost

4 years agoRemove rustc-dev from the default nightly components
Josh Stone [Fri, 20 Dec 2019 23:45:03 +0000 (15:45 -0800)]
Remove rustc-dev from the default nightly components

It was already filtered from other branches, but we only kept it in
nightly's default to ease the transition. Now that the separation of
rust-std/rustc-dev has reached the 1.40 release, it seems like a good
time for that transition to end.

4 years agoDon't ICE in subslice pattern const-eval
Matthew Jasper [Fri, 20 Dec 2019 23:11:41 +0000 (23:11 +0000)]
Don't ICE in subslice pattern const-eval

4 years agotweak var/auto/mut recovery
Mazdak Farrokhzad [Wed, 4 Dec 2019 11:15:01 +0000 (12:15 +0100)]
tweak var/auto/mut recovery

4 years agouse .span_suggestion_short for &&
Mazdak Farrokhzad [Wed, 4 Dec 2019 10:27:11 +0000 (11:27 +0100)]
use .span_suggestion_short for &&

4 years agoast_stmt_expr_attr -> pretty & ui tests
Mazdak Farrokhzad [Wed, 4 Dec 2019 10:16:12 +0000 (11:16 +0100)]
ast_stmt_expr_attr -> pretty & ui tests

4 years agofix bug in parse_tuple_parens_expr + related refactoring
Mazdak Farrokhzad [Wed, 4 Dec 2019 09:13:29 +0000 (10:13 +0100)]
fix bug in parse_tuple_parens_expr + related refactoring

4 years agorecover `#[attr] if expr {}`
Mazdak Farrokhzad [Wed, 4 Dec 2019 07:10:41 +0000 (08:10 +0100)]
recover `#[attr] if expr {}`

4 years agorecover on 'mut', 'var', 'auto'
Mazdak Farrokhzad [Tue, 3 Dec 2019 17:08:19 +0000 (18:08 +0100)]
recover on 'mut', 'var', 'auto'

4 years agointroduce 'type AttrVec'
Mazdak Farrokhzad [Tue, 3 Dec 2019 15:38:34 +0000 (16:38 +0100)]
introduce 'type AttrVec'

4 years agosimplify parse_bottom_expr more
Mazdak Farrokhzad [Tue, 3 Dec 2019 15:38:08 +0000 (16:38 +0100)]
simplify parse_bottom_expr more

4 years agouse mk_expr_err more
Mazdak Farrokhzad [Tue, 3 Dec 2019 14:32:05 +0000 (15:32 +0100)]
use mk_expr_err more

4 years agoextract parse_lit_expr and simplify
Mazdak Farrokhzad [Tue, 3 Dec 2019 14:31:45 +0000 (15:31 +0100)]
extract parse_lit_expr and simplify

4 years agoextract parse_break_expr
Mazdak Farrokhzad [Tue, 3 Dec 2019 14:06:34 +0000 (15:06 +0100)]
extract parse_break_expr

4 years agorefactor parse_incorrect_await_syntax
Mazdak Farrokhzad [Tue, 3 Dec 2019 13:21:03 +0000 (14:21 +0100)]
refactor parse_incorrect_await_syntax

4 years agoextract parse_{expr_opt, return_expr, yield_expr}
Mazdak Farrokhzad [Tue, 3 Dec 2019 13:01:24 +0000 (14:01 +0100)]
extract parse_{expr_opt, return_expr, yield_expr}

4 years agorecover on 'do catch { .. }'
Mazdak Farrokhzad [Tue, 3 Dec 2019 12:35:05 +0000 (13:35 +0100)]
recover on 'do catch { .. }'

4 years agopass attr as param in new methods
Mazdak Farrokhzad [Tue, 3 Dec 2019 12:14:50 +0000 (13:14 +0100)]
pass attr as param in new methods

4 years agoadd recovery to parse_labeled_expr
Mazdak Farrokhzad [Tue, 3 Dec 2019 12:11:34 +0000 (13:11 +0100)]
add recovery to parse_labeled_expr

4 years agoextract parse_labeled_expr
Mazdak Farrokhzad [Tue, 3 Dec 2019 11:48:08 +0000 (12:48 +0100)]
extract parse_labeled_expr

4 years agoextract parse_path_start_expr
Mazdak Farrokhzad [Tue, 3 Dec 2019 11:43:45 +0000 (12:43 +0100)]
extract parse_path_start_expr

4 years agoextract parse_array_or_repeat_expr
Mazdak Farrokhzad [Tue, 3 Dec 2019 10:49:56 +0000 (11:49 +0100)]
extract parse_array_or_repeat_expr

4 years agoextract parse_tuple_parens_expr
Mazdak Farrokhzad [Tue, 3 Dec 2019 10:36:40 +0000 (11:36 +0100)]
extract parse_tuple_parens_expr

4 years agoClean up `parse_bottom_expr`
A C [Mon, 16 Sep 2019 20:45:43 +0000 (21:45 +0100)]
Clean up `parse_bottom_expr`

4 years agoAdd a UI test for correct parsing
A C [Mon, 16 Sep 2019 20:45:13 +0000 (21:45 +0100)]
Add a UI test for correct parsing

4 years agoparse_bottom_expr: use else if
Mazdak Farrokhzad [Tue, 3 Dec 2019 09:30:40 +0000 (10:30 +0100)]
parse_bottom_expr: use else if

4 years agoimplement recovery in check_assoc_op
Mazdak Farrokhzad [Tue, 3 Dec 2019 09:19:58 +0000 (10:19 +0100)]
implement recovery in check_assoc_op

4 years agoextract should_continue_as_assoc_expr
Mazdak Farrokhzad [Tue, 3 Dec 2019 08:04:36 +0000 (09:04 +0100)]
extract should_continue_as_assoc_expr

4 years agoextract: error_block_no_opening_brace
Mazdak Farrokhzad [Tue, 3 Dec 2019 07:20:19 +0000 (08:20 +0100)]
extract: error_block_no_opening_brace

4 years agoparser: extract error_outer_attrs
Mazdak Farrokhzad [Tue, 3 Dec 2019 06:40:18 +0000 (07:40 +0100)]
parser: extract error_outer_attrs

4 years agoparse_stmt_without_recovery: readability!
Mazdak Farrokhzad [Tue, 3 Dec 2019 06:33:25 +0000 (07:33 +0100)]
parse_stmt_without_recovery: readability!

4 years agoparse_stmt_mac: add a comment
Mazdak Farrokhzad [Tue, 3 Dec 2019 06:23:09 +0000 (07:23 +0100)]
parse_stmt_mac: add a comment

4 years agoextract suggest_slice_pat
Mazdak Farrokhzad [Tue, 3 Dec 2019 06:13:59 +0000 (07:13 +0100)]
extract suggest_slice_pat

4 years agoparser: early return for item stmt
Mazdak Farrokhzad [Tue, 3 Dec 2019 04:50:05 +0000 (05:50 +0100)]
parser: early return for item stmt

4 years agoinline parse_stmt_ into parse_stmt
Mazdak Farrokhzad [Tue, 3 Dec 2019 04:39:00 +0000 (05:39 +0100)]
inline parse_stmt_ into parse_stmt

4 years agoextract parse_sttmt_mac
Mazdak Farrokhzad [Tue, 3 Dec 2019 04:37:12 +0000 (05:37 +0100)]
extract parse_sttmt_mac

4 years agoreduce repetition in stmt parsing
Mazdak Farrokhzad [Mon, 2 Dec 2019 08:32:54 +0000 (09:32 +0100)]
reduce repetition in stmt parsing

4 years agointo: simplify AddressOf logic after rebase
Mazdak Farrokhzad [Fri, 20 Dec 2019 21:39:20 +0000 (22:39 +0100)]
into: simplify AddressOf logic after rebase

4 years agoaddress review comments
Mazdak Farrokhzad [Thu, 19 Dec 2019 09:42:07 +0000 (10:42 +0100)]
address review comments

4 years ago1. ast::Mutability::{Mutable -> Mut, Immutable -> Not}.
Mazdak Farrokhzad [Mon, 16 Dec 2019 16:28:40 +0000 (17:28 +0100)]
1. ast::Mutability::{Mutable -> Mut, Immutable -> Not}.
2. mir::Mutability -> ast::Mutability.

4 years agoRollup merge of #67428 - Centril:ibp-explicit-match, r=matthewjasper
Mazdak Farrokhzad [Fri, 20 Dec 2019 21:05:36 +0000 (22:05 +0100)]
Rollup merge of #67428 - Centril:ibp-explicit-match, r=matthewjasper

`is_binding_pat`: use explicit match & include or-pats in grammar

r? @matthewjasper @nikomatsakis

4 years agoRollup merge of #67404 - mark-i-m:split-1, r=matthewjasper
Mazdak Farrokhzad [Fri, 20 Dec 2019 21:05:35 +0000 (22:05 +0100)]
Rollup merge of #67404 - mark-i-m:split-1, r=matthewjasper

Separate region inference logic from error handling better

Split out from #67241

r? @matthewjasper

4 years agoRollup merge of #67392 - csmoe:async-typeinfo, r=estebank
Mazdak Farrokhzad [Fri, 20 Dec 2019 21:05:33 +0000 (22:05 +0100)]
Rollup merge of #67392 - csmoe:async-typeinfo, r=estebank

Fix unresolved type span inside async object

Closes #65180
r? @estebank
It's hard to create a minimal repro for that issue, [decided](https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/meeting.202019.2E12.2E17/near/183675659) to give up finding mcve.
cc [previous take](https://github.com/rust-lang/rust/pull/65668)

4 years agoRollup merge of #67314 - matthewjasper:union-move-errors, r=nikomatsakis
Mazdak Farrokhzad [Fri, 20 Dec 2019 21:05:31 +0000 (22:05 +0100)]
Rollup merge of #67314 - matthewjasper:union-move-errors, r=nikomatsakis

Don't suppress move errors for union fields

closes #66500

4 years agoRollup merge of #67163 - TheSamsa:split-up-ptr-mod, r=Mark-Simulacrum
Mazdak Farrokhzad [Fri, 20 Dec 2019 21:05:30 +0000 (22:05 +0100)]
Rollup merge of #67163 - TheSamsa:split-up-ptr-mod, r=Mark-Simulacrum

Split up ptr/mod.rs in libcore...

...one with implementation detail for const ptr and the other with mut ptr

I am not sure if the "stable since 1.0.0" flags are the correct choice for the two additional mods.
Also, is it necessary for them to be "pub"? If so, there should be a good description for them.

Closes #66891

4 years agoRollup merge of #67130 - wesleywiser:const_prop_into_locals, r=oli-obk
Mazdak Farrokhzad [Fri, 20 Dec 2019 21:05:28 +0000 (22:05 +0100)]
Rollup merge of #67130 - wesleywiser:const_prop_into_locals, r=oli-obk

Const prop should finish propagation into user defined variables

Fixes #66638

~~Temporarily rebased on top of #67015 to get those fixes.~~

r? @oli-obk

4 years agoAuto merge of #67020 - pnkfelix:issue-59535-accumulate-past-lto-imports, r=mw
bors [Fri, 20 Dec 2019 20:56:09 +0000 (20:56 +0000)]
Auto merge of #67020 - pnkfelix:issue-59535-accumulate-past-lto-imports, r=mw

save LTO import info and check it when trying to reuse build products

Fix #59535

Previous runs of LTO optimization on the previous incremental build can import larger portions of the dependence graph into a codegen unit than the current compilation run is choosing to import. We need to take that into account when we choose to reuse PostLTO-optimization object files from previous compiler invocations.

This PR accomplishes that by serializing the LTO import information on each incremental build. We load up the previous LTO import data as well as the current LTO import data. Then as we decide whether to reuse previous PostLTO objects or redo LTO optimization, we check whether the LTO import data matches. After we finish with this decision process for every object, we write the LTO import data back to disk.

----

What is the scenario where comparing against past LTO import information is necessary?

I've tried to capture it in the comments in the regression test, but here's yet another attempt from me to summarize the situation:

 1. Consider a call-graph like `[A] -> [B -> D] <- [C]` (where the letters are functions and the modules are enclosed in `[]`)
 2. In our specific instance, the earlier compilations were inlining the call to`B` into `A`; thus `A` ended up with a external reference to the symbol `D` in its object code, to be resolved at subsequent link time. The LTO import information provided by LLVM for those runs reflected that information: it explicitly says during those runs, `B` definition and `D` declaration were imported into `[A]`.
 3. The change between incremental builds was that the call `D <- C` was removed.
 4. That change, coupled with other decisions within `rustc`, made the compiler decide to make `D` an internal symbol (since it was no longer accessed from other codegen units, this makes sense locally). And then the definition of `D` was inlined into `B` and `D` itself was eliminated entirely.
  5. The current LTO import information reported that `B` alone is imported into `[A]` for the *current compilation*. So when the Rust compiler surveyed the dependence graph, it determined that nothing `[A]` imports changed since the last build (and `[A]` itself has not changed either), so it chooses to reuse the object code generated during the previous compilation.
  6. But that previous object code has an unresolved reference to `D`, and that causes a link time failure!

----

The interesting thing is that its quite hard to actually observe the above scenario arising, which is probably why no one has noticed this bug in the year or so since incremental LTO support landed (PR #53673).

I've literally spent days trying to observe the bug on my local machine, but haven't managed to find the magic combination of factors to get LLVM and `rustc` to do just the right set of the inlining and `internal`-reclassification choices that cause this particular problem to arise.

----

Also, I have tried to be careful about injecting new bugs with this PR. Specifically, I was/am worried that we could get into a scenario where overwriting the current LTO import data with past LTO import data would cause us to "forget" a current import. ~~To guard against this, the PR as currently written always asserts, at overwrite time, that the past LTO import-set is a *superset* of the current LTO import-set. This way, the overwriting process should always be safe to run.~~
 * The previous note was written based on the first version of this PR. It has since been revised to use a simpler strategy, where we never attempt to merge the past LTO import information into the current one. We just *compare* them, and act accordingly.
 * Also, as you can see from the comments on the PR itself, I was quite right to be worried about forgetting past imports; that scenario was observable via a trivial transformation of the regression test I had devised.

4 years agoBetter comment
Who? Me?! [Fri, 20 Dec 2019 20:49:32 +0000 (14:49 -0600)]
Better comment

Co-Authored-By: matthewjasper <mjjasper1@gmail.com>
4 years agoMake ptr::slice_from_raw_parts a const fn available under a feature flag
Dodo [Fri, 20 Dec 2019 20:42:03 +0000 (21:42 +0100)]
Make ptr::slice_from_raw_parts a const fn available under a feature flag

4 years agoGenerate correct `Deref` predicate
Matthew Jasper [Mon, 9 Dec 2019 22:19:40 +0000 (22:19 +0000)]
Generate correct `Deref` predicate

4 years agoUse `delay_span_bug` less often
Matthew Jasper [Sun, 8 Dec 2019 17:19:30 +0000 (17:19 +0000)]
Use `delay_span_bug` less often

4 years agoCorrectly lower bounds on GATs
Matthew Jasper [Sun, 8 Dec 2019 17:12:57 +0000 (17:12 +0000)]
Correctly lower bounds on GATs

4 years agoCorrectly lower paths to generic associated types
Matthew Jasper [Sun, 8 Dec 2019 17:04:17 +0000 (17:04 +0000)]
Correctly lower paths to generic associated types

4 years agoResolve names in the generics of impl associated types
Matthew Jasper [Sun, 8 Dec 2019 16:59:27 +0000 (16:59 +0000)]
Resolve names in the generics of impl associated types

4 years agoCheck associated type implementations for generic mismatches
Matthew Jasper [Sun, 8 Dec 2019 16:58:22 +0000 (16:58 +0000)]
Check associated type implementations for generic mismatches

4 years agoAuto merge of #67455 - Centril:rollup-mf0yc81, r=Centril
bors [Fri, 20 Dec 2019 16:24:12 +0000 (16:24 +0000)]
Auto merge of #67455 - Centril:rollup-mf0yc81, r=Centril

Rollup of 5 pull requests

Successful merges:

 - #64588 (Add a raw "address of" operator)
 - #67031 (Update tokio crates to latest versions)
 - #67131 (Merge `TraitItem` & `ImplItem into `AssocItem`)
 - #67354 (Fix pointing at arg when cause is outside of call)
 - #67363 (Fix handling of wasm import modules and names)

Failed merges:

r? @ghost

4 years agoRollup merge of #67363 - alexcrichton:wasm-import-modules, r=eddyb
Mazdak Farrokhzad [Fri, 20 Dec 2019 16:22:22 +0000 (17:22 +0100)]
Rollup merge of #67363 - alexcrichton:wasm-import-modules, r=eddyb

Fix handling of wasm import modules and names

The WebAssembly targets of rustc have weird issues around name mangling
and import the same name from different modules. This all largely stems
from the fact that we're using literal symbol names in LLVM IR to
represent what a function is called when it's imported, and we're not
using the wasm-specific `wasm-import-name` attribute. This in turn leads
to two issues:

* If, in the same codegen unit, the same FFI symbol is referenced twice
  then rustc, when translating to LLVM IR, will only reference one
  symbol from the first wasm module referenced.

* There's also a bug in LLD [1] where even if two codegen units
  reference different modules, having the same symbol names means that
  LLD coalesces the symbols and only refers to one wasm module.

Put another way, all our imported wasm symbols from the environment are
keyed off their LLVM IR symbol name, which has lots of collisions today.
This commit fixes the issue by implementing two changes:

1. All wasm symbols with `#[link(wasm_import_module = "...")]` are
   mangled by default in LLVM IR. This means they're all given unique names.

2. Symbols then use the `wasm-import-name` attribute to ensure that the
   WebAssembly file uses the correct import name.

When put together this should ensure we don't trip over the LLD bug [1]
and we also codegen IR correctly always referencing the right symbols
with the right import module/name pairs.

Closes #50021
Closes #56309
Closes #63562

[1]: https://bugs.llvm.org/show_bug.cgi?id=44316

4 years agoRollup merge of #67354 - VirrageS:blame-wrong-line, r=estebank
Mazdak Farrokhzad [Fri, 20 Dec 2019 16:22:21 +0000 (17:22 +0100)]
Rollup merge of #67354 - VirrageS:blame-wrong-line, r=estebank

Fix pointing at arg when cause is outside of call

Follow up after: #66933

Closes: #66923
r? @estebank

4 years agoRollup merge of #67131 - Centril:item-merge, r=petrochenkov
Mazdak Farrokhzad [Fri, 20 Dec 2019 16:22:19 +0000 (17:22 +0100)]
Rollup merge of #67131 - Centril:item-merge, r=petrochenkov

Merge `TraitItem` & `ImplItem into `AssocItem`

In this PR we:

- Merge `{Trait,Impl}Item{Kind?}` into `AssocItem{Kind?}` as discussed in https://github.com/rust-lang/rust/issues/65041#issuecomment-538105286.

   - This is done by using the cover grammar of both forms.

   - In particular, it requires that we syntactically allow (under `#[cfg(FALSE)]`):

      - `default`ness on `trait` items,

      - `impl` items without a body / definition (`const`, `type`, and `fn`),

      - and associated `type`s in `impl`s with bounds, e.g., `type Foo: Ord;`.

   - The syntactic restrictions are replaced by semantic ones in `ast_validation`.

- Move syntactic restrictions around C-variadic parameters from the parser into `ast_validation`:

    - `fn`s in all contexts now syntactically allow `...`,

    - `...` can occur anywhere in the list syntactically (`fn foo(..., x: usize) {}`),

    - and `...` can be the sole parameter (`fn foo(...) {}`.

r? @petrochenkov

4 years agoRollup merge of #67031 - mati865:tokio-update, r=nikomatsakis
Mazdak Farrokhzad [Fri, 20 Dec 2019 16:22:17 +0000 (17:22 +0100)]
Rollup merge of #67031 - mati865:tokio-update, r=nikomatsakis

Update tokio crates to latest versions

Drops few old crates from the workspace (they are only used during tests, not in Rust itself) and allows to remove even more crates during next `rustc-ap-*` update.

4 years agoRollup merge of #64588 - matthewjasper:mir-address-of, r=oli-obk
Mazdak Farrokhzad [Fri, 20 Dec 2019 16:22:16 +0000 (17:22 +0100)]
Rollup merge of #64588 - matthewjasper:mir-address-of, r=oli-obk

Add a raw "address of" operator

* Parse and feature gate `&raw [const | mut] expr` (feature gate name is `raw_address_of`)
* Add `mir::Rvalue::AddressOf`
* Use the new `Rvalue` for:
    * the new syntax
    * reference to pointer casts
    * drop shims for slices and arrays
* Stop using `mir::Rvalue::Cast` with a reference as the operand
* Correctly evaluate `mir::Rvalue::{Ref, AddressOf}` in constant propagation

cc @Centril @RalfJung @oli-obk @eddyb
cc #64490

4 years agoRemove rarely used -Zdisable_instrumentation_preinliner flag.
Michael Woerister [Wed, 18 Dec 2019 13:28:06 +0000 (14:28 +0100)]
Remove rarely used -Zdisable_instrumentation_preinliner flag.

The same effect can be achieved by `-Cllvm-args=-disable-preinline`.

4 years agoAllow -Cllvm-args to override rustc's default LLVM args.
Michael Woerister [Wed, 18 Dec 2019 13:19:03 +0000 (14:19 +0100)]
Allow -Cllvm-args to override rustc's default LLVM args.

4 years agoUpdate E0121.md
Dylan DPC [Fri, 20 Dec 2019 11:32:39 +0000 (17:02 +0530)]
Update E0121.md

4 years agoUpdate E0120.md
Dylan DPC [Fri, 20 Dec 2019 11:20:20 +0000 (16:50 +0530)]
Update E0120.md

4 years agoAuto merge of #67449 - Centril:rollup-04hvg57, r=Centril
bors [Fri, 20 Dec 2019 11:17:47 +0000 (11:17 +0000)]
Auto merge of #67449 - Centril:rollup-04hvg57, r=Centril

Rollup of 7 pull requests

Successful merges:

 - #66755 (Remove a const-if-hack in RawVec)
 - #67127 (Use structured suggestion for disambiguating method calls)
 - #67219 (Fix up Command Debug output when arg0 is specified.)
 - #67285 (Indicate origin of where type parameter for uninferred types )
 - #67328 (Remove now-redundant range check on u128 -> f32 casts)
 - #67367 (Move command line option definitions into a dedicated file)
 - #67442 (Remove `SOCK_CLOEXEC` dummy variable on platforms that don't use it.)

Failed merges:

r? @ghost

4 years agoRollup merge of #67442 - reitermarkus:dummy-variable, r=kennytm
Mazdak Farrokhzad [Fri, 20 Dec 2019 11:17:27 +0000 (12:17 +0100)]
Rollup merge of #67442 - reitermarkus:dummy-variable, r=kennytm

Remove `SOCK_CLOEXEC` dummy variable on platforms that don't use it.

4 years agoRollup merge of #67367 - 0dvictor:options, r=Centril
Mazdak Farrokhzad [Fri, 20 Dec 2019 11:17:26 +0000 (12:17 +0100)]
Rollup merge of #67367 - 0dvictor:options, r=Centril

Move command line option definitions into a dedicated file

config.rs has reached the 3000 line tidy limit, this commit moves command line option definitions into a new file - options.rs,  and leaves the rest of configuration infrastructure in config.rs.

4 years agoRollup merge of #67328 - rkruppe:simplify-u128-f32-cast, r=matthewjasper
Mazdak Farrokhzad [Fri, 20 Dec 2019 11:17:25 +0000 (12:17 +0100)]
Rollup merge of #67328 - rkruppe:simplify-u128-f32-cast, r=matthewjasper

Remove now-redundant range check on u128 -> f32 casts

This code was added to avoid UB in LLVM 6 and earlier, but we no longer support those LLVM versions.
Since https://reviews.llvm.org/D47807 (released in LLVM 7), uitofp does exactly what we need.

Closes #51872

4 years agoRollup merge of #67285 - ohadravid:indicate-origin-of-where-type-parameter, r=estebank
Mazdak Farrokhzad [Fri, 20 Dec 2019 11:17:23 +0000 (12:17 +0100)]
Rollup merge of #67285 - ohadravid:indicate-origin-of-where-type-parameter, r=estebank

Indicate origin of where type parameter for uninferred types

Based on #65951 (which is not merge yet), fixes #67277.

This PR improves a little the diagnostic for code like:

```
 async fn foo() {
     bar().await;
}

 async fn bar<T>() -> () {}
```

by showing:
```
error[E0698]: type inside `async fn` body must be known in this context
 --> unresolved_type_param.rs:9:5
  |
9 |     bar().await;
  |     ^^^ cannot infer type for type parameter `T` declared on the function `bar`
  |
...
```
(The
```
declared on the function `bar`
```
part is new)

A small side note: `Vec` and `slice` seem to resist this change, because querying `item_name()` panics, and `get_opt_name()` returns `None`.

r? @estebank

4 years agoRollup merge of #67219 - jsgf:command-argv0-debug, r=joshtriplett
Mazdak Farrokhzad [Fri, 20 Dec 2019 11:17:22 +0000 (12:17 +0100)]
Rollup merge of #67219 - jsgf:command-argv0-debug, r=joshtriplett

Fix up Command Debug output when arg0 is specified.

PR https://github.com/rust-lang/rust/pull/66512 added the ability to set argv[0] on
Command. As a side effect, it changed the Debug output to print both the program and
argv[0], which in practice results in stuttery output (`"echo" "echo" "foo"`).

This PR reverts the behaviour to the the old one, so that the command is only printed
once - unless arg0 has been set. In that case it emits `"[command]" "arg0" "arg1" ...`.

4 years agoRollup merge of #67127 - estebank:disambiguate-suggestion, r=varkor
Mazdak Farrokhzad [Fri, 20 Dec 2019 11:17:20 +0000 (12:17 +0100)]
Rollup merge of #67127 - estebank:disambiguate-suggestion, r=varkor

Use structured suggestion for disambiguating method calls

Fix #65635.

4 years agoRollup merge of #66755 - mark-i-m:const-vec-new, r=ecstatic-morse
Mazdak Farrokhzad [Fri, 20 Dec 2019 11:17:18 +0000 (12:17 +0100)]
Rollup merge of #66755 - mark-i-m:const-vec-new, r=ecstatic-morse

Remove a const-if-hack in RawVec

r? @ecstatic-morse

cc @Centril

4 years ago`SliceKind::VarLen`: make doc-comment render correctly.
Mazdak Farrokhzad [Fri, 20 Dec 2019 10:54:27 +0000 (11:54 +0100)]
`SliceKind::VarLen`: make doc-comment render correctly.

(The backticks were rendering badly in VSCode.)

4 years agoMove command line option definitions into a dedicated file
Victor Ding [Tue, 17 Dec 2019 12:22:55 +0000 (23:22 +1100)]
Move command line option definitions into a dedicated file

config.rs has reached the 3000 line tidy limit, this commit moves
command line option definitions into a new file - options.rs,  and
leaves the rest of configuration infrastructure in config.rs.

4 years agoGeneral purpose teest cases contributed by mw.
Felix S. Klock II [Fri, 6 Dec 2019 14:57:52 +0000 (15:57 +0100)]
General purpose teest cases contributed by mw.

4 years agosave LTO import information and check it when trying to reuse build products.
Felix S. Klock II [Fri, 29 Nov 2019 15:04:40 +0000 (16:04 +0100)]
save LTO import information and check it when trying to reuse build products.

adopts simple strategy devised with assistance from mw: Instead of accumulating
(and acting upon) LTO import information over an unbounded number of prior
compilations, just see if the current import set matches the previous import set.
if they don't match, then you cannot reuse the PostLTO build product for that
module.

In either case (of a match or a non-match), we can (and must) unconditionally
emit the current import set as the recorded information in the incremental
compilation cache, ready to be loaded during the next compiler run for use in
the same check described above.

resolves issue 59535.

4 years agoAuto merge of #67443 - Mark-Simulacrum:toolstate-no-commit-newline, r=Mark-Simulacrum
bors [Fri, 20 Dec 2019 03:33:07 +0000 (03:33 +0000)]
Auto merge of #67443 - Mark-Simulacrum:toolstate-no-commit-newline, r=Mark-Simulacrum

Remove newline from commit in toolstate

4 years agoRemove newline from commit in toolstate
Mark Rousskov [Fri, 20 Dec 2019 03:30:04 +0000 (22:30 -0500)]
Remove newline from commit in toolstate

4 years agoRemove `SOCK_CLOEXEC` dummy variable on platforms that don't use it.
Markus Reiter [Fri, 20 Dec 2019 03:27:28 +0000 (04:27 +0100)]
Remove `SOCK_CLOEXEC` dummy variable on platforms that don't use it.

4 years agoAuto merge of #67440 - Mark-Simulacrum:rollup-z59a7ky, r=Mark-Simulacrum
bors [Thu, 19 Dec 2019 23:02:09 +0000 (23:02 +0000)]
Auto merge of #67440 - Mark-Simulacrum:rollup-z59a7ky, r=Mark-Simulacrum

Rollup of 6 pull requests

Successful merges:

 - #67253 (Add more delegations to the fmt docs and add doctests)
 - #67281 (add string.insert benchmarks)
 - #67351 (Set release channel on non-dist builders)
 - #67421 (Fix internal documentation typo)
 - #67432 (Fix toolstate history format)
 - #67436 (Correct the todo! stabilization version)

Failed merges:

r? @ghost

4 years agoRollup merge of #67436 - NieDzejkob:todo-stabilization-fix, r=alexcrichton
Mark Rousskov [Thu, 19 Dec 2019 22:53:58 +0000 (17:53 -0500)]
Rollup merge of #67436 - NieDzejkob:todo-stabilization-fix, r=alexcrichton

Correct the todo! stabilization version

None