Commit Graph

127351 Commits

Author SHA1 Message Date
SlightlyOutOfPhase
4284aad8fc
Fix formatting for tidy 2020-09-11 22:57:20 -04:00
SlightlyOutOfPhase
0439556eb0
Check basic constness before unstable constness 2020-09-11 22:39:16 -04:00
bors
94a7ea271f Auto merge of #74328 - yoshuawuyts:stabilize-future-readiness-fns, r=sfackler
Stabilize core::future::{pending,ready}

This PR stabilizes `core::future::{pending,ready}`, tracking issue https://github.com/rust-lang/rust/issues/70921.

## Motivation

These functions have been on nightly for three months now, and have lived as part of the futures ecosystem for several years. In that time these functions have undergone several iterations, with [the `async-std` impls](https://docs.rs/async-std/1.6.2/async_std/future/index.html) probably diverging the most (using `async fn`, which in hindsight was a mistake).

It seems the space around these functions has been _thoroughly_ explored over the last couple of years, and the ecosystem has settled on the current shape of the functions. It seems highly unlikely we'd want to make any further changes to these functions, so I propose we stabilize.

## Implementation notes

This stabilization PR was fairly straightforward; this feature has already thoroughly been reviewed by the libs team already in https://github.com/rust-lang/rust/pull/70834. So all this PR does is remove the feature gate.
2020-09-12 02:13:28 +00:00
SlightlyOutOfPhase
950006711d
Use is_unstable_const_fn where appropriate 2020-09-11 21:40:02 -04:00
Joshua Nelson
85ab152be7 Update bootstrap readme
- Reflect changes in x.py defaults
- Remove recommendation to use nightly for incremental; it works fine on
beta
- Remove note that incremental chooses stage 1 by default; stage 1 is
already the default
- Update Discord -> Zulip
2020-09-11 21:00:40 -04:00
Esteban Küber
dc53cfea7e Add test cases and address review comments 2020-09-11 17:05:18 -07:00
Esteban Küber
5d2a935e6c Make suggestion more complete 2020-09-11 17:05:18 -07:00
Esteban Küber
ff297fafbf Make suggestion have a more targetted underline 2020-09-11 17:05:18 -07:00
Esteban Küber
fd9133b9c3 Suggest boxed trait objects in tail match and if expressions
When encountering a `match` or `if` as a tail expression where the
different arms do not have the same type *and* the return type of that
`fn` is an `impl Trait`, check whether those arms can implement `Trait`
and if so, suggest using boxed trait objects.
2020-09-11 17:05:18 -07:00
Esteban Küber
c8ee33714b Use structured suggestion for impl T to Box<dyn T> 2020-09-11 17:05:18 -07:00
bors
12c10e34a4 Auto merge of #73951 - pickfire:liballoc-intoiter, r=Mark-Simulacrum
Liballoc intoiter refactor
2020-09-11 23:52:03 +00:00
Gus Wynn
5e126c944b better diag when const ranges are used in patterns 2020-09-11 15:02:15 -07:00
bors
99111606fc Auto merge of #73761 - rijenkii:master, r=KodrAus
Add `peek` and `peek_from` to `UnixStream` and `UnixDatagram`

This is my first PR, so I'm sure I've done some things wrong.

This PR:
  * adds `peek` function to `UnixStream`;
  * adds `peek` and `peek_from` to `UnixDatagram`;
  * moves `UnixDatagram::recv_from` implementation to a private function `recv_from_flags`, as `peek_from` uses the same code, just with different flags.

I've taken the documentation from `TcpStream` and `UdpStream`, so it may or may not make sense (I'm bad with english words).
Also, I'm not sure what I should write in the `unstable` attribute, so I've made up the name and set the issue to "none".

Closes #68565.
2020-09-11 21:54:31 +00:00
Guillaume Gomez
bb9ce7cb01 Add missing examples on binary core traits 2020-09-11 23:43:37 +02:00
Esteban Küber
21f8326cec Provide suggestion for missing fields in patterns 2020-09-11 13:47:33 -07:00
bors
bc57bd8c7e Auto merge of #76499 - guswynn:priv_des, r=petrochenkov
Give better diagnostic when using a private tuple struct constructor

Fixes #75907

Some notes:
1. This required some deep changes, including removing a Copy impl for PatKind. If some tests fail, I would still appreciate review on the overall approach
2. this only works with basic patterns (no wildcards for example), and fails if there is any problems getting the visibility of the fields (i am not sure what the failure that can happen in resolve_visibility_speculative, but we check the length of our fields in both cases against each other, so if anything goes wrong, we fall back to the worse error. This could be extended to more patterns
3. this does not yet deal with #75906, but I believe it will be similar
4. let me know if you want more tests
5. doesn't yet at the suggestion that `@yoshuawuyts` suggested at the end of their issue, but that could be added relatively easily (i believe)
2020-09-11 20:01:31 +00:00
Mara Bos
14cc17759d Improve ineffective_unstable_trait_impl error message. 2020-09-11 21:42:28 +02:00
Joshua Nelson
5ea3eaf237 Name the current module
'not in scope' -> 'not in `module`'
2020-09-11 14:52:45 -04:00
Gus Wynn
c63f634a4b Give better diagnostic when using a private tuple struct constructor 2020-09-11 11:36:42 -07:00
bors
141bb23be8 Auto merge of #76415 - Mark-Simulacrum:bootstrap-cross-compilation, r=alexcrichton
rustbuild: avoid trying to inversely cross-compile for build triple from host triples

This changes rustbuild's cross compilation logic to better match what users expect,
particularly, avoiding trying to inverse cross-compile for the build triple from host triples.
That is, if build=A, host=B, target=B, we do not want to try and compile for A from B.
Indeed, the only "known to run" triple when cross-compiling is the build triple A.
When testing for a particular target we need to be able to run binaries compiled for
that target though.

The last commit also modifies the default set of host/target triples to avoid producing
needless artifacts for the build triple:

The new behavior is to respect --host and --target when passed as the *only*
configured triples (no triples are implicitly added). The default for --host is
the build triple, and the default for --target is the host triple(s), either
configured or the default build triple.

Fixes #76333

r? `@alexcrichton` if possible, otherwise we'll need to hunt down a reviewer
2020-09-11 18:10:44 +00:00
Joshua Nelson
b2a5a7a8c2 Remove unnecessary clone 2020-09-11 13:49:45 -04:00
Joshua Nelson
57250eff55 Use span_label instead of note
This puts the error message closer to the link, making it easier to see
what went wrong.
2020-09-11 13:42:56 -04:00
Joshua Nelson
c213c68500 box ResolutionFailures on the heap
This decreases the size of the `Result`s being returned,
improving performance in the common case.
2020-09-11 13:29:55 -04:00
Thomas de Zeeuw
c394624471 Ignore unnecessary unsafe warnings
This is a work-around for a libc issue:
https://github.com/rust-lang/libc/issues/1888.
2020-09-11 19:12:06 +02:00
Gus Wynn
0be66d7f30 just max_level_info 2020-09-11 09:37:51 -07:00
Gus Wynn
56f5c7f95f comments + add max_level_info so false works with debug_assertions on 2020-09-11 09:01:31 -07:00
Aurélien Deharbe
62068a59ee repairing broken error message and rustfix application for the new test
case
2020-09-11 17:31:52 +02:00
rijenkii
64b8fd7920 Add peek and peek_from to UnixStream and UnixDatagram 2020-09-11 20:07:08 +07:00
Mark Rousskov
78125ec6b3 Stop implicitly appending triples to config.toml hosts and targets
Previously, the CLI --target/--host definitions and configured options differed
in their effect: when setting these on the CLI, only the passed triples would be
compiled for, while in config.toml we would also compile for the build triple
and any host triples. This is needlessly confusing; users expect --target and
--host to be identical to editing the configuration file.

The new behavior is to respect --host and --target when passed as the *only*
configured triples (no triples are implicitly added). The default for --host is
the build triple, and the default for --target is the host triple(s), either
configured or the default build triple.
2020-09-11 08:59:01 -04:00
Mark Rousskov
b4eb099261 Verify we compile std without involving a b host compiler 2020-09-11 08:59:01 -04:00
Mark Rousskov
3193d52a21 Remove host parameter from step configurations
rustc is a natively cross-compiling compiler, and generally none of our steps
should care whether they are using a compiler built of triple A or B, just the
--target directive being passed to the running compiler. e.g., when building for
some target C, you don't generally want to build two stds: one with a host A
compiler and the other with a host B compiler. Just one std is sufficient.
2020-09-11 08:59:01 -04:00
carbotaniuman
b729368d4e Address review comments 2020-09-11 07:25:28 -05:00
Aurélien Deharbe
f9059a41b4 add non-regression test for issue #76597 2020-09-11 13:58:03 +02:00
Mara Bos
1c1bfba84a Add test for unstable trait impl lint. 2020-09-11 13:36:45 +02:00
Mara Bos
471fb622aa Allow unstable From impl for [Raw]Waker. 2020-09-11 13:36:45 +02:00
Mara Bos
89fb34fea7 Turn unstable trait impl error into a lint, so it can be disabled. 2020-09-11 13:36:42 +02:00
Mara Bos
cf8e5d1bc9 Mark Error impl for LayoutErr as stable.
This impl was effectively stable. #[unstable] had no effect here,
since both Error and LayoutErr were already stable.

This effectively became stable as soon as LayoutErr became stable, which
was in 1.28.0.
2020-09-11 13:36:15 +02:00
Mara Bos
f6fbf669ab Mark RefUnwindSafe impls for stable atomic types as stable.
These impls were effectively stable. #[unstable] had no effect here,
since both RefUnwindSafe and these types were already stable.

These effectively became stable as soon as the types became stable,
which was in 1.34.0.
2020-09-11 13:36:15 +02:00
Mara Bos
e5c645f40e Turn useless #[unstable] attributes into errors. 2020-09-11 13:36:15 +02:00
Mara Bos
1854f8b3d8 Warn for #[unstable] on trait impls when it has no effect. 2020-09-11 13:36:15 +02:00
bors
d778203da2 Auto merge of #76573 - Mark-Simulacrum:bootstrap-with-external-llvm, r=alexcrichton
Only copy LLVM into rust-dev with internal LLVM

This avoids needing to figure out where to locate each of the components with an
external LLVM. This component isn't manifested for rustup consumption and
generally shouldn't matter for anyone except Rust's CI, so it is fine for it to not be
complete elsewhere.

Fixes #76572.

r? `@alexcrichton`
2020-09-11 11:16:33 +00:00
Hameer Abbasi
5e188f5803 Add revisions to const generic type-dependent UI tests. 2020-09-11 11:48:44 +02:00
Hameer Abbasi
9abc6bd28d Add revisions to const generic const_evaluatable_checked tests. 2020-09-11 11:42:32 +02:00
Aurélien Deharbe
439b766161 replacing sub's that can wrap by saturating_sub's 2020-09-11 11:11:11 +02:00
bors
a7425476e8 Auto merge of #75611 - JulianKnodt:cg_enum_err, r=lcnr
Add help note when using type in place of const

This adds a small help note when it might be possible that wrapping a parameter in braces might resolve the issue of having a type where a const was expected.

Currently, I am displaying the `HirId`, and I'm not particularly sure where to get the currently displayed path(?).

r? `@lcnr`
2020-09-11 08:40:07 +00:00
bors
f5b7dd8181 Auto merge of #76381 - petrochenkov:nomingwcomp, r=Mark-Simulacrum
rustbuild: Do not use `rust-mingw` component when bootstrapping windows-gnu targets

Addresses https://github.com/rust-lang/rust/pull/76326#issuecomment-687273473 (ancient `x86_64-w64-mingw32-gcc` is selected as a linker wrapper, which is not usable in `use_lld=true` mode).

Perhaps the comment about incompatible mingw was true in the past, but many things changed since then.
With this change I was able to build everything successfully locally using a newer mingw toolchain, if it passes through the older toolchain on CI, then it should be good, I think.
2020-09-11 06:36:43 +00:00
bors
94b4de0e07 Auto merge of #75800 - Aaron1011:feature/full-nt-tokens, r=petrochenkov
Attach tokens to all AST types used in `Nonterminal`

We perform token capturing when we have outer attributes (for nonterminals that support attributes - e.g. `Stmt`), or when we parse a `Nonterminal` for a `macro_rules!` argument. The full list of `Nonterminals` affected by this PR is:

* `NtBlock`
* `NtStmt`
* `NtTy`
* `NtMeta`
* `NtPath`
* `NtVis`
* `NtLiteral`

Of these nonterminals, only `NtStmt` and `NtLiteral` (which is actually just an `Expr`), support outer attributes - the rest only ever have token capturing perform when they match a `macro_rules!` argument.

This makes progress towards solving https://github.com/rust-lang/rust/issues/43081 - we now collect tokens for everything that might need them. However, we still need to handle `#[cfg]`, inner attributes, and misc pretty-printing issues (e.g. #75734)

I've separated the changes into (mostly) independent commits, which could be split into individual PRs for each `Nonterminal` variant. The purpose of having them all in one PR is to do a single Crater run for all of them.

Most of the changes in this PR are trivial (adding `tokens: None` everywhere we construct the various AST structs). The significant changes are:

* `ast::Visibility` is changed from `type Visibility = Spanned<VisibilityKind>` to a `struct Visibility { kind, span, tokens }`.
* `maybe_collect_tokens` is made generic, and used for both `ast::Expr` and `ast::Stmt`.
* Some of the statement-parsing functions are refactored so that we can capture the trailing semicolon.
* `Nonterminal` and `Expr` both grew by 8 bytes, as some of the structs which are stored inline (rather than behind a `P`) now have an `Option<TokenStream>` field. Hopefully the performance impact of doing this is negligible.
2020-09-11 02:35:01 +00:00
Christiaan Dirkx
954361a3d4 Update std::os module documentation.
Adds missing descriptions for the modules std::os::linux::fs and std::os::windows::io.
Also adds punctuation for consistency with other descriptions.
2020-09-11 04:05:19 +02:00
Aaron Hill
d18b4bb7a7
Note when a a move/borrow error is caused by a deref coercion
Fixes #73268

When a deref coercion occurs, we may end up with a move error if the
base value has been partially moved out of. However, we do not indicate
anywhere that a deref coercion is occuring, resulting in an error
message with a confusing span.

This PR adds an explicit note to move errors when a deref coercion is
involved. We mention the name of the type that the deref-coercion
resolved to, as well as the `Deref::Target` associated type being used.
2020-09-10 20:56:20 -04:00
Gus Wynn
15aa6f31b9 add debug-logging to config.toml 2020-09-10 16:39:04 -07:00