]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agocapitalize Rust
Andrew Banchich [Wed, 4 Dec 2019 00:11:53 +0000 (19:11 -0500)]
capitalize Rust

4 years agoupdate test
Andrew Banchich [Mon, 23 Sep 2019 20:09:36 +0000 (16:09 -0400)]
update test

Use assert_eq and assert_ne over comparison operators.

4 years agoAuto merge of #64272 - Mark-Simulacrum:parallel-handler, r=estebank
bors [Mon, 23 Sep 2019 06:38:23 +0000 (06:38 +0000)]
Auto merge of #64272 - Mark-Simulacrum:parallel-handler, r=estebank

Refactor librustc_errors::Handler API

This should be reviewed by-commit.

The last commit moves all fields into an inner struct behind a single lock; this is done to prevent possible deadlocks in a multi-threaded compiler, as well as inconsistent state observation.

4 years agoAuto merge of #64695 - Centril:rollup-t1xnl2c, r=Centril
bors [Mon, 23 Sep 2019 02:25:10 +0000 (02:25 +0000)]
Auto merge of #64695 - Centril:rollup-t1xnl2c, r=Centril

Rollup of 7 pull requests

Successful merges:

 - #64294 (Fix `Stdio::piped` example code and lint)
 - #64670 (Cleanup syntax::ext::build)
 - #64674 (Propagate `types.err` in locals further to avoid spurious knock-down errors)
 - #64676 (Parse assoc type bounds in generic params and provide custom diagnostic)
 - #64677 (remove outdated comment)
 - #64679 (Infer consts more consistently)
 - #64688 (Clarify the "since" tidy check)

Failed merges:

r? @ghost

4 years agoRollup merge of #64688 - rust-lang:clarify-tidy-since, r=alexreg
Mazdak Farrokhzad [Sun, 22 Sep 2019 22:36:41 +0000 (00:36 +0200)]
Rollup merge of #64688 - rust-lang:clarify-tidy-since, r=alexreg

Clarify the "since" tidy check

r? @pietroalbini

cc @alexreg

4 years agoRollup merge of #64679 - skinny121:const-infer, r=varkor
Mazdak Farrokhzad [Sun, 22 Sep 2019 22:36:40 +0000 (00:36 +0200)]
Rollup merge of #64679 - skinny121:const-infer, r=varkor

Infer consts more consistently

Moved some duplicated logic in `TypeRelation` methods into `super_combined_consts`. Before some `TypeRelation`s like `Lub` wasn't using `replace_if_possible`, meaning some inference types were staying around longer than they should be.

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

r? @varkor

4 years agoRollup merge of #64677 - tshepang:outdated, r=Mark-Simulacrum
Mazdak Farrokhzad [Sun, 22 Sep 2019 22:36:38 +0000 (00:36 +0200)]
Rollup merge of #64677 - tshepang:outdated, r=Mark-Simulacrum

remove outdated comment

4 years agoRollup merge of #64676 - estebank:assoc-type-bound-in-generic, r=petrochenkov
Mazdak Farrokhzad [Sun, 22 Sep 2019 22:36:37 +0000 (00:36 +0200)]
Rollup merge of #64676 - estebank:assoc-type-bound-in-generic, r=petrochenkov

Parse assoc type bounds in generic params and provide custom diagnostic

Fix #26271.

4 years agoRollup merge of #64674 - estebank:knock-down-the-wall, r=Centril
Mazdak Farrokhzad [Sun, 22 Sep 2019 22:36:36 +0000 (00:36 +0200)]
Rollup merge of #64674 - estebank:knock-down-the-wall, r=Centril

Propagate `types.err` in locals further to avoid spurious knock-down errors

Fix #33575, fix #44504.

4 years agoRollup merge of #64670 - Mark-Simulacrum:ext-build-simplify, r=petrochenkov
Mazdak Farrokhzad [Sun, 22 Sep 2019 22:36:34 +0000 (00:36 +0200)]
Rollup merge of #64670 - Mark-Simulacrum:ext-build-simplify, r=petrochenkov

Cleanup syntax::ext::build

I suspect most of this code could be inlined but I only removed the bits where the inlining didn't really hurt readability (i.e., method call -> function call) or the completely unused code.

4 years agoRollup merge of #64294 - wchargin:wchargin-stdio-piped-docs, r=Dylan-DPC
Mazdak Farrokhzad [Sun, 22 Sep 2019 22:36:33 +0000 (00:36 +0200)]
Rollup merge of #64294 - wchargin:wchargin-stdio-piped-docs, r=Dylan-DPC

Fix `Stdio::piped` example code and lint

Summary:
Invoking `rev` does not add a trailing newline when none is present in
the input (at least on my Debian). Nearby examples use `echo` rather
than `rev`, which probably explains the source of the discrepancy.

Also, a `mut` qualifier is unused.

Test Plan:
Copy the code block into <https://play.rust-lang.org> with a `fn main`
wrapper, and run it. Note that it compiles and runs cleanly; prior to
this commit, it would emit an `unused_mut` warning and then panic.

wchargin-branch: stdio-piped-docs

4 years agoAuto merge of #64151 - estebank:binding-error, r=varkor
bors [Sun, 22 Sep 2019 22:34:22 +0000 (22:34 +0000)]
Auto merge of #64151 - estebank:binding-error, r=varkor

On obligation errors point at the unfulfilled binding when possible

CC #42855, #64130, #64135. Fix #61860.

4 years agofix nll tests
Esteban Küber [Sun, 22 Sep 2019 18:54:38 +0000 (11:54 -0700)]
fix nll tests

4 years agoAuto merge of #64604 - lzutao:clippyup, r=oli-obk
bors [Sun, 22 Sep 2019 18:33:14 +0000 (18:33 +0000)]
Auto merge of #64604 - lzutao:clippyup, r=oli-obk

Update clippy and rls

r? @oli-obk cc @Manishearth

4 years agoignore-x86 instead of ignore-musl
Esteban Küber [Sat, 21 Sep 2019 18:39:06 +0000 (11:39 -0700)]
ignore-x86 instead of ignore-musl

4 years agohack to avoid incorrect suggestion
Esteban Küber [Fri, 20 Sep 2019 22:02:36 +0000 (15:02 -0700)]
hack to avoid incorrect suggestion

4 years agoreview comments
Esteban Küber [Fri, 20 Sep 2019 21:29:39 +0000 (14:29 -0700)]
review comments

4 years agoPoint at type param when it's cause of unfulfilled obligation
Esteban Küber [Fri, 20 Sep 2019 18:58:20 +0000 (11:58 -0700)]
Point at type param when it's cause of unfulfilled obligation

4 years agoFix rebase
Esteban Küber [Wed, 18 Sep 2019 20:51:36 +0000 (13:51 -0700)]
Fix rebase

4 years agoignore musl target in tests to avoid issues with output differences
Esteban Küber [Mon, 16 Sep 2019 18:25:32 +0000 (11:25 -0700)]
ignore musl target in tests to avoid issues with output differences

4 years agoreview comments
Esteban Küber [Thu, 5 Sep 2019 06:41:51 +0000 (23:41 -0700)]
review comments

4 years agoPoint at correct span for parenthesized types
Esteban Küber [Thu, 5 Sep 2019 00:36:01 +0000 (17:36 -0700)]
Point at correct span for parenthesized types

4 years agoOn obligation errors point at the unfulfilled binding when possible
Esteban Küber [Wed, 4 Sep 2019 17:17:59 +0000 (10:17 -0700)]
On obligation errors point at the unfulfilled binding when possible

4 years agoClarify the "since" tidy check
Mazdak Farrokhzad [Sun, 22 Sep 2019 15:18:45 +0000 (17:18 +0200)]
Clarify the "since" tidy check

4 years agoUpdate rls to fix build error
Lzu Tao [Sat, 21 Sep 2019 05:28:47 +0000 (05:28 +0000)]
Update rls to fix build error

4 years agoUpdate clippy
Lzu Tao [Thu, 19 Sep 2019 08:32:31 +0000 (08:32 +0000)]
Update clippy

4 years agoAuto merge of #64669 - estebank:unreachable, r=Centril
bors [Sun, 22 Sep 2019 06:33:01 +0000 (06:33 +0000)]
Auto merge of #64669 - estebank:unreachable, r=Centril

Use span label instead of note in unreachable lint

Fix #64636.

4 years agoInfer consts consistently. Moved some logic into super_combined_consts,
ben [Sun, 22 Sep 2019 05:24:09 +0000 (17:24 +1200)]
Infer consts consistently. Moved some logic into super_combined_consts,
also removed some duplicated logic from TypeRelation methods.

4 years agoAuto merge of #64666 - Centril:rollup-tp98vlr, r=Centril
bors [Sun, 22 Sep 2019 02:44:28 +0000 (02:44 +0000)]
Auto merge of #64666 - Centril:rollup-tp98vlr, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #63907 (Add explanation to type mismatch involving type params and assoc types)
 - #64615 (rustbuild: Turn down compression on exe installers)
 - #64617 (rustbuild: Turn down compression on msi installers)
 - #64618 (rustbuild: Improve output of `dist` step)
 - #64619 (Fixes #63962. Hint about missing tuple parentheses in patterns)
 - #64634 (Update to LLVM 9.0.0)
 - #64635 (Allow using fn pointers in const fn with unleash miri)
 - #64660 (unify errors for tuple/struct variants)
 - #64664 (fully remove AstBuilder)

Failed merges:

r? @ghost

4 years agoreview comments: wording
Esteban Küber [Sun, 22 Sep 2019 01:57:37 +0000 (18:57 -0700)]
review comments: wording

4 years agoreview comments
Esteban Küber [Sun, 22 Sep 2019 00:28:07 +0000 (17:28 -0700)]
review comments

4 years agoremove outdated comment
Tshepang Lekhonkhobe [Sun, 22 Sep 2019 00:23:41 +0000 (02:23 +0200)]
remove outdated comment

4 years agoParse assoc type bounds in generic params and provide custom diagnostic
Esteban Küber [Sun, 22 Sep 2019 00:11:09 +0000 (17:11 -0700)]
Parse assoc type bounds in generic params and provide custom diagnostic

4 years agoreview comments
Esteban Küber [Sat, 21 Sep 2019 23:34:16 +0000 (16:34 -0700)]
review comments

4 years agoPropagate `types.err` in locals further to avoid spurious knock-down errors
Esteban Küber [Sat, 21 Sep 2019 23:31:27 +0000 (16:31 -0700)]
Propagate `types.err` in locals further to avoid spurious knock-down errors

4 years agoInline attribute constructors
Mark Rousskov [Sat, 21 Sep 2019 19:26:15 +0000 (15:26 -0400)]
Inline attribute constructors

4 years agoInline ty_infer
Mark Rousskov [Sat, 21 Sep 2019 19:05:31 +0000 (15:05 -0400)]
Inline ty_infer

4 years agoRemove unused code
Mark Rousskov [Sat, 21 Sep 2019 19:07:28 +0000 (15:07 -0400)]
Remove unused code

4 years agoDo not trigger unreachable lint in async body and Use span labels
Esteban Küber [Sat, 21 Sep 2019 19:33:02 +0000 (12:33 -0700)]
Do not trigger unreachable lint in async body and Use span labels

4 years agoRollup merge of #64664 - matklad:remove-ast-builder, r=Mark-Simulacrum
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:22 +0000 (21:24 +0200)]
Rollup merge of #64664 - matklad:remove-ast-builder, r=Mark-Simulacrum

fully remove AstBuilder

The mentioned Cargo test is fixed in https://github.com/rust-lang/cargo/pull/7210

I think this can be removed now?

4 years agoRollup merge of #64660 - guanqun:unify-errors-for-tuple-struct, r=estebank
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:20 +0000 (21:24 +0200)]
Rollup merge of #64660 - guanqun:unify-errors-for-tuple-struct, r=estebank

unify errors for tuple/struct variants

fix #63983

4 years agoRollup merge of #64635 - gnzlbg:const_fn_ptr, r=oli-obk
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:19 +0000 (21:24 +0200)]
Rollup merge of #64635 - gnzlbg:const_fn_ptr, r=oli-obk

Allow using fn pointers in const fn with unleash miri

This allows using function pointers in const fns  when `-Zunleash-the-miri-within-you` is enabled.

If the call to the `const fn` happens in a `const`-context, the function pointer is required to point to a `const fn`:

```rust
fn non_const_fn() -> i32 { 42 }
const fn const_fn() -> i32 { 42 }
const fn foo(x: fn() -> i32) -> i32 { x() }

let x: i32 = foo(non_const_fn_ptr); // OK
let y: i32 = foo(const_fn_ptr); // OK
const X: i32 = foo(non_const_fn_ptr); // ERROR: `non_const_fn` is not `const fn`
const Y: i32 = foo(const_fn_ptr); // OK
```

r? @oli-obk

4 years agoRollup merge of #64634 - cuviper:llvm-9.0.0, r=alexcrichton
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:17 +0000 (21:24 +0200)]
Rollup merge of #64634 - cuviper:llvm-9.0.0, r=alexcrichton

Update to LLVM 9.0.0

4 years agoRollup merge of #64619 - sam09:fix-63962, r=Centril
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:16 +0000 (21:24 +0200)]
Rollup merge of #64619 - sam09:fix-63962, r=Centril

Fixes #63962. Hint about missing tuple parentheses in patterns

4 years agoRollup merge of #64618 - alexcrichton:improve-dist-output, r=Mark-Simulacrum
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:15 +0000 (21:24 +0200)]
Rollup merge of #64618 - alexcrichton:improve-dist-output, r=Mark-Simulacrum

rustbuild: Improve output of `dist` step

* Pass `/Q` to `iscc` on Windows to supress the thousands of lines of
  output about compressing documentation.
* Print out what's happening before long steps
* Use `timeit` to print out timing information for long-running
  installer assemblies.
* Try to scope output of `Dist ...` to not also encompass actual build steps

4 years agoRollup merge of #64617 - alexcrichton:smaller-msi, r=Mark-Simulacrum
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:13 +0000 (21:24 +0200)]
Rollup merge of #64617 - alexcrichton:smaller-msi, r=Mark-Simulacrum

rustbuild: Turn down compression on msi installers

This is the same as #64615 except applied to our MSI installers. The
same fix is applied effectively bringing these installers in line with
the gz tarball installers, which are about 3x faster to produce locally
and likely much faster to produce on CI.

4 years agoRollup merge of #64615 - alexcrichton:smaller-exe, r=Mark-Simulacrum
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:12 +0000 (21:24 +0200)]
Rollup merge of #64615 - alexcrichton:smaller-exe, r=Mark-Simulacrum

rustbuild: Turn down compression on exe installers

The Windows dist builders are the slowest builders right now, and the
distribution phase of them is enormously slow clocking in at around 20
minutes to build all the related installers. This commit starts to
optimize these by turning down the compression level in the `exe`
installers. These aren't super heavily used so there's no great need for
them to be so ultra-compressed, so let's dial back the compression
parameters to get closer to the rest of our xz archives. This brings the
installer in line with the gz tarball installer locally, and also brings
the compression settings on par with the rest of our xz installers.

4 years agoRollup merge of #63907 - estebank:assoc-type-mismatch, r=oli-obk
Mazdak Farrokhzad [Sat, 21 Sep 2019 19:24:11 +0000 (21:24 +0200)]
Rollup merge of #63907 - estebank:assoc-type-mismatch, r=oli-obk

Add explanation to type mismatch involving type params and assoc types

CC #63711

4 years agoRemove constraints argument from path_all
Mark Rousskov [Sat, 21 Sep 2019 19:01:10 +0000 (15:01 -0400)]
Remove constraints argument from path_all

It was never used

4 years agofully remove AstBuilder
Aleksey Kladov [Sat, 21 Sep 2019 18:33:37 +0000 (21:33 +0300)]
fully remove AstBuilder

The mentioned Cargo test is fixed in https://github.com/rust-lang/cargo/pull/7210

4 years agoFixes #63962. Hint about missing tuple parentheses in patterns
Sam Radhakrishan [Thu, 19 Sep 2019 16:42:05 +0000 (22:12 +0530)]
Fixes #63962. Hint about missing tuple parentheses in patterns

4 years agounify errors for tuple/struct variants
Guanqun Lu [Sat, 21 Sep 2019 15:36:12 +0000 (23:36 +0800)]
unify errors for tuple/struct variants

fix #63983

4 years agorevert error message changes
gnzlbg [Sat, 21 Sep 2019 15:24:42 +0000 (17:24 +0200)]
revert error message changes

4 years agoremove feature
gnzlbg [Sat, 21 Sep 2019 14:09:38 +0000 (16:09 +0200)]
remove feature

4 years agoAuto merge of #64658 - Centril:rollup-9s3raz6, r=Centril
bors [Sat, 21 Sep 2019 14:02:02 +0000 (14:02 +0000)]
Auto merge of #64658 - Centril:rollup-9s3raz6, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #64010 (Stabilize `param_attrs` in Rust 1.39.0)
 - #64136 (Document From trait for LhsExpr in parser)
 - #64342 (factor out pluralisation remains after #64280)
 - #64347 (Add long error explanation for E0312)
 - #64621 (Add Compatibility Notes to RELEASES.md for 1.38.0)
 - #64632 (remove the extra comma after the match arm)
 - #64640 (No home directory on vxWorks)
 - #64641 (Exempt extern "Rust" from improper_ctypes)
 - #64642 (Fix the span used to suggest avoiding for-loop moves)

Failed merges:

r? @ghost

4 years agoRollup merge of #64642 - cuviper:move-for-loop-snippet, r=varkor
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:35 +0000 (16:01 +0200)]
Rollup merge of #64642 - cuviper:move-for-loop-snippet, r=varkor

Fix the span used to suggest avoiding for-loop moves

It was using the snippet from the "use" span, which often renders the
same, but with closures that snippet is on the start of the closure
where the value is captured. We should be using the snippet from the
span where it was moved into the `for` loop, which is `move_span`.

Fixes #64559.

4 years agoRollup merge of #64641 - cuviper:extern-rust-ctypes, r=estebank
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:34 +0000 (16:01 +0200)]
Rollup merge of #64641 - cuviper:extern-rust-ctypes, r=estebank

Exempt extern "Rust" from improper_ctypes

It should be fine for Rust ABIs to involve any Rust type.

Fixes #64593.

4 years agoRollup merge of #64640 - Wind-River:master, r=alexcrichton
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:32 +0000 (16:01 +0200)]
Rollup merge of #64640 - Wind-River:master, r=alexcrichton

No home directory on vxWorks

r? @alexcrichton

4 years agoRollup merge of #64632 - guanqun:patch-1, r=jonas-schievink
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:31 +0000 (16:01 +0200)]
Rollup merge of #64632 - guanqun:patch-1, r=jonas-schievink

remove the extra comma after the match arm

This would follow the same coding style as all the other match arms in this file.

4 years agoRollup merge of #64621 - XAMPPRocky:relnotes, r=Mark-Simulacrum
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:30 +0000 (16:01 +0200)]
Rollup merge of #64621 - XAMPPRocky:relnotes, r=Mark-Simulacrum

Add Compatibility Notes to RELEASES.md for 1.38.0

### [Rendered](https://github.com/XAMPPRocky/rust/blob/relnotes/RELEASES.md)

r? @Mark-Simulacrum

4 years agoRollup merge of #64347 - GuillaumeGomez:E0312, r=oli-obk
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:28 +0000 (16:01 +0200)]
Rollup merge of #64347 - GuillaumeGomez:E0312, r=oli-obk

Add long error explanation for E0312

Part of #61137.

4 years agoRollup merge of #64342 - glorv:master, r=varkor
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:26 +0000 (16:01 +0200)]
Rollup merge of #64342 - glorv:master, r=varkor

factor out pluralisation remains after #64280

there are two case that doesn't not match the original macro pattern at [here](https://github.com/rust-lang/rust/blob/master/src/librustc_lint/unused.rs#L146) and [here](https://github.com/rust-lang/rust/blob/master/src/libsyntax/parse/diagnostics.rs#L539) as the provided param is already a bool or the check condition is not `x != 1`, so I change the macro accept a boolean expr instead of number to fit all the cases.

@Centril  please review

Fixes #64238.

4 years agoRollup merge of #64136 - crgl:doc-from-parser-lhs, r=Centril
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:25 +0000 (16:01 +0200)]
Rollup merge of #64136 - crgl:doc-from-parser-lhs, r=Centril

Document From trait for LhsExpr in parser

Add doc for From trait for converting P<Expr> and Option<ThinVec<Attribute>> to LhsExpr

As part of issue rust-lang#51430 (cc @skade).

Both of these should just be moving an address and setting a discriminant in an enum. The main thing I'm not sure about is whether it's worth documenting the branch in the From<Option<ThinVec<Attribute>>. As far as I can tell it doesn't seem like it is optimized away (although if the discriminant happened to work out you could just copy the pointer and the discriminant which might be cheaper, but that's not guaranteed). So it seems like if it's being called often, it's doubling the number of possible branch mispredictions on this Option, which could be a significant cost.

Let me know if there's anything that needs fixing and I'll get to it as soon as possible!

4 years agoRollup merge of #64010 - c410-f3r:stabilize-attrs-fn, r=Centril
Mazdak Farrokhzad [Sat, 21 Sep 2019 14:01:23 +0000 (16:01 +0200)]
Rollup merge of #64010 - c410-f3r:stabilize-attrs-fn, r=Centril

Stabilize `param_attrs` in Rust 1.39.0

# Stabilization proposal

I propose that we stabilize `#![feature(param_attrs)]`.

Tracking issue: #60406
Version: 1.39 (2019-09-26 => beta, 2019-11-07 => stable).

## What is stabilized

It is now possible to add outer attributes like `#[cfg(..)]` on formal parameters of functions, closures, and function pointer types. For example:

```rust
fn len(
    #[cfg(windows)] slice: &[u16],
    #[cfg(not(windows))] slice: &[u8],
) -> usize {
    slice.len()
}
```

## What isn't stabilized

* Documentation comments like `/// Doc` on parameters.

* Code expansion of a user-defined `#[proc_macro_attribute]` macro used on parameters.

* Built-in attributes other than `cfg`, `cfg_attr`, `allow`, `warn`, `deny`, and `forbid`. Currently, only the lints `unused_variables` and `unused_mut` have effect and may be controlled on parameters.

## Motivation

The chief motivations for stabilizing `param_attrs` include:

* Finer conditional compilation with `#[cfg(..)]` and linting control of variables.

* Richer macro DSLs created by users.

* External tools and compiler internals can take advantage of the additional information that the parameters provide.

For more examples, see the [RFC][rfc motivation].

## Reference guide

In the grammar of function and function pointer, the grammar of variadic tails (`...`) and parameters are changed respectively from:

```rust
FnParam = { pat:Pat ":" }? ty:Type;
VaradicTail = "...";
```

into:

```rust
FnParam = OuterAttr* { pat:Pat ":" }? ty:Type;
VaradicTail = OuterAttr* "...";
```

The grammar of a closure parameter is changed from:

```rust
ClosureParam = pat:Pat { ":" ty:Type }?;
```

into:

```rust
ClosureParam = OuterAttr* pat:Pat { ":" ty:Type }?;
```

More generally, where there's a list of formal (value) parameters separated or terminated by `,` and delimited by `(` and `)`. Each parameter in that list may optionally be prefixed by `OuterAttr+`.

Note that in all cases, `OuterAttr*` applies to the whole parameter and not just the pattern. This distinction matters in pretty printing and in turn for macros.

## History

* On 2018-10-15, @Robbepop proposes [RFC 2565][rfc], "Attributes in formal function parameter position".

* On 2019-04-30, [RFC 2565][rfc] is merged and the tracking issue is made.

* On 2019-06-12, a partial implementation was completed. The implementation was done in [#60669][60669] by @c410-f3r and the PR was reviewed by @petrochenkov and @Centril.

* On 2019-07-29, [#61238][61238] was fixed in [#61856][61856]. The issue fixed was that lint attributes on function args had no effect. The PR was written by @c410-f3r and reviewed by @matthewjasper, @petrochenkov, and @oli-obk.

* On 2019-08-02, a bug [#63210][63210] was filed wherein the attributes on formal parameters would not be passed to macros. The issue was about forgetting to call the relevant method in `fn print_arg` in the pretty printer. In [#63212][63212], written by @Centril on 2019-08-02 and reviewed by @davidtwco, the issue aforementioned was fixed.

* This PR stabilizes `param_attrs`.

## Tests

* [On Rust 2018, attributes aren't permitted on function parameters without a pattern in trait definitions.](https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2565-param-attrs/param-attrs-2018.rs)

* [All attributes that should be allowed. This includes `cfg`, `cfg_attr`, and lints check attributes.](https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2565-param-attrs/param-attrs-allowed.rs)

* [Built-in attributes, which should be forbidden, e.g., `#[test]`, are.](https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2565-param-attrs/param-attrs-builtin-attrs.rs)

* [`cfg` and `cfg_attr` are properly evaluated.](https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2565-param-attrs/param-attrs-cfg.rs)

* [`unused_mut`](https://github.com/rust-lang/rust/blob/46f405ec4d7c6bf16fc2eaafe7541019f1da2996/src/test/ui/rfc-2565-param-attrs/param-attrs-cfg.rs) and [`unused_variables`](https://github.com/rust-lang/rust/blob/master/src/test/ui/lint/lint-unused-variables.rs) are correctly applied to parameter patterns.

* [Pretty printing takes formal parameter attributes into account.](https://github.com/rust-lang/rust/blob/master/src/test/ui/rfc-2565-param-attrs/param-attrs-pretty.rs)

## Possible future work

* Custom attributes inside function parameters aren't currently supported but it is something being worked on internally.

* Since documentation comments are syntactic sugar for `#[doc(...)]`, it is possible to allow literal `/// Foo` comments on function parameters.

[rfc motivation]: https://github.com/rust-lang/rfcs/blob/master/text/2565-formal-function-parameter-attributes.md#motivation
[rfc]: https://github.com/rust-lang/rfcs/pull/2565
[60669]: https://github.com/rust-lang/rust/pull/60669
[61856]: https://github.com/rust-lang/rust/pull/61856
[63210]: https://github.com/rust-lang/rust/issues/63210
[61238]: https://github.com/rust-lang/rust/issues/61238
[63212]: https://github.com/rust-lang/rust/pull/63212

This report is a collaborative work with @Centril.

4 years agoAuto merge of #64047 - timvermeulen:cmp_min_max_by, r=cuviper
bors [Sat, 21 Sep 2019 04:21:25 +0000 (04:21 +0000)]
Auto merge of #64047 - timvermeulen:cmp_min_max_by, r=cuviper

Add `cmp::{min_by, min_by_key, max_by, max_by_key}`

This adds the following functions to `core::cmp`:

- `min_by`
- `min_by_key`
- `max_by`
- `max_by_key`

`min_by` and `max_by` are somewhat trivial to implement, but not entirely because `min_by` returns the first value in case the two are equal (and `max_by` the second). `min` and `max` can be implemented in terms of `min_by` and `max_by`, but not as easily the other way around.

To give an example of why I think these functions could be useful: the `Iterator::{min_by, min_by_key, max_by, max_by_key}` methods all currently hard-code the behavior mentioned above which is an ever so small duplication of logic. If we delegate them to `cmp::{min_by, max_by}` methods instead, we get the correct behavior for free. (edit: this is now included in the PR)

I added `min_by_key` / `max_by_key` for consistency's sake but I wouldn't mind removing them. I don't have a particular use case in mind for them, and `min_by` / `max_by` seem to be more useful.

Tracking issue: #64460

4 years agoMerge pull request #25 from Wind-River/stat
n-salim [Fri, 20 Sep 2019 23:20:29 +0000 (16:20 -0700)]
Merge pull request #25 from Wind-River/stat

rust stat should call libc stat

4 years agoFix the span used to suggest avoiding for-loop moves
Josh Stone [Fri, 20 Sep 2019 23:06:32 +0000 (16:06 -0700)]
Fix the span used to suggest avoiding for-loop moves

It was using the snippet from the "use" span, which often renders the
same, but with closures that snippet is on the start of the closure
where the value is captured. We should be using the snippet from the
span where it was moved into the `for` loop, which is `move_span`.

4 years agorust stat should call libc stat
Baoshan Pang [Fri, 20 Sep 2019 22:47:13 +0000 (15:47 -0700)]
rust stat should call libc stat

4 years agoExempt extern "Rust" from improper_ctypes
Josh Stone [Fri, 20 Sep 2019 22:39:34 +0000 (15:39 -0700)]
Exempt extern "Rust" from improper_ctypes

It should be fine for Rust ABIs to involve any Rust type.

4 years agoMerge pull request #24 from Wind-River/home_directory
n-salim [Fri, 20 Sep 2019 21:32:11 +0000 (14:32 -0700)]
Merge pull request #24 from Wind-River/home_directory

No home directory on vxWorks

4 years agoNo home directory on vxWorks
Baoshan Pang [Fri, 20 Sep 2019 20:25:57 +0000 (13:25 -0700)]
No home directory on vxWorks

4 years agoAllow using fn pointers in const fn behind const_fn_ptr gate
gnzlbg [Fri, 20 Sep 2019 16:39:13 +0000 (18:39 +0200)]
Allow using fn pointers in const fn behind const_fn_ptr gate

4 years agoUpdate to LLVM 9.0.0
Josh Stone [Fri, 20 Sep 2019 16:36:03 +0000 (09:36 -0700)]
Update to LLVM 9.0.0

4 years agoremove the extra comma after the match arm
guanqun [Fri, 20 Sep 2019 16:22:43 +0000 (00:22 +0800)]
remove the extra comma after the match arm

This would follow the same coding style as all the other match arms in this file.

4 years agoMerge pull request #23 from rust-lang/master
n-salim [Fri, 20 Sep 2019 15:47:32 +0000 (08:47 -0700)]
Merge pull request #23 from rust-lang/master

Sync to rust-lang/rust branch master

4 years agoAuto merge of #64584 - nikomatsakis:issue-64477-generator-capture-types, r=eddyb
bors [Fri, 20 Sep 2019 15:35:51 +0000 (15:35 +0000)]
Auto merge of #64584 - nikomatsakis:issue-64477-generator-capture-types, r=eddyb

record fewer adjustment types in generator witnesses, avoid spurious drops in MIR construction

Don't record all intermediate adjustment types -- That's way more than is needed, and winds up recording types that will never appear in MIR.

Note: I'm like 90% sure that this logic is correct, but this stuff is subtle and can be hard to keep straight.  However, the risk of this PR is fairly low -- if we miss types here, I believe the most common outcome is an ICE.

This fixes the original issue cited by #64477, but I'm leaving the issue open for now since there may be other cases we can detect and improve in a targeted way.

r? @Zoxc

4 years agoAuto merge of #64553 - alexcrichton:windows-bash-install-scripts, r=Mark-Simulacrum
bors [Fri, 20 Sep 2019 11:38:56 +0000 (11:38 +0000)]
Auto merge of #64553 - alexcrichton:windows-bash-install-scripts, r=Mark-Simulacrum

azure: Convert Windows installations scripts to `bash`

Looks like `script`, which uses `cmd.exe`, doesn't have fail-fast
behavior and if a leading command fails the script doesn't actually fail
so long as the last command succeeds. We instead want the opposite
behavior where if any step fails the whole script fails.

I don't really know `cmd.exe` that well, nor powershell, so I've opted
to move everything to `bash` which should be a good common denominator
amongst all platforms to work with. Additionally I know that `set -e`
works to cause scripts to fail fast.

Closes #64551

4 years agoAuto merge of #64498 - estebank:point-at-arg, r=Centril
bors [Fri, 20 Sep 2019 07:53:23 +0000 (07:53 +0000)]
Auto merge of #64498 - estebank:point-at-arg, r=Centril

When possible point at argument causing item obligation failure

Fix https://github.com/rust-lang/rust/issues/41781, fix https://github.com/rust-lang/rust/issues/42855, fix https://github.com/rust-lang/rust/issues/46658, fix https://github.com/rust-lang/rust/issues/48099, fix https://github.com/rust-lang/rust/issues/63143.

4 years agoAuto merge of #64576 - pietroalbini:split-aws-tokens, r=alexcrichton
bors [Fri, 20 Sep 2019 02:43:06 +0000 (02:43 +0000)]
Auto merge of #64576 - pietroalbini:split-aws-tokens, r=alexcrichton

ci: split aws credentials in two separate users with scoped perms

This commit changes our CI to use two separate IAM users to authenticate with AWS:

* `ci--rust-lang--rust--sccache`: has access to the `rust-lang-ci-sccache2` S3 bucket and its credentials are available during the whole build.
* `ci--rust-lang--rust--upload`: has access to the `rust-lang-ci2` S3 bucket and its credentials are available just during the upload step.

The new tokens are available in the `prod-credentials` library.

r? @alexcrichton

4 years agoAuto merge of #64616 - Centril:rollup-du6728f, r=Centril
bors [Thu, 19 Sep 2019 22:41:46 +0000 (22:41 +0000)]
Auto merge of #64616 - Centril:rollup-du6728f, r=Centril

Rollup of 6 pull requests

Successful merges:

 - #63448 (fix Miri discriminant handling)
 - #64592 (Point at original span when emitting unreachable lint)
 - #64601 (Fix backticks in documentation)
 - #64606 (Remove unnecessary `mut` in doc example)
 - #64611 (rustbuild: Don't package libstd twice)
 - #64613 (rustbuild: Copy crate doc files fewer times)

Failed merges:

r? @ghost

4 years agoadd comments
Esteban Küber [Thu, 19 Sep 2019 21:52:38 +0000 (14:52 -0700)]
add comments

4 years agoAdd Compatibility Notes to RELEASES.md for 1.38.0
Erin Power [Thu, 19 Sep 2019 19:53:40 +0000 (21:53 +0200)]
Add Compatibility Notes to RELEASES.md for 1.38.0

4 years agoadd a mir-opt test that we don't add the spurious drop
Niko Matsakis [Thu, 19 Sep 2019 20:12:48 +0000 (16:12 -0400)]
add a mir-opt test that we don't add the spurious drop

4 years agoremove duplicated code
Esteban Küber [Thu, 19 Sep 2019 17:16:48 +0000 (10:16 -0700)]
remove duplicated code

4 years agoreview comments
Esteban Küber [Thu, 19 Sep 2019 00:33:15 +0000 (17:33 -0700)]
review comments

4 years agoreview comments
Esteban Küber [Wed, 18 Sep 2019 19:05:37 +0000 (12:05 -0700)]
review comments

4 years agoWhen possible, suggest fn call
Esteban Küber [Mon, 16 Sep 2019 22:54:31 +0000 (15:54 -0700)]
When possible, suggest fn call

4 years agoReview comment: move to its own method
Esteban Küber [Mon, 16 Sep 2019 17:15:17 +0000 (10:15 -0700)]
Review comment: move to its own method

4 years agoIgnore obligations coming from desugared call spans
Esteban Küber [Mon, 16 Sep 2019 15:49:53 +0000 (08:49 -0700)]
Ignore obligations coming from desugared call spans

4 years agoWhen possible point at argument causing item obligation failure
Esteban Küber [Mon, 16 Sep 2019 04:58:20 +0000 (21:58 -0700)]
When possible point at argument causing item obligation failure

4 years agofix mir-opt tests
Niko Matsakis [Thu, 19 Sep 2019 18:30:05 +0000 (14:30 -0400)]
fix mir-opt tests

4 years agorustbuild: Improve output of `dist` step
Alex Crichton [Thu, 19 Sep 2019 18:22:55 +0000 (11:22 -0700)]
rustbuild: Improve output of `dist` step

* Pass `/Q` to `iscc` on Windows to supress the thousands of lines of
  output about compressing documentation.
* Print out what's happening before long steps
* Use `timeit` to print out timing information for long-running
  installer assemblies.

4 years agowhoops, only trigger this path for avoiding DROP, not StorageDead
Niko Matsakis [Thu, 19 Sep 2019 17:42:46 +0000 (13:42 -0400)]
whoops, only trigger this path for avoiding DROP, not StorageDead

4 years agofix tests for 2018
Niko Matsakis [Thu, 19 Sep 2019 17:15:54 +0000 (13:15 -0400)]
fix tests for 2018

4 years agorustbuild: Turn down compression on msi installers
Alex Crichton [Thu, 19 Sep 2019 16:24:42 +0000 (09:24 -0700)]
rustbuild: Turn down compression on msi installers

This is the same as #64615 except applied to our MSI installers. The
same fix is applied effectively bringing these installers in line with
the gz tarball installers, which are about 3x faster to produce locally
and likely much faster to produce on CI.

4 years agoRollup merge of #64613 - alexcrichton:less-doc-copies, r=Mark-Simulacrum
Mazdak Farrokhzad [Thu, 19 Sep 2019 16:31:44 +0000 (18:31 +0200)]
Rollup merge of #64613 - alexcrichton:less-doc-copies, r=Mark-Simulacrum

rustbuild: Copy crate doc files fewer times

Previously when building documentation for the standard library we'd
copy all the files 5 times, and these files include libcore/libstd docs
which are huge! This commit instead only copies the files after rustdoc
has been run for each crate, reducing the number of redundant copies
we're making.

4 years agoRollup merge of #64611 - alexcrichton:no-libstd-twice, r=Mark-Simulacrum
Mazdak Farrokhzad [Thu, 19 Sep 2019 16:31:43 +0000 (18:31 +0200)]
Rollup merge of #64611 - alexcrichton:no-libstd-twice, r=Mark-Simulacrum

rustbuild: Don't package libstd twice

Looks like the packaging step for the standard library was happening
twice on CI, but it only needs to happen once! The `Analysis` packaging
step accidentally packaged `Std` instead of relying on compiling `Std`,
which meant that we ended up packaging it twice erroneously.

4 years agoRollup merge of #64606 - adrianheine:patch-1, r=sfackler
Mazdak Farrokhzad [Thu, 19 Sep 2019 16:31:41 +0000 (18:31 +0200)]
Rollup merge of #64606 - adrianheine:patch-1, r=sfackler

Remove unnecessary `mut` in doc example

4 years agoRollup merge of #64601 - grovesNL:two-backticks, r=jonas-schievink
Mazdak Farrokhzad [Thu, 19 Sep 2019 16:31:40 +0000 (18:31 +0200)]
Rollup merge of #64601 - grovesNL:two-backticks, r=jonas-schievink

Fix backticks in documentation

Fix a few typos in comments/documentation where backticks were doubled-up on one side.

4 years agoRollup merge of #64592 - Aaron1011:feature/unreachable-span, r=Centril
Mazdak Farrokhzad [Thu, 19 Sep 2019 16:31:39 +0000 (18:31 +0200)]
Rollup merge of #64592 - Aaron1011:feature/unreachable-span, r=Centril

Point at original span when emitting unreachable lint

Fixes #64590

When we emit an 'unreachable' lint, we now add a note pointing at the
expression that actually causes the code to be unreachable (e.g.
`return`, `break`, `panic`).

This is especially useful when macros are involved, since a diverging
expression might be hidden inside of a macro invocation.