]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #73648 - poliorcetics:return-keyword, r=joshtriplett
Manish Goregaokar [Fri, 26 Jun 2020 01:00:20 +0000 (18:00 -0700)]
Rollup merge of #73648 - poliorcetics:return-keyword, r=joshtriplett

Document the return keyword

Partial fix of #34601.

This documents the `return` keyword with two short example to explain it is not needed for the last expression in a function and a long example to show its use when interrupting a function execution early.

I did not put a link to the reference since the only link I found was https://doc.rust-lang.org/stable/reference/expressions/return-expr.html#return-expressions.

@rustbot modify labels: T-doc,C-enhancement

4 years agoRollup merge of #73621 - poliorcetics:mut-keyword, r=steveklabnik
Manish Goregaokar [Fri, 26 Jun 2020 01:00:18 +0000 (18:00 -0700)]
Rollup merge of #73621 - poliorcetics:mut-keyword, r=steveklabnik

Document the mut keyword

Partial fix for #34601.

Documentation for the `mut` keyword. I think it's okay for it to be quite short, this is not the book not the reference, but if you find something is missing, do not hesitate to tell me.

4 years agoRollup merge of #73619 - poliorcetics:mod-keyword, r=steveklabnik
Manish Goregaokar [Fri, 26 Jun 2020 01:00:16 +0000 (18:00 -0700)]
Rollup merge of #73619 - poliorcetics:mod-keyword, r=steveklabnik

Document the mod keyword

Partial fix for #34601 .

Documentation for the `mod` keyword.

4 years agoRollup merge of #73581 - GuillaumeGomez:add-0766, r=varkor
Manish Goregaokar [Fri, 26 Jun 2020 01:00:14 +0000 (18:00 -0700)]
Rollup merge of #73581 - GuillaumeGomez:add-0766, r=varkor

Create 0766 error code

4 years agoRollup merge of #73538 - tshepang:fix-example, r=nikomatsakis
Manish Goregaokar [Fri, 26 Jun 2020 01:00:12 +0000 (18:00 -0700)]
Rollup merge of #73538 - tshepang:fix-example, r=nikomatsakis

make commented examples use valid syntax, and be more consistent

4 years agoRollup merge of #73534 - estebank:borrowck-suggestions, r=matthewjasper
Manish Goregaokar [Fri, 26 Jun 2020 01:00:10 +0000 (18:00 -0700)]
Rollup merge of #73534 - estebank:borrowck-suggestions, r=matthewjasper

Provide suggestions for some moved value errors

When encountering an used moved value where the previous move happened
in a `match` or `if let` pattern, suggest using `ref`. Fix #63988.

When encountering a `&mut` value that is used in multiple iterations of
a loop, suggest reborrowing it with `&mut *`. Fix #62112.

4 years agoRollup merge of #73460 - tmandry:variant-lineinfo, r=oli-obk
Manish Goregaokar [Fri, 26 Jun 2020 01:00:08 +0000 (18:00 -0700)]
Rollup merge of #73460 - tmandry:variant-lineinfo, r=oli-obk

Emit line info for generator variants

Debuggers should be able to read a generator / async fn state machine and show the line it's suspended at. Eventually, this could grow into an "async stack trace" feature of sorts. While no debugger support this for Rust today, this PR adds the debuginfo necessary for that support to exist.

[This gist](https://gist.github.com/tmandry/6d7004fa008684f76809208847459f9b) shows the resulting debuginfo for a simple example. Here's a snippet:

```
0x00000986:           DW_TAG_variant
                        DW_AT_discr_value       (0x03)

0x00000988:             DW_TAG_member
                          DW_AT_name    ("3")
                          DW_AT_type    (0x000009bc "Suspend0")
                          DW_AT_decl_file       ("/home/tmandry/code/playground/generator-simple.rs")
                          DW_AT_decl_line       (6)
                          DW_AT_alignment       (8)
                          DW_AT_data_member_location    (0x00)
```

The file and line have been added here. The line currently points to the beginning of the statement containing the yield (or await), because that's what the MIR source info points to for the yield terminator. (We may want to point to the yield or await line specifically, but that can be done independently of this change.)

Debuggers don't know how to use this kind of info yet. However, we're hoping to experiment with adding such support to Fuchsia's debugger. It would be exciting if someone were interested in adding similar to support to gdb/lldb.

r? @oli-obk
cc @eddyb @jonas-schievink

Part of #73524.

4 years agoRollup merge of #73418 - doctorn:variants-intrinsic, r=kennytm
Manish Goregaokar [Fri, 26 Jun 2020 01:00:07 +0000 (18:00 -0700)]
Rollup merge of #73418 - doctorn:variants-intrinsic, r=kennytm

Add unstable `core::mem::variant_count` intrinsic

Adds a new `const fn` intrinsic which can be used to determine the number of variants in an `enum`.

I've shown this to a couple of people and they invariably ask 'why on earth?', but there's actually a very neat use case:

At the moment, if you want to create an opaque array type that's indexed by an `enum` with one element for each variant, you either have to hard-code the number of variants, add a `LENGTH` variant or use a `Vec`, none of which are suitable in general (number of variants could change; pattern matching `LENGTH` becomes frustrating; might not have `alloc`). By including this intrinsic, it becomes possible to write the following:

```rust
#[derive(Copy, Clone)]
enum OpaqueIndex {
    A = 0,
    B,
    C,
}

struct OpaqueVec<T>(Box<[T; std::mem::num_variants::<OpaqueIndex>()]>);

impl<T> std::ops::Index<OpaqueIndex> for OpaqueVec<T> {
    type Output = T;

    fn index(&self, idx: OpaqueIndex) -> &Self::Output {
        &self.0[idx as usize]
    }
}
```

(We even have a use cases for this in `rustc` and I plan to use it to re-implement the lang-items table.)

4 years agoRollup merge of #72770 - crlf0710:mixed_script_confusable, r=Manishearth
Manish Goregaokar [Fri, 26 Jun 2020 01:00:05 +0000 (18:00 -0700)]
Rollup merge of #72770 - crlf0710:mixed_script_confusable, r=Manishearth

Implement mixed script confusable lint.

This implements the mixed script confusable lint defined in RFC 2457.
This is blocked on #72069 and https://github.com/unicode-rs/unicode-security/pull/13, and will need a Cargo.toml version bump after those are resolved.

The lint message warning is sub-optimal for now. We'll need a mechanism to properly output  `AugmentScriptSet` to screen, this is to be added in `unicode-security` crate.

r? @Manishearth

4 years agoRollup merge of #72738 - mati865:self-contained-option, r=petrochenkov
Manish Goregaokar [Fri, 26 Jun 2020 01:00:03 +0000 (18:00 -0700)]
Rollup merge of #72738 - mati865:self-contained-option, r=petrochenkov

Self contained linking option

With objects moved to self-contained directory by https://github.com/rust-lang/rust/pull/72999 we can now add option to control whether to use self-contained on native linkage mode.

4 years agoRollup merge of #72617 - eduardosm:panicking, r=Amanieu
Manish Goregaokar [Fri, 26 Jun 2020 01:00:02 +0000 (18:00 -0700)]
Rollup merge of #72617 - eduardosm:panicking, r=Amanieu

Add a fast path for `std::thread::panicking`.

This is done by adding a global atomic variable (non-TLS) that counts how many threads are panicking. In order to check if the current thread is panicking, this variable is read and, if it is zero, no thread (including the one where `panicking` is being called) is panicking and `panicking` can return `false` immediately without needing to access TLS. If the global counter is not zero, the local counter is accessed from TLS to check if the current thread is panicking.

4 years agoImplement mixed script confusable lint.
Charles Lew [Tue, 23 Jun 2020 11:45:13 +0000 (19:45 +0800)]
Implement mixed script confusable lint.

4 years agoAuto merge of #72717 - poliorcetics:try-from-int-to-nzint, r=dtolnay
bors [Thu, 25 Jun 2020 17:37:02 +0000 (17:37 +0000)]
Auto merge of #72717 - poliorcetics:try-from-int-to-nzint, r=dtolnay

Add TryFrom<{int}> for NonZero{int}

Adds `TryFrom<{int}> for NonZero{int}`.

It uses the existing `NonZero{int}::new()` and `Option::ok_or()` functions, meaning the checks are not repeated.

I also added tests, I tried to follow the convention I saw in the test file.

I also used `#[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")]`, but I have no idea if the feature/version are correctly named or even correct.

4 years agoAuto merge of #73711 - Dylan-DPC:rollup-kzx15of, r=Dylan-DPC
bors [Thu, 25 Jun 2020 12:43:50 +0000 (12:43 +0000)]
Auto merge of #73711 - Dylan-DPC:rollup-kzx15of, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #72700 (`improper_ctypes_definitions` lint)
 - #73516 (Allow dynamic linking for iOS/tvOS targets)
 - #73616 (Liballoc minor hash import tweak)
 - #73634 (Add UI test for issue 73592)
 - #73688 (Document the self keyword)
 - #73698 (Add procedure for prioritization notifications on Zulip)

Failed merges:

r? @ghost

4 years agoUpdate UI test
Guillaume Gomez [Sun, 21 Jun 2020 12:08:06 +0000 (14:08 +0200)]
Update UI test

4 years agoAdd E0766 error for unterminated double quote byte string
Guillaume Gomez [Sun, 21 Jun 2020 12:07:59 +0000 (14:07 +0200)]
Add E0766 error for unterminated double quote byte string

4 years agoRename remaining `fallback` to `self_contained`
Mateusz Mikuła [Thu, 25 Jun 2020 09:15:09 +0000 (11:15 +0200)]
Rename remaining `fallback` to `self_contained`

4 years agoRename get_self_contained_lib_path
Mateusz Mikuła [Mon, 22 Jun 2020 17:56:56 +0000 (19:56 +0200)]
Rename get_self_contained_lib_path

4 years agoAdd unstable rustc option to control self-contained linkage mode
Mateusz Mikuła [Thu, 28 May 2020 17:54:08 +0000 (19:54 +0200)]
Add unstable rustc option to control self-contained linkage mode

4 years agoAuto merge of #72559 - Aaron1011:feature/assoc-lang-items, r=oli-obk
bors [Thu, 25 Jun 2020 08:58:37 +0000 (08:58 +0000)]
Auto merge of #72559 - Aaron1011:feature/assoc-lang-items, r=oli-obk

Implement associated lang items

Fixes #70718

This commit allows making associated items (e.g. associated functions
and types) into lang items via the `#[lang]` attribute. This allows such
items to be accessed directly, rather than by iterating over the parent
item's associated items.

I've added `FnOnce::Output` as a lang item, and updated one old usage to
use the new lang item. The remaining uses can be updated separately.

4 years agoAdd a compile fail example, binding -> variable, apply suggestions
Alexis Bourget [Thu, 25 Jun 2020 08:05:30 +0000 (10:05 +0200)]
Add a compile fail example, binding -> variable, apply suggestions

4 years agoProvide suggestions for some moved value errors
Esteban Küber [Sat, 20 Jun 2020 05:45:09 +0000 (22:45 -0700)]
Provide suggestions for some moved value errors

When encountering an used moved value where the previous move happened
in a `match` or `if let` pattern, suggest using `ref`. Fix #63988.

When encountering a `&mut` value that is used in multiple iterations of
a loop, suggest reborrowing it with `&mut *`. Fix #62112.

4 years agoRollup merge of #73698 - spastorino:patch-1, r=wesleywiser
Dylan DPC [Thu, 25 Jun 2020 00:03:42 +0000 (02:03 +0200)]
Rollup merge of #73698 - spastorino:patch-1, r=wesleywiser

Add procedure for prioritization notifications on Zulip

This PR was originally opened by @LeSeulArtichaut as #73695, closing that one in favor of this one. Made some slight changes to it but can't push to @LeSeulArtichaut branch.

r? @wesleywiser @rust-lang/wg-prioritization

4 years agoRollup merge of #73688 - poliorcetics:self-keyword, r=joshtriplett
Dylan DPC [Thu, 25 Jun 2020 00:03:40 +0000 (02:03 +0200)]
Rollup merge of #73688 - poliorcetics:self-keyword, r=joshtriplett

Document the self keyword

Partial fix of #34601.

This documents the `self` keyword, adding several examples and a link to the reference.

4 years agoRollup merge of #73634 - nbdd0121:typeck, r=nikomatsakis
Dylan DPC [Thu, 25 Jun 2020 00:03:38 +0000 (02:03 +0200)]
Rollup merge of #73634 - nbdd0121:typeck, r=nikomatsakis

Add UI test for issue 73592

It happens that #72280 accidentally fixed a bug which is later discovered in #73592. This PR adds a UI test to prevent future regression.

Closes #73592

4 years agoRollup merge of #73616 - pickfire:liballoc-hash, r=joshtriplett
Dylan DPC [Thu, 25 Jun 2020 00:03:36 +0000 (02:03 +0200)]
Rollup merge of #73616 - pickfire:liballoc-hash, r=joshtriplett

Liballoc minor hash import tweak

4 years agoRollup merge of #73516 - Crabapple-iOS:feature/apple-dynamic-linking, r=nikomatsakis
Dylan DPC [Thu, 25 Jun 2020 00:03:34 +0000 (02:03 +0200)]
Rollup merge of #73516 - Crabapple-iOS:feature/apple-dynamic-linking, r=nikomatsakis

Allow dynamic linking for iOS/tvOS targets

During the development and testing of the [Crabapple project](https://github.com/Crabapple-iOS/Crabapple), one obstacle was the lack of `cdylib` target support for iOS. Surprisingly, once `dynamic_linking` was enabled for iOS targets, it worked seemingly flawlessly.

I could not find any information on why this was initially or still is disabled.

4 years agoRollup merge of #72700 - davidtwco:issue-66220-improper-ctypes-declarations, r=lcnr...
Dylan DPC [Thu, 25 Jun 2020 00:03:32 +0000 (02:03 +0200)]
Rollup merge of #72700 - davidtwco:issue-66220-improper-ctypes-declarations, r=lcnr,varkor

`improper_ctypes_definitions` lint

Addresses #19834, #66220, and #66373.

This PR takes another attempt at #65134 (reverted in #66378). Instead of modifying the existing `improper_ctypes` lint to consider `extern "C" fn` definitions in addition to `extern "C" {}` declarations, this PR adds a new lint - `improper_ctypes_definitions` - which only applies to `extern "C" fn` definitions.

In addition, the `improper_ctype_definitions` lint differs from `improper_ctypes` by considering `*T` and `&T` (where `T: Sized`) FFI-safe (addressing #66220).

There wasn't a clear consensus in #66220 (where the issues with #65134 were primarily discussed) on the approach to take, but there has [been some discussion in Zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/.2366220.20improper_ctypes.20definitions.20vs.20declarations/near/198903086). I fully expect that we'll want to iterate on this before landing.

cc @varkor + @shepmaster (from #19834) @hanna-kruppe (active in discussing #66220), @SimonSapin (#65134 caused problems for Servo, want to make sure that this PR doesn't)

4 years agoImplement associated lang items
Aaron Hill [Mon, 25 May 2020 03:07:55 +0000 (23:07 -0400)]
Implement associated lang items

Fixes #70718

This commit allows making associated items (e.g. associated functions
and types) into lang items via the `#[lang]` attribute. This allows such
items to be accessed directly, rather than by iterating over the parent
item's associated items.

I've added `FnOnce::Output` as a lang item, and updated one old usage to
use the new lang item. The remaining uses can be updated separately.

4 years agoSplit out async fn and generator test
Tyler Mandry [Wed, 24 Jun 2020 21:17:31 +0000 (14:17 -0700)]
Split out async fn and generator test

This keeps FileCheck from tripping over unimportant differences in
codegen.

4 years agoGive up on checking filename
Tyler Mandry [Wed, 24 Jun 2020 03:19:26 +0000 (20:19 -0700)]
Give up on checking filename

4 years agoAdd generator-debug test for MSVC
Tyler Mandry [Tue, 23 Jun 2020 23:23:01 +0000 (16:23 -0700)]
Add generator-debug test for MSVC

..which doesn't use variant types.

4 years agoGeneralize generator-debug test a bit
Tyler Mandry [Tue, 23 Jun 2020 23:21:53 +0000 (16:21 -0700)]
Generalize generator-debug test a bit

Don't be so reliant on particular line ordering (though FileCheck makes
this hard in general, IMO). Also disable for MSVC.

4 years agoImprove GeneratorLayout debug output
Tyler Mandry [Sat, 20 Jun 2020 03:19:19 +0000 (20:19 -0700)]
Improve GeneratorLayout debug output

4 years agoAllow calling GeneratorSubsts::variant_name() without substs
Tyler Mandry [Sat, 20 Jun 2020 01:37:52 +0000 (18:37 -0700)]
Allow calling GeneratorSubsts::variant_name() without substs

4 years agoAdd test for generator debuginfo
Tyler Mandry [Thu, 18 Jun 2020 23:17:25 +0000 (16:17 -0700)]
Add test for generator debuginfo

4 years agoAdd Artificial flag to generator variants
Tyler Mandry [Thu, 18 Jun 2020 02:39:23 +0000 (19:39 -0700)]
Add Artificial flag to generator variants

4 years agoEmit line info for generator variants
Tyler Mandry [Wed, 17 Jun 2020 23:04:25 +0000 (16:04 -0700)]
Emit line info for generator variants

4 years agoAuto merge of #73660 - flip1995:clippyup, r=nikomatsakis
bors [Wed, 24 Jun 2020 19:33:02 +0000 (19:33 +0000)]
Auto merge of #73660 - flip1995:clippyup, r=nikomatsakis

Update Clippy

4 years agoMake `std::panicking::panic_count::is_zero` inline and move the slow path into a...
Eduardo Sánchez Muñoz [Wed, 24 Jun 2020 16:17:27 +0000 (18:17 +0200)]
Make `std::panicking::panic_count::is_zero` inline and move the slow path into a separate cold function.

4 years agoAuto merge of #73692 - Dylan-DPC:rollup-ehzsbfw, r=Dylan-DPC
bors [Wed, 24 Jun 2020 15:47:22 +0000 (15:47 +0000)]
Auto merge of #73692 - Dylan-DPC:rollup-ehzsbfw, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #73638 (Remove unused crate imports in 2018 edition crates)
 - #73639 (Change heuristic for determining range literal)
 - #73646 (Add some regression tests)
 - #73652 (Add re-exports to use suggestions)
 - #73667 (Update BTreeMap::new() doc)
 - #73675 (Update books)

Failed merges:

r? @ghost

4 years agoAlert @WG-prioritization/alerts instead of @WG-prioritization
Santiago Pastorino [Wed, 24 Jun 2020 15:36:17 +0000 (12:36 -0300)]
Alert @WG-prioritization/alerts instead of @WG-prioritization

4 years agoChange wg-prioritization stream
Santiago Pastorino [Wed, 24 Jun 2020 15:32:44 +0000 (12:32 -0300)]
Change wg-prioritization stream

4 years agoFix tests
Nathan Corbyn [Wed, 24 Jun 2020 14:36:04 +0000 (15:36 +0100)]
Fix tests

4 years agoFix tests
Nathan Corbyn [Wed, 24 Jun 2020 14:10:10 +0000 (15:10 +0100)]
Fix tests

4 years agoImplement intrinsic
Nathan Corbyn [Tue, 23 Jun 2020 15:46:24 +0000 (16:46 +0100)]
Implement intrinsic

4 years agoAdd procedure for prioritization notifications on Zulip
LeSeulArtichaut [Wed, 24 Jun 2020 13:33:08 +0000 (15:33 +0200)]
Add procedure for prioritization notifications on Zulip

4 years agoRollup merge of #73675 - ehuss:update-books, r=ehuss
Dylan DPC [Wed, 24 Jun 2020 12:28:47 +0000 (14:28 +0200)]
Rollup merge of #73675 - ehuss:update-books, r=ehuss

Update books

## reference

5 commits in 5d40ba5c2515caffa7790cda621239dc21ef5a72..04d5d5d7ba624b6f5016298451f3a63d557f3260
2020-06-06 20:25:36 -0700 to 2020-06-16 15:08:05 -0700
- Mention `feature="foo"` is a Cargo convention. (rust-lang-nursery/reference#833)
- fix out of date info on type aliases (rust-lang-nursery/reference#831)
- Fix an invalid variable name in the loop example (rust-lang-nursery/reference#832)
- Fix note about using proc_macro with Cargo. (rust-lang-nursery/reference#815)
- Add a link to the definition of Pattern_White_Space. (rust-lang-nursery/reference#824)

## book

7 commits in 30cd9dfe71c446de63826bb4472627af45acc9db..4e7c00bece1544d409312ec93467beb62b5bd0cb
2020-06-07 23:07:19 -0500 to 2020-06-19 09:39:12 -0400
- Link to the reference file that exists
- Link to the reference
- Clean up discussion around advanced lifetime stuff (rust-lang/book#2351)
- Reword Chapter 6 page 2, match (rust-lang/book#2374)
- Clarify some package/crate distinctions in chapter 14 (rust-lang/book#2373)
- Not mandatory with cargo 1.41.0-nightly (rust-lang/book#2368)
- Use same naming for Rhs as libcore/ops (rust-lang/book#2371)

## rust-by-example

4 commits in 7aa82129aa23e7e181efbeb8da03a2a897ef6afc..6f94ccb48da6fa4ed0031290f21411cf789f7d5e
2020-05-25 14:54:26 -0300 to 2020-06-20 17:51:30 -0300
- Update to mdbook 0.3.7 (rust-lang/rust-by-example#1352)
- Update fn.md (rust-lang/rust-by-example#1351)
- Fixed typo in formatted print (rust-lang/rust-by-example#1350)
- This explanation incorrectly inverts the meaning of SuperTrait (rust-lang/rust-by-example#1349)

## embedded-book

5 commits in 5555a97f04ad7974ac6fb8fb47c267c4274adf4a..616962ad0dd80f34d8b802da038d0aed9dd691bb
2020-05-25 18:00:51 +0000 to 2020-06-23 16:03:45 +0000
- Update RTFM name to RTIC, fixed links, updated singletons.md example.  (rust-embedded/book#254)
- Note on how to rebuild if memory.x is changed  (rust-embedded/book#253)
- Ease the readers into the Discovery book  (rust-embedded/book#250)
- Provide a note on 'extern crate' usage in edition 2018 syntax of Rust  (rust-embedded/book#248)
- Fix Typos and Improve Readability  (rust-embedded/book#245)

4 years agoRollup merge of #73667 - nrabulinski:master, r=Dylan-DPC
Dylan DPC [Wed, 24 Jun 2020 12:28:45 +0000 (14:28 +0200)]
Rollup merge of #73667 - nrabulinski:master, r=Dylan-DPC

Update BTreeMap::new() doc

Updates the documentation according to [this comment](https://github.com/rust-lang/rust/pull/72876/files/0c5c644c91edf6ed949cfa5ffc524f43369df604#r433232581) on #72876

4 years agoRollup merge of #73652 - da-x:add-reexported-to-use-suggestions, r=petrochenkov
Dylan DPC [Wed, 24 Jun 2020 12:28:43 +0000 (14:28 +0200)]
Rollup merge of #73652 - da-x:add-reexported-to-use-suggestions, r=petrochenkov

Add re-exports to use suggestions

In the following example, an inaccessible path is suggested via `use foo::bar::X;` whereas an accessible public exported path can be suggested instead.

```rust
mod foo {
    mod bar {
        pub struct X;
    }
    pub use self::bar::X;
}

fn main() { X; }
```

This fixes the issue.

4 years agoRollup merge of #73646 - JohnTitor:add-tests, r=Dylan-DPC
Dylan DPC [Wed, 24 Jun 2020 12:28:41 +0000 (14:28 +0200)]
Rollup merge of #73646 - JohnTitor:add-tests, r=Dylan-DPC

Add some regression tests

Closes #44861
Closes #51506
Closes #59435
Closes #69840

4 years agoRollup merge of #73639 - ayazhafiz:i/73553, r=davidtwco
Dylan DPC [Wed, 24 Jun 2020 12:28:39 +0000 (14:28 +0200)]
Rollup merge of #73639 - ayazhafiz:i/73553, r=davidtwco

Change heuristic for determining range literal

Currently, rustc uses a heuristic to determine if a range expression is
not a literal based on whether the expression looks like a function call
or struct initialization. This fails for range literals whose
lower/upper bounds are the results of function calls. A possibly-better
heuristic is to check if the expression contains `..`, required in range
literals.

Of course, this is also not perfect; for example, if the range
expression is a struct which includes some text with `..` this will
fail, but in general I believe it is a better heuristic.

A better alternative altogether is to add the `QPath::LangItem` enum
variant suggested in #60607. I would be happy to do this as a precursor
to this patch if someone is able to provide general suggestions on how
usages of `QPath` need to be changed later in the compiler with the
`LangItem` variant.

Closes #73553

4 years agoRollup merge of #73638 - yuqio:remove-unused-crate-imports, r=nikomatsakis
Dylan DPC [Wed, 24 Jun 2020 12:28:33 +0000 (14:28 +0200)]
Rollup merge of #73638 - yuqio:remove-unused-crate-imports, r=nikomatsakis

Remove unused crate imports in 2018 edition crates

Closes #73570

4 years agoAuto merge of #73679 - ehuss:update-cargo, r=ehuss
bors [Wed, 24 Jun 2020 12:08:53 +0000 (12:08 +0000)]
Auto merge of #73679 - ehuss:update-cargo, r=ehuss

Update cargo

9 commits in 089cbb80b73ba242efdcf5430e89f63fa3b5328d..c26576f9adddd254b3dd63aecba176434290a9f6
2020-06-15 14:38:34 +0000 to 2020-06-23 16:21:21 +0000
- Adding environment variable CARGO_PKG_LICENSE_FILE (rust-lang/cargo#8387)
- Enable "--target-dir" in "cargo install" (rust-lang/cargo#8391)
- Add support for `workspace.metadata` table (rust-lang/cargo#8323)
- Fix overzealous `clean -p` for reserved names. (rust-lang/cargo#8398)
- Fix order-dependent feature resolution. (rust-lang/cargo#8395)
- Correct mispelling of `cargo`. (rust-lang/cargo#8389)
- Add missing license field. (rust-lang/cargo#8386)
- Adding environment variable CARGO_PKG_LICENSE (rust-lang/cargo#8325)
- Cut down on data fetch from git dependencies (rust-lang/cargo#8363)

4 years agoDocument the self keyword
Alexis Bourget [Wed, 24 Jun 2020 11:52:57 +0000 (13:52 +0200)]
Document the self keyword

4 years agoimproper_ctypes: only allow params in defns mode
David Wood [Sun, 21 Jun 2020 19:30:41 +0000 (20:30 +0100)]
improper_ctypes: only allow params in defns mode

This commit adjusts the behaviour introduced in a previous commit so
that generic parameters and projections are only allowed in the
definitions mode - and are otherwise a bug. Generic parameters in
declarations are prohibited earlier in the compiler, so if that branch
were reached, it would be a bug.

Signed-off-by: David Wood <david@davidtw.co>
4 years agoimproper_ctypes: allow pointers to sized types
David Wood [Thu, 28 May 2020 16:11:39 +0000 (17:11 +0100)]
improper_ctypes: allow pointers to sized types

This commit changes the improper ctypes lint (when operating on
definitions) to consider raw pointers or references to sized types as
FFI-safe.

Signed-off-by: David Wood <david@davidtw.co>
4 years agolints: add `improper_ctypes_definitions`
David Wood [Thu, 28 May 2020 14:57:09 +0000 (15:57 +0100)]
lints: add `improper_ctypes_definitions`

This commit adds a new lint - `improper_ctypes_definitions` - which
functions identically to `improper_ctypes`, but on `extern "C" fn`
definitions (as opposed to `improper_ctypes`'s `extern "C" {}`
declarations).

Signed-off-by: David Wood <david@davidtw.co>
4 years agoDocument the return keyword
Alexis Bourget [Wed, 24 Jun 2020 07:23:55 +0000 (09:23 +0200)]
Document the return keyword

Apply suggestions from code review

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
4 years agoUpdate cargo
Eric Huss [Wed, 24 Jun 2020 02:59:10 +0000 (19:59 -0700)]
Update cargo

4 years agofix
Tshepang Lekhonkhobe [Wed, 24 Jun 2020 02:47:20 +0000 (04:47 +0200)]
fix

See https://github.com/rust-lang/rust/pull/73538/commits/b65ea1bef1391a3af9118884952718fc905f8e02#r444376289

4 years agoAuto merge of #73293 - Aaron1011:feature/macro-rules-arg-capture, r=petrochenkov
bors [Wed, 24 Jun 2020 01:24:38 +0000 (01:24 +0000)]
Auto merge of #73293 - Aaron1011:feature/macro-rules-arg-capture, r=petrochenkov

Always capture tokens for `macro_rules!` arguments

When we invoke a proc-macro, the `TokenStream` we pass to it may contain 'interpolated' AST fragments, represented by `rustc_ast::token::Nonterminal`. In order to correctly, pass a `Nonterminal` to a proc-macro, we need to have 'captured' its `TokenStream` at the time the AST was parsed.

Currently, we perform this capturing when attributes are present on items and expressions, since we will end up using a `Nonterminal` to pass the item/expr to any proc-macro attributes it is annotated with. However, `Nonterminal`s are also introduced by the expansion of metavariables in `macro_rules!` macros. Since these metavariables may be passed to proc-macros, we need to have tokens available to avoid the need to pretty-print and reparse (see https://github.com/rust-lang/rust/issues/43081).

This PR unconditionally performs token capturing for AST items and expressions that are passed to a `macro_rules!` invocation. We cannot know in advance if captured item/expr will be passed to proc-macro, so this is needed to ensure that tokens will always be available when they are needed.

This ensures that proc-macros will receive tokens with proper `Spans` (both location and hygiene) in more cases. Like all work on https://github.com/rust-lang/rust/issues/43081, this will cause regressions in proc-macros that were relying on receiving tokens with dummy spans.

In this case, Crater revealed only one regression: the [Pear](https://github.com/SergioBenitez/Pear) crate (a helper for [rocket](https://github.com/SergioBenitez/Rocket)), which was previously [fixed](https://github.com/SergioBenitez/Pear/pull/25) as part of https://github.com/rust-lang/rust/pull/73084.

This regression manifests itself as the following error:

```
[INFO] [stdout] error: proc macro panicked
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/rocket_http-0.4.5/src/parse/uri/parser.rs:119:34
[INFO] [stdout]     |
[INFO] [stdout] 119 |             let path_and_query = pear_try!(path_and_query(is_pchar));
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: message: called `Option::unwrap()` on a `None` value
[INFO] [stdout]     = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
```

It can be fixed by running `cargo update -p pear`, which updates your `Cargo.lock` to use the latest version of Pear (which includes a bugfix for the regression).

Split out from https://github.com/rust-lang/rust/pull/73084/

4 years agoUpdate books
Eric Huss [Wed, 24 Jun 2020 00:56:33 +0000 (17:56 -0700)]
Update books

4 years agoAuto merge of #73669 - Manishearth:rollup-0n4u7vq, r=Manishearth
bors [Tue, 23 Jun 2020 21:33:22 +0000 (21:33 +0000)]
Auto merge of #73669 - Manishearth:rollup-0n4u7vq, r=Manishearth

Rollup of 11 pull requests

Successful merges:

 - #72780 (Enforce doc alias check)
 - #72876 (Mention that BTreeMap::new() doesn't allocate)
 - #73244 (Check for assignments between non-conflicting generator saved locals)
 - #73488 (code coverage foundation for hash and num_counters)
 - #73523 (Fix -Z unpretty=everybody_loops)
 - #73587 (Move remaining `NodeId` APIs from `Definitions` to `Resolver`)
 - #73601 (Point at the call span when overflow occurs during monomorphization)
 - #73613 (The const propagator cannot trace references.)
 - #73614 (fix `intrinsics::needs_drop` docs)
 - #73630 (Provide context on E0308 involving fn items)
 - #73665 (rustc: Modernize wasm checks for atomics)

Failed merges:

r? @ghost

4 years agoRollup merge of #73665 - alexcrichton:update-wasm-atomics-feature, r=davidtwco
Manish Goregaokar [Tue, 23 Jun 2020 20:10:19 +0000 (13:10 -0700)]
Rollup merge of #73665 - alexcrichton:update-wasm-atomics-feature, r=davidtwco

rustc: Modernize wasm checks for atomics

This commit modernizes how rustc checks for whether the `atomics`
feature is enabled for the wasm target. The `sess.target_features` set
is consulted instead of fiddling around with dealing with various
aspects of LLVM and that syntax.

4 years agoRollup merge of #73630 - estebank:fn-item-e0308, r=davidtwco
Manish Goregaokar [Tue, 23 Jun 2020 20:10:17 +0000 (13:10 -0700)]
Rollup merge of #73630 - estebank:fn-item-e0308, r=davidtwco

Provide context on E0308 involving fn items

Fix #73487.

4 years agoRollup merge of #73614 - lcnr:patch-4, r=Dylan-DPC
Manish Goregaokar [Tue, 23 Jun 2020 20:10:15 +0000 (13:10 -0700)]
Rollup merge of #73614 - lcnr:patch-4, r=Dylan-DPC

fix `intrinsics::needs_drop` docs

4 years agoRollup merge of #73613 - oli-obk:const_prop_miscompile, r=wesleywiser
Manish Goregaokar [Tue, 23 Jun 2020 20:10:13 +0000 (13:10 -0700)]
Rollup merge of #73613 - oli-obk:const_prop_miscompile, r=wesleywiser

The const propagator cannot trace references.

Thus we avoid propagation of a local the moment we encounter references to it.

fixes #73609

cc @RalfJung

r? @wesleywiser

4 years agoRollup merge of #73601 - Aaron1011:fix/better-mono-overflow-err, r=ecstatic-morse
Manish Goregaokar [Tue, 23 Jun 2020 20:10:11 +0000 (13:10 -0700)]
Rollup merge of #73601 - Aaron1011:fix/better-mono-overflow-err, r=ecstatic-morse

Point at the call span when overflow occurs during monomorphization

This improves the output for issue #72577, but there's still more work
to be done.

Currently, an overflow error during monomorphization results in an error
that points at the function we were unable to monomorphize. However, we
don't point at the call that caused the monomorphization to happen. In
the overflow occurs in a large recursive function, it may be difficult
to determine where the issue is.

This commit tracks and `Span` information during collection of
`MonoItem`s, which is used when emitting an overflow error. `MonoItem`
itself is unchanged, so this only affects
`src/librustc_mir/monomorphize/collector.rs`

4 years agoRollup merge of #73587 - marmeladema:hir-id-ification-final, r=petrochenkov
Manish Goregaokar [Tue, 23 Jun 2020 20:10:09 +0000 (13:10 -0700)]
Rollup merge of #73587 - marmeladema:hir-id-ification-final, r=petrochenkov

Move remaining `NodeId` APIs from `Definitions` to `Resolver`

Implements https://github.com/rust-lang/rust/pull/73291#issuecomment-643515557

TL;DR: it moves all fields that are only needed during name resolution passes into the `Resolver` and keep the rest in `Definitions`. This effectively enforces that all references to `NodeId`s are gone once HIR lowering is completed.

After this, the only remaining work for #50928 should be to adjust the dev guide.

r? @petrochenkov

4 years agoRollup merge of #73523 - jyn514:everybody_loops, r=ecstatic-morse
Manish Goregaokar [Tue, 23 Jun 2020 20:10:07 +0000 (13:10 -0700)]
Rollup merge of #73523 - jyn514:everybody_loops, r=ecstatic-morse

Fix -Z unpretty=everybody_loops

It turns out that this has not been working for who knows how long.
Previously:

```
pub fn h() { 1 + 2; }
```

After this change:

```
pub fn h() { loop { } }
```

This only affected the pass when run with the command line
pretty-printing option, so rustdoc was still replacing bodies with
`loop {}`.

4 years agoRollup merge of #73488 - richkadel:llvm-coverage-map-gen, r=tmandry
Manish Goregaokar [Tue, 23 Jun 2020 20:10:05 +0000 (13:10 -0700)]
Rollup merge of #73488 - richkadel:llvm-coverage-map-gen, r=tmandry

code coverage foundation for hash and num_counters

This PR is the next iteration after PR #73011 (which is still waiting on bors to merge).

@wesleywiser - PTAL
r? @tmandry

(FYI, I'm also working on injecting the coverage maps, in another branch, while waiting for these to merge.)

Thanks!

4 years agoRollup merge of #73244 - ecstatic-morse:validate-generator-mir, r=tmandry
Manish Goregaokar [Tue, 23 Jun 2020 20:10:03 +0000 (13:10 -0700)]
Rollup merge of #73244 - ecstatic-morse:validate-generator-mir, r=tmandry

Check for assignments between non-conflicting generator saved locals

This is to prevent future changes to the generator transform from reintroducing the problem that caused #73137. Namely, a store between two generator saved locals whose storage does not conflict.

My ultimate goal is to introduce a modified version of #71956 that handles this case properly.

r? @tmandry

4 years agoRollup merge of #72876 - TrolledWoods:patch-2, r=Dylan-DPC
Manish Goregaokar [Tue, 23 Jun 2020 20:10:01 +0000 (13:10 -0700)]
Rollup merge of #72876 - TrolledWoods:patch-2, r=Dylan-DPC

Mention that BTreeMap::new() doesn't allocate

I think it would be nice to mention this, so you don't have to dig through the src to look at the definition of new().

4 years agoRollup merge of #72780 - GuillaumeGomez:enforce-doc-alias-check, r=ollie27
Manish Goregaokar [Tue, 23 Jun 2020 20:09:59 +0000 (13:09 -0700)]
Rollup merge of #72780 - GuillaumeGomez:enforce-doc-alias-check, r=ollie27

Enforce doc alias check

Part of #50146.

r? @ollie27

4 years agoreview comments: wording and style
Esteban Küber [Tue, 23 Jun 2020 20:01:24 +0000 (13:01 -0700)]
review comments: wording and style

4 years agoReview fixes
Dan Aloni [Tue, 23 Jun 2020 19:25:23 +0000 (22:25 +0300)]
Review fixes

4 years agoUpdate map.rs
Nikodem Rabuliński [Tue, 23 Jun 2020 18:06:44 +0000 (20:06 +0200)]
Update map.rs

4 years agoAuto merge of #73644 - ollie27:rustdoc_alias_filter, r=GuillaumeGomez
bors [Tue, 23 Jun 2020 17:30:54 +0000 (17:30 +0000)]
Auto merge of #73644 - ollie27:rustdoc_alias_filter, r=GuillaumeGomez

rustdoc: Fix doc aliases with crate filtering

Fix a crash when searching for an alias contained in the currently selected filter crate.

Also remove alias search results for crates that should be filtered out.

The test suite needed to be fixed to actually take into account the crate filtering and check that there are no results when none are expected.

Needs to be backported to beta to fix the `std` docs.

Fixes #73620

r? @GuillaumeGomez

4 years agorustc: Modernize wasm checks for atomics
Alex Crichton [Tue, 23 Jun 2020 16:41:56 +0000 (09:41 -0700)]
rustc: Modernize wasm checks for atomics

This commit modernizes how rustc checks for whether the `atomics`
feature is enabled for the wasm target. The `sess.target_features` set
is consulted instead of fiddling around with dealing with various
aspects of LLVM and that syntax.

4 years agoMerge commit 'c2c07fa9d095931eb5684a42942a7b573a0c5238' into clippyup
flip1995 [Tue, 23 Jun 2020 15:05:22 +0000 (17:05 +0200)]
Merge commit 'c2c07fa9d095931eb5684a42942a7b573a0c5238' into clippyup

4 years agoAuto merge of #5740 - lzutao:unused-unused, r=flip1995
bors [Tue, 23 Jun 2020 14:34:18 +0000 (14:34 +0000)]
Auto merge of #5740 - lzutao:unused-unused, r=flip1995

Remove unused allowed unused attributes

changelog: none

4 years agoAuto merge of #5738 - mikerite:loops-20200623-2, r=matthiaskrgr
bors [Tue, 23 Jun 2020 14:05:45 +0000 (14:05 +0000)]
Auto merge of #5738 - mikerite:loops-20200623-2, r=matthiaskrgr

Improve end of expression check in for loop lints

changelog: none

4 years agoRemove unused allowed unused attributes
Lzu Tao [Tue, 23 Jun 2020 13:59:35 +0000 (20:59 +0700)]
Remove unused allowed unused attributes

4 years agoAuto merge of #5735 - lzutao:issue-temp, r=flip1995
bors [Tue, 23 Jun 2020 13:40:02 +0000 (13:40 +0000)]
Auto merge of #5735 - lzutao:issue-temp, r=flip1995

Add more specific GitHub issue templates

changelog: Make it easier to create feature request and bug reports with issue templates.

4 years agoAuto merge of #5741 - flip1995:rollup-8chbwhy, r=flip1995
bors [Tue, 23 Jun 2020 12:52:46 +0000 (12:52 +0000)]
Auto merge of #5741 - flip1995:rollup-8chbwhy, r=flip1995

Rollup of 9 pull requests

Successful merges:

 - #5178 (clippy-driver: pass all args to rustc if --rustc is present)
 - #5705 (Downgrade unnested_or_patterns to pedantic)
 - #5709 (Fix ICE in consts::binop)
 - #5710 (typo)
 - #5712 (Remove `bar` from blacklisted names)
 - #5713 (Use lints in Clippy that are enabled in rustc bootstrap)
 - #5716 (Fix typo in wildcard_imports)
 - #5724 (redundant_pattern_matching: avoid non-`const fn` calls in const contexts)
 - #5726 (Fix typo)

Failed merges:

r? @ghost

changelog: rollup

4 years agoRollup merge of #5726 - sozysozbot:patch-1, r=flip1995
Philipp Krones [Tue, 23 Jun 2020 12:39:50 +0000 (14:39 +0200)]
Rollup merge of #5726 - sozysozbot:patch-1, r=flip1995

Fix typo

changelog: extending it's lifetime -> extending its lifetime

4 years agoRollup merge of #5724 - ebroto:5697_const_result_option, r=Manishearth
Philipp Krones [Tue, 23 Jun 2020 12:39:49 +0000 (14:39 +0200)]
Rollup merge of #5724 - ebroto:5697_const_result_option, r=Manishearth

redundant_pattern_matching: avoid non-`const fn` calls in const contexts

changelog: Avoid suggesting non-`const fn` calls in const contexts in [`redundant_pattern_matching`]

Fixes #5697

4 years agoRollup merge of #5716 - bugadani:patch-1, r=matthiaskrgr
Philipp Krones [Tue, 23 Jun 2020 12:39:48 +0000 (14:39 +0200)]
Rollup merge of #5716 - bugadani:patch-1, r=matthiaskrgr

Fix typo in wildcard_imports

changelog: none

4 years agoRollup merge of #5713 - flip1995:more_lints, r=Manishearth
Philipp Krones [Tue, 23 Jun 2020 12:39:47 +0000 (14:39 +0200)]
Rollup merge of #5713 - flip1995:more_lints, r=Manishearth

Use lints in Clippy that are enabled in rustc bootstrap

cc https://github.com/rust-lang/rust/pull/73297#discussion_r439747061

changelog: none

4 years agoRollup merge of #5712 - ijijn:master, r=flip1995
Philipp Krones [Tue, 23 Jun 2020 12:39:45 +0000 (14:39 +0200)]
Rollup merge of #5712 - ijijn:master, r=flip1995

Remove `bar` from blacklisted names

changelog: Remove `bar` from blacklisted names
fixes #5225

4 years agoRollup merge of #5710 - lcnr:patch-1, r=flip1995
Philipp Krones [Tue, 23 Jun 2020 12:39:44 +0000 (14:39 +0200)]
Rollup merge of #5710 - lcnr:patch-1, r=flip1995

typo

changelog: none

4 years agoRollup merge of #5709 - ebroto:5389_ice, r=Manishearth
Philipp Krones [Tue, 23 Jun 2020 12:39:43 +0000 (14:39 +0200)]
Rollup merge of #5709 - ebroto:5389_ice, r=Manishearth

Fix ICE in consts::binop

changelog: Fix ICE in `consts::binop`

Fixes #5389

4 years agoRollup merge of #5705 - dtolnay:orpat, r=flip1995
Philipp Krones [Tue, 23 Jun 2020 12:39:42 +0000 (14:39 +0200)]
Rollup merge of #5705 - dtolnay:orpat, r=flip1995

Downgrade unnested_or_patterns to pedantic

Even with #5704 fixed, I don't believe it is a safe bet that if someone is using or-patterns anywhere in a codebase then they want to use it as much as possible in the whole codebase. I think it would be reasonable to reevaluate after the feature is stable. I feel that a warn-by-default lint suggesting use of an unstable feature, even if already being used in one place, is questionable.

changelog: Remove unnested_or_patterns from default set of enabled lints

4 years agoRollup merge of #5178 - matthiaskrgr:rustc_arg_pass, r=flip1995
Philipp Krones [Tue, 23 Jun 2020 12:39:40 +0000 (14:39 +0200)]
Rollup merge of #5178 - matthiaskrgr:rustc_arg_pass, r=flip1995

clippy-driver: pass all args to rustc if --rustc is present

changelog: clippy-driver: pass all args to rustc if --rustc is present

4 years agoFix fallout
flip1995 [Sat, 13 Jun 2020 16:22:49 +0000 (18:22 +0200)]
Fix fallout

4 years agoUse lints in Clippy that are enabled in rustc bootstrap
flip1995 [Sat, 13 Jun 2020 16:22:38 +0000 (18:22 +0200)]
Use lints in Clippy that are enabled in rustc bootstrap

4 years agoAuto merge of #5739 - flip1995:rustup, r=flip1995
bors [Tue, 23 Jun 2020 12:04:08 +0000 (12:04 +0000)]
Auto merge of #5739 - flip1995:rustup, r=flip1995

Rustup

changelog: none

r? @ghost

4 years agoAdd re-exports to use suggestions
Dan Aloni [Sun, 21 Jun 2020 16:31:49 +0000 (19:31 +0300)]
Add re-exports to use suggestions

In the following example, an inaccessible path is suggested via
`use foo::bar::X;` whereas an accessible public exported path can
be suggested instead.

```
mod foo {
    mod bar {
        pub struct X;
    }
    pub use self::bar::X;
}

fn main() { X; }
```

This fixes the issue.

4 years agoAdd test for issue-69840
Yuki Okushi [Tue, 23 Jun 2020 08:52:51 +0000 (17:52 +0900)]
Add test for issue-69840