]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRollup merge of #95751 - compiler-errors:ambig-int, r=jackh726
Dylan DPC [Sat, 9 Apr 2022 03:58:42 +0000 (05:58 +0200)]
Rollup merge of #95751 - compiler-errors:ambig-int, r=jackh726

Don't report numeric inference ambiguity when we have previous errors

Fixes #95648

2 years agoRollup merge of #95599 - niluxv:strict-provenance-lint, r=michaelwoerister
Dylan DPC [Sat, 9 Apr 2022 03:58:42 +0000 (05:58 +0200)]
Rollup merge of #95599 - niluxv:strict-provenance-lint, r=michaelwoerister

Strict provenance lints

See #95488.
This PR introduces two unstable (allow by default) lints to which lint on int2ptr and ptr2int casts, as the former is not possible in the strict provenance model and the latter can be written nicer using the `.addr()` API.
Based on an initial version of the lint by ```@Gankra``` in #95199.

2 years agoRollup merge of #95374 - RalfJung:assert_uninit_valid, r=Mark-Simulacrum
Dylan DPC [Sat, 9 Apr 2022 03:58:41 +0000 (05:58 +0200)]
Rollup merge of #95374 - RalfJung:assert_uninit_valid, r=Mark-Simulacrum

assert_uninit_valid: ensure we detect at least arrays of uninhabited types

We can't easily extend this check to *all* arrays (Cc https://github.com/rust-lang/rust/pull/87041), but it turns out the existing check already catches arrays of uninhabited types. So let's make sure it stays that way by adding them to the test.

2 years agoRollup merge of #90066 - yaahc:thinbox, r=joshtriplett
Dylan DPC [Sat, 9 Apr 2022 03:58:40 +0000 (05:58 +0200)]
Rollup merge of #90066 - yaahc:thinbox, r=joshtriplett

Add new ThinBox type for 1 stack pointer wide heap allocated trait objects

**Zulip Thread**: https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/ThinBox

Based on https://github.com/matthieu-m/rfc2580/blob/b58d1d3cba0d4b5e859d3617ea2d0943aaa31329/examples/thin.rs

Tracking Issue: https://github.com/rust-lang/rust/issues/92791

Usage Trial: https://github.com/yaahc/pgx/pull/1/files

## TODO

- [x] make sure to test with #[repr(align(1024))] structs etc

2 years agoRemove ptr-int transmute in std::sync::mpsc
Ben Kimock [Sun, 3 Apr 2022 19:50:11 +0000 (15:50 -0400)]
Remove ptr-int transmute in std::sync::mpsc

Since https://github.com/rust-lang/rust/pull/95340 landed, Miri with
-Zmiri-check-number-validity produces an error on the test suites of
some crates which implement concurrency tools, because it seems like
such crates tend to use std::sync::mpsc in their tests. This fixes the
problem by storing pointer bytes in a pointer.

2 years agoMake non-power-of-two alignments a validity error in `Layout`
Scott McMurray [Sun, 27 Mar 2022 07:06:26 +0000 (00:06 -0700)]
Make non-power-of-two alignments a validity error in `Layout`

Inspired by the zulip conversation about how `Layout` should better enforce `size < isize::MAX as usize`, this uses an N-variant enum on N-bit platforms to require at the validity level that the existing invariant of "must be a power of two" is upheld.

This was MIRI can catch it, and means there's a more-specific type for `Layout` to store than just `NonZeroUsize`.

2 years agoAuto merge of #95524 - oli-obk:cached_stable_hash_cleanups, r=nnethercote
bors [Sat, 9 Apr 2022 02:31:24 +0000 (02:31 +0000)]
Auto merge of #95524 - oli-obk:cached_stable_hash_cleanups, r=nnethercote

Cached stable hash cleanups

r? `@nnethercote`

Add a sanity assertion in debug mode to check that the cached hashes are actually the ones we get if we compute the hash each time.

Add a new data structure that bundles all the hash-caching work to make it easier to re-use it for different interned data structures

2 years agoUse bitwise XOR in to_ascii_uppercase
Redzic [Sat, 9 Apr 2022 00:59:16 +0000 (19:59 -0500)]
Use bitwise XOR in to_ascii_uppercase

This saves an instruction compared to the previous approach, which
was to unset the fifth bit with bitwise OR.

2 years agoRemove explicit delimiter token trees from `Delimited`.
Nicholas Nethercote [Fri, 8 Apr 2022 07:38:28 +0000 (17:38 +1000)]
Remove explicit delimiter token trees from `Delimited`.

They were introduced by the final commit in #95159 and gave a
performance win. But since the introduction of `MatcherLoc` they are no
longer needed. This commit reverts that change, making the code a bit
simpler.

2 years agoAuto merge of #95815 - RalfJung:miri, r=RalfJung
bors [Fri, 8 Apr 2022 23:41:26 +0000 (23:41 +0000)]
Auto merge of #95815 - RalfJung:miri, r=RalfJung

update Miri

Fixes https://github.com/rust-lang/rust/issues/95627
r? `@ghost` Cc `@rust-lang/miri`

2 years agoAuto merge of #95519 - oli-obk:tait_ub2, r=compiler-errors
bors [Fri, 8 Apr 2022 20:45:16 +0000 (20:45 +0000)]
Auto merge of #95519 - oli-obk:tait_ub2, r=compiler-errors

Enforce well formedness for type alias impl trait's hidden type

fixes #84657

This was not an issue with return-position-impl-trait because the generic bounds of the function are the same as those of the opaque type, and the hidden type must already be well formed within the function.

With type-alias-impl-trait the hidden type could be defined in a function that has *more* lifetime bounds than the type alias. This is fine, but the hidden type must still be well formed without those additional bounds.

2 years agobump rls and racer
Pietro Albini [Mon, 4 Apr 2022 14:04:37 +0000 (16:04 +0200)]
bump rls and racer

2 years agohide another #[allow] directive from a docs example
Jack O'Connor [Fri, 8 Apr 2022 17:29:00 +0000 (10:29 -0700)]
hide another #[allow] directive from a docs example

This is a repeat for Rc of e0e64a89304de2b34dbafbc6cb354d2be9e67835,
which cleaned up the same thing for Arc.

2 years agoupdate Miri
Ralf Jung [Fri, 8 Apr 2022 16:02:05 +0000 (12:02 -0400)]
update Miri

2 years agoAdd ThinBox type for 1 stack pointer sized heap allocated trait objects
Jane Lusby [Tue, 19 Oct 2021 22:23:19 +0000 (15:23 -0700)]
Add ThinBox type for 1 stack pointer sized heap allocated trait objects

Relevant commit messages from squashed history in order:

Add initial version of ThinBox

update test to actually capture failure

swap to middle ptr impl based on matthieu-m's design

Fix stack overflow in debug impl

The previous version would take a `&ThinBox<T>` and deref it once, which
resulted in a no-op and the same type, which it would then print causing
an endless recursion. I've switched to calling `deref` by name to let
method resolution handle deref the correct number of times.

I've also updated the Drop impl for good measure since it seemed like it
could be falling prey to the same bug, and I'll be adding some tests to
verify that the drop is happening correctly.

add test to verify drop is behaving

add doc examples and remove unnecessary Pointee bounds

ThinBox: use NonNull

ThinBox: tests for size

Apply suggestions from code review

Co-authored-by: Alphyr <47725341+a1phyr@users.noreply.github.com>
use handle_alloc_error and fix drop signature

update niche and size tests

add cfg for allocating APIs

check null before calculating offset

add test for zst and trial usage

prevent optimizer induced ub in drop and cleanup metadata gathering

account for arbitrary size and alignment metadata

Thank you nika and thomcc!

Update library/alloc/src/boxed/thin.rs

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
Update library/alloc/src/boxed/thin.rs

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
2 years agoAvoid looking at the internals of Interned directly
Oli Scherer [Fri, 8 Apr 2022 15:57:44 +0000 (15:57 +0000)]
Avoid looking at the internals of Interned directly

2 years agoSplit `fuzzy_provenance_casts` into lossy and fuzzy, feature gate and test it
niluxv [Sat, 2 Apr 2022 19:07:00 +0000 (21:07 +0200)]
Split `fuzzy_provenance_casts` into lossy and fuzzy, feature gate and test it

* split `fuzzy_provenance_casts` into a ptr2int and a int2ptr lint
* feature gate both lints
* update documentation to be more realistic short term
* add tests for these lints

2 years agoWIP PROOF-OF-CONCEPT: Make the compiler complain about all int<->ptr casts.
Aria Beingessner [Mon, 21 Mar 2022 23:25:44 +0000 (19:25 -0400)]
WIP PROOF-OF-CONCEPT: Make the compiler complain about all int<->ptr casts.

ALL

OF

THEM

2 years agouse `format-args-capture` and remove unnecessary nested blocks
Takayuki Maeda [Fri, 8 Apr 2022 15:01:40 +0000 (00:01 +0900)]
use `format-args-capture` and remove unnecessary nested blocks

2 years agosuggest adding a local for vector to fix borrowck errors
Takayuki Maeda [Fri, 8 Apr 2022 14:17:57 +0000 (23:17 +0900)]
suggest adding a local for vector to fix borrowck errors

2 years agoFix typo in futex rwlock.
Mara Bos [Fri, 8 Apr 2022 14:07:07 +0000 (16:07 +0200)]
Fix typo in futex rwlock.

Co-authored-by: Amanieu d'Antras <amanieu@gmail.com>
2 years agoAdd test for empty doc comments with a backline
Guillaume Gomez [Fri, 8 Apr 2022 13:30:53 +0000 (15:30 +0200)]
Add test for empty doc comments with a backline

2 years agoFix invalid array access in `beautify_doc_string`
Guillaume Gomez [Fri, 8 Apr 2022 13:30:37 +0000 (15:30 +0200)]
Fix invalid array access in `beautify_doc_string`

2 years agoLeft overs of #95761
Caio [Fri, 8 Apr 2022 13:30:24 +0000 (10:30 -0300)]
Left overs of #95761

2 years agoAuto merge of #95772 - flip1995:clippyup, r=Manishearth,flip1995
bors [Fri, 8 Apr 2022 13:22:07 +0000 (13:22 +0000)]
Auto merge of #95772 - flip1995:clippyup, r=Manishearth,flip1995

Update Clippy

r? `@Manishearth`

2 years agofix some unused constant warning on some Windows targets
Ralf Jung [Fri, 8 Apr 2022 12:36:43 +0000 (08:36 -0400)]
fix some unused constant warning on some Windows targets

2 years agoAdd futex-based RwLock on Linux.
Mara Bos [Wed, 6 Apr 2022 14:31:11 +0000 (16:31 +0200)]
Add futex-based RwLock on Linux.

2 years agoAuto merge of #95798 - Dylan-DPC:rollup-51hx1wl, r=Dylan-DPC
bors [Fri, 8 Apr 2022 10:41:10 +0000 (10:41 +0000)]
Auto merge of #95798 - Dylan-DPC:rollup-51hx1wl, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #95102 (Add known-bug for #95034)
 - #95579 (Add `<[[T; N]]>::flatten{_mut}`)
 - #95634 (Mailmap update)
 - #95705 (Promote x86_64-unknown-none target to Tier 2 and distribute build artifacts)
 - #95761 (Kickstart the inner usage of `macro_metavar_expr`)
 - #95782 (Windows: Increase a pipe's buffer capacity to 64kb)
 - #95791 (hide an #[allow] directive from the Arc::new_cyclic doc example)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #95791 - oconnor663:doc_comment, r=thomcc
Dylan DPC [Fri, 8 Apr 2022 09:48:26 +0000 (11:48 +0200)]
Rollup merge of #95791 - oconnor663:doc_comment, r=thomcc

hide an #[allow] directive from the Arc::new_cyclic doc example

A minor docs cleanup.

2 years agoRollup merge of #95782 - ChrisDenton:pipe-buffer-size, r=thomcc
Dylan DPC [Fri, 8 Apr 2022 09:48:25 +0000 (11:48 +0200)]
Rollup merge of #95782 - ChrisDenton:pipe-buffer-size, r=thomcc

Windows: Increase a pipe's buffer capacity to 64kb

This brings it inline with typical Linux defaults: https://www.man7.org/linux/man-pages/man7/pipe.7.html

> Since Linux 2.6.11, the pipe capacity is 16 pages (i.e., 65,536 bytes in a system with a page size of 4096 bytes).

This may also help with #45572 and #95759 but does not fix either issue. It simply makes them much less likely to be encountered.

2 years agoRollup merge of #95761 - c410-f3r:meta-var-stuff, r=petrochenkov
Dylan DPC [Fri, 8 Apr 2022 09:48:24 +0000 (11:48 +0200)]
Rollup merge of #95761 - c410-f3r:meta-var-stuff, r=petrochenkov

Kickstart the inner usage of `macro_metavar_expr`

There can be more use-cases but I am out of ideas.

cc #83527
r? ``@petrochenkov``

2 years agoRollup merge of #95705 - bstrie:x86nonetier, r=Mark-Simulacrum
Dylan DPC [Fri, 8 Apr 2022 09:48:23 +0000 (11:48 +0200)]
Rollup merge of #95705 - bstrie:x86nonetier, r=Mark-Simulacrum

Promote x86_64-unknown-none target to Tier 2 and distribute build artifacts

This implements https://github.com/rust-lang/compiler-team/issues/499 , in which the compiler team accepted the x86_64-unknown-none target for promotion to a Tier 2 platform.

2 years agoRollup merge of #95634 - dtolnay:mailmap, r=Mark-Simulacrum
Dylan DPC [Fri, 8 Apr 2022 09:48:22 +0000 (11:48 +0200)]
Rollup merge of #95634 - dtolnay:mailmap, r=Mark-Simulacrum

Mailmap update

I noticed there are a lot of contributors who appear multiple times in https://thanks.rust-lang.org/rust/all-time/, which makes their "rank" on that page inaccurate. For example Nick Cameron currently appears at rank 21 with 2010 contributions and at rank 27 with 1287 contributions, because some of those are from nrc&#8288;```@ncameron.org``` and some from ncameron&#8288;```@mozilla.com.``` In reality Nick's rank would be 11 if counted correctly, which is a large difference.

Solving this in a totally automated way is tricky because it involves figuring out whether Nick is 1 person with multiple emails, or is 2 people sharing the same name.

This PR addresses a subset of the cases: only where a person has committed under multiple names using the same email. This is still not something that can be totally automated (e.g. by modifying https://github.com/rust-lang/thanks to dedup by email instead of name+email) because:

- Some emails are not necessarily unique to one contributor, such as `ubuntu@localhost`.

- It involves some judgement and mindfulness in picking the "canonical name" among the names used with a particular email. This is the name that will appear on thanks.rust-lang.org. Humans change their names sometimes and can be sensitive or picky about the use of names that are no longer preferred.

For the purpose of this PR, I've tried to stick to the following heuristics which should be unobjectionable:

- If one of the names is currently set as the display name on the contributor's GitHub profile, prefer that name.

- If one of the names is used exclusively over the others in chronologically newer pull requests, prefer the newest name.

- If one of the names has whitespace and the other doesn't (i.e. is username-like), such as `Foo Bar` vs `FooBar` or `foobar` or `foo-bar123`, but otherwise closely resemble one another, then prefer the human-like name.

- If none of the above suffice in determining a canonical name and the contributor has some other name set on their GitHub profile, use the name from the GitHub profile.

- If no name on their GitHub profile but the profile links to their personal website which unambiguously identifies their preferred name, then use that name.

I'm also thinking about how to handle cases like Nick's, but that will be a project for a different PR. Basically I'd like to be able to find cases of the same person making commits that differ in name *and* email by looking at all the commits present in pull requests opened by the same GitHub user.

<details>
<summary>script</summary>

```toml
[dependencies]
anyhow = "1.0"
git2 = "0.14"
mailmap = "0.1"
```
```rust
use anyhow::{bail, Context, Result};
use git2::{Commit, Oid, Repository};
use mailmap::{Author, Mailmap};
use std::collections::{BTreeMap as Map, BTreeSet as Set};
use std::fmt::{self, Debug};
use std::fs;
use std::path::Path;

const REPO: &str = "/git/rust";

fn main() -> Result<()> {
    let repo = Repository::open(REPO)?;
    let head_oid = repo
        .head()?
        .target()
        .context("expected head to be a direct reference")?;
    let head = repo.find_commit(head_oid)?;

    let mailmap_path = Path::new(REPO).join(".mailmap");
    let mailmap_contents = fs::read_to_string(mailmap_path)?;
    let mailmap = match Mailmap::from_string(mailmap_contents) {
        Ok(mailmap) => mailmap,
        Err(box_error) => bail!("{}", box_error),
    };

    let mut history = Set::new();
    let mut merges = Vec::new();
    let mut authors = Set::new();
    let mut emails = Map::new();
    let mut all_authors = Set::new();
    traverse_left(head, &mut history, &mut merges, &mut authors, &mailmap)?;
    while let Some((commit, i)) = merges.pop() {
        let right = commit.parents().nth(i).unwrap();
        authors.clear();
        traverse_left(right, &mut history, &mut merges, &mut authors, &mailmap)?;
        for author in &authors {
            all_authors.insert(author.clone());
            if !author.email.is_empty() {
                emails
                    .entry(author.email.clone())
                    .or_insert_with(Map::new)
                    .entry(author.name.clone())
                    .or_insert_with(Set::new);
            }
        }
        if let Some(summary) = commit.summary() {
            if let Some(pr) = parse_summary(summary)? {
                for author in &authors {
                    if !author.email.is_empty() {
                        emails
                            .get_mut(&author.email)
                            .unwrap()
                            .get_mut(&author.name)
                            .unwrap()
                            .insert(pr);
                    }
                }
            }
        }
    }

    for (email, names) in emails {
        if names.len() > 1 {
            println!("<{}>", email);
            for (name, prs) in names {
                let prs = DebugSet(prs.iter().rev());
                println!("    {} {:?}", name, prs);
            }
        }
    }

    eprintln!("{} commits", history.len());
    eprintln!("{} authors", all_authors.len());
    Ok(())
}

fn traverse_left<'repo>(
    mut commit: Commit<'repo>,
    history: &mut Set<Oid>,
    merges: &mut Vec<(Commit<'repo>, usize)>,
    authors: &mut Set<Author>,
    mailmap: &Mailmap,
) -> Result<()> {
    loop {
        let oid = commit.id();
        if !history.insert(oid) {
            return Ok(());
        }
        let author = author(mailmap, &commit);
        let is_bors = author.name == "bors" && author.email == "bors@rust-lang.org";
        if !is_bors {
            authors.insert(author);
        }
        let mut parents = commit.parents();
        let parent = match parents.next() {
            Some(parent) => parent,
            None => return Ok(()),
        };
        for i in 1..1 + parents.len() {
            merges.push((commit.clone(), i));
        }
        commit = parent;
    }
}

fn parse_summary(summary: &str) -> Result<Option<PullRequest>> {
    let mut rest = None;
    for prefix in [
        "Auto merge of #",
        "Merge pull request #",
        " Manual merge of #",
        "auto merge of #",
        "auto merge of pull req #",
        "rollup merge of #",
        "Rollup merge of #",
        "Rollup merge of  #",
        "Rollup merge of ",
        "Merge PR #",
        "Merge #",
        "Merged #",
    ] {
        if summary.starts_with(prefix) {
            rest = Some(&summary[prefix.len()..]);
            break;
        }
    }
    let rest = match rest {
        Some(rest) => rest,
        None => return Ok(None),
    };
    let end = rest.find([' ', ':']).unwrap_or(rest.len());
    let number = match rest[..end].parse::<u32>() {
        Ok(number) => number,
        Err(err) => {
            eprintln!("{}", summary);
            bail!(err);
        }
    };
    Ok(Some(PullRequest(number)))
}

fn author(mailmap: &Mailmap, commit: &Commit) -> Author {
    let signature = commit.author();
    let name = String::from_utf8_lossy(signature.name_bytes()).into_owned();
    let email = String::from_utf8_lossy(signature.email_bytes()).into_owned();
    mailmap.canonicalize(&Author { name, email })
}

#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
struct PullRequest(u32);

impl Debug for PullRequest {
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        write!(formatter, "#{}", self.0)
    }
}

struct DebugSet<T>(T);

impl<T> Debug for DebugSet<T>
where
    T: Iterator + Clone,
    T::Item: Debug,
{
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        formatter.debug_set().entries(self.0.clone()).finish()
    }
}
```
</details>

2 years agoRollup merge of #95579 - Cyborus04:slice_flatten, r=scottmcm
Dylan DPC [Fri, 8 Apr 2022 09:48:21 +0000 (11:48 +0200)]
Rollup merge of #95579 - Cyborus04:slice_flatten, r=scottmcm

Add `<[[T; N]]>::flatten{_mut}`

Adds `flatten` to convert `&[[T; N]]` to `&[T]` (and `flatten_mut` for `&mut [[T; N]]` to `&mut [T]`)

2 years agoRollup merge of #95102 - compiler-errors:issue-94034-bug, r=jackh726
Dylan DPC [Fri, 8 Apr 2022 09:48:21 +0000 (11:48 +0200)]
Rollup merge of #95102 - compiler-errors:issue-94034-bug, r=jackh726

Add known-bug for #95034

Couldn't fix the issue, since I am no type theorist and inference variables in universes above U0 scare me. But I at least wanted to add a known-bug test for it.

cc #95034 (does not fix)

2 years agoUpdate Cargo.lock
flip1995 [Fri, 8 Apr 2022 09:41:55 +0000 (10:41 +0100)]
Update Cargo.lock

2 years agoMerge commit '984330a6ee3c4d15626685d6dc8b7b759ff630bd' into clippyup
flip1995 [Thu, 7 Apr 2022 17:39:59 +0000 (18:39 +0100)]
Merge commit '984330a6ee3c4d15626685d6dc8b7b759ff630bd' into clippyup

2 years agocheck_doc_keyword: don't alloc string for emptiness check
klensy [Tue, 5 Apr 2022 12:52:53 +0000 (15:52 +0300)]
check_doc_keyword: don't alloc string for emptiness check

check_doc_alias_value: get argument as Symbol to prevent needless string convertions

check_doc_attrs: don't alloc vec, iterate over slice. Vec introduced in #83149, but no perf run posted on merge

replace as_str() check with symbol check

get_single_str_from_tts: don't prealloc string

trivial string to str replace

LifetimeScopeForPath::NonElided use Vec<Symbol> instead of Vec<String>

AssertModuleSource use BTreeSet<Symbol> instead of BTreeSet<String>

CrateInfo.crate_name replace FxHashMap<CrateNum, String> with FxHashMap<CrateNum, Symbol>

2 years agoAuto merge of #95775 - RalfJung:miri-windows-compat, r=ChrisDenton
bors [Fri, 8 Apr 2022 08:13:21 +0000 (08:13 +0000)]
Auto merge of #95775 - RalfJung:miri-windows-compat, r=ChrisDenton

make windows compat_fn (crudely) work on Miri

With https://github.com/rust-lang/rust/pull/95469, Windows `compat_fn!` now has to be supported by Miri to even make stdout work. Unfortunately, it relies on some outside-of-Rust linker hacks (`#[link_section = ".CRT$XCU"]`) that are rather hard to make work in Miri. So I came up with this crude hack to make this stuff work in Miri regardless. It should come at no cost for regular executions, so I hope this is okay.

Cc https://github.com/rust-lang/rust/issues/95627 `@ChrisDenton`

2 years ago[bootstrap.py] Instruct curl to follow redirect
Kai Luo [Fri, 8 Apr 2022 06:45:47 +0000 (14:45 +0800)]
[bootstrap.py] Instruct curl to follow redirect

Some RUSTUP_DIST_SERVER perform redirection when downloading
stage0 compiler. Curl should be able to follow that.

2 years agoAuto merge of #95440 - jyn514:error-index, r=Mark-Simulacrum
bors [Fri, 8 Apr 2022 05:43:25 +0000 (05:43 +0000)]
Auto merge of #95440 - jyn514:error-index, r=Mark-Simulacrum

Fix `x test src/tools/error_index_generator --stage {0,1}`

There were two fixes needed:
1. Use `top_stage` instead of `top_stage - 1`. There was a long and torturous comment about trying to match rustdoc's version, but it works better without the hard-coding than with (before it gave errors that `libtest.so` couldn't be found).
2. Make sure that `ci-llvm/lib` is added to LD_LIBRARY_PATH. Previously the error index would be unable to load LLVM for stage0 builds.

At some point we should probably have a discussion about how rustdoc stages should be numbered;
confusion between 0/1/2 has come up several times in bootstrap now. cc https://github.com/rust-lang/rust/issues/92538

Note that this is still broken when using `download-rustc = true` and `--stage 1`,
but that's *really* a corner case and should affect almost no one. `--stage {0,2}`
work fine with download-rustc.

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

2 years agoadd `<[[T; N]]>::flatten`, `<[[T; N]]>::flatten_mut`, and `Vec::<[T; N]>::into_flattened`
Cyborus04 [Sat, 2 Apr 2022 00:07:28 +0000 (20:07 -0400)]
add `<[[T; N]]>::flatten`, `<[[T; N]]>::flatten_mut`, and `Vec::<[T; N]>::into_flattened`

2 years agoPromote x86_64-unknown-none to Tier 2
bstrie [Tue, 5 Apr 2022 21:47:40 +0000 (17:47 -0400)]
Promote x86_64-unknown-none to Tier 2

2 years agohide an #[allow] directive from the Arc::new_cyclic doc example
Jack O'Connor [Fri, 8 Apr 2022 00:56:06 +0000 (17:56 -0700)]
hide an #[allow] directive from the Arc::new_cyclic doc example

2 years agoreword panic vs result section to remove recoverable vs unrecoverable framing
Jane Lusby [Thu, 7 Apr 2022 20:44:57 +0000 (13:44 -0700)]
reword panic vs result section to remove recoverable vs unrecoverable framing

2 years agoCompute `ty_param_owner` using DefIdTree.
Camille GILLOT [Thu, 7 Apr 2022 20:24:07 +0000 (22:24 +0200)]
Compute `ty_param_owner` using DefIdTree.

2 years agointerpret: err instead of ICE on size mismatches in to_bits_or_ptr_internal
Ralf Jung [Thu, 7 Apr 2022 20:22:09 +0000 (16:22 -0400)]
interpret: err instead of ICE on size mismatches in to_bits_or_ptr_internal

2 years agoSuggest replacing typeof(...) with an actual type
Maybe Waffle [Thu, 7 Apr 2022 18:46:53 +0000 (22:46 +0400)]
Suggest replacing typeof(...) with an actual type

This commit suggests replacing typeof(...) with an actual type of "...",
for example in case of `typeof(1)` we suggest replacing it with `i32`.

If the expression
- Is not const (`{ let a = 1; let _: typeof(a); }`)
- Can't be found (`let _: typeof(this_variable_does_not_exist)`)
- Or has non-suggestable type (closure, generator, error, etc)
we don't suggest anything.

2 years agoAuto merge of #95767 - oli-obk:all_your_generics_belong_to_the_definitions, r=compile...
bors [Thu, 7 Apr 2022 19:37:43 +0000 (19:37 +0000)]
Auto merge of #95767 - oli-obk:all_your_generics_belong_to_the_definitions, r=compiler-errors

Report opaque type mismatches directly during borrowck of the function instead of within the `type_of` query.

This allows us to only store a single hidden type per opaque type instead of having to store one per set of substitutions.

r? `@compiler-errors`

This does not affect diagnostics, because the diagnostic messages are exactly the same.

2 years agoWindows: Increase a pipe's buffer capacity to 64kb
Chris Denton [Thu, 7 Apr 2022 19:15:16 +0000 (20:15 +0100)]
Windows: Increase a pipe's buffer capacity to 64kb

This brings it inline with typical Linux defaults: https://www.man7.org/linux/man-pages/man7/pipe.7.html

2 years agodo not round-trip function pointer through integer
Ralf Jung [Thu, 7 Apr 2022 18:58:02 +0000 (14:58 -0400)]
do not round-trip function pointer through integer

2 years agoHide cross-crate doc-hidden assoc items in trait impls
León Orell Valerian Liehr [Thu, 7 Apr 2022 14:50:51 +0000 (16:50 +0200)]
Hide cross-crate doc-hidden assoc items in trait impls

2 years agomake windows compat_fn (crudely) work on Miri
Ralf Jung [Thu, 7 Apr 2022 18:07:02 +0000 (14:07 -0400)]
make windows compat_fn (crudely) work on Miri

2 years agoAuto merge of #8657 - flip1995:raw_lint_desc, r=flip1995
bors [Thu, 7 Apr 2022 17:11:26 +0000 (17:11 +0000)]
Auto merge of #8657 - flip1995:raw_lint_desc, r=flip1995

Allow raw lint descriptions

update_lints now understands raw strings in declare_clippy_lint descriptions.

Supersedes  #8655

cc `@Alexendoo` thanks for addressing this so quickly. I build a little bit simpler version of your patch. I don't think it really matters what `Literal` we're trying to tokenize, since we assume later, that it is some sort of `str`.

changelog: none

2 years agoAllow raw lint descriptions
flip1995 [Thu, 7 Apr 2022 17:05:20 +0000 (18:05 +0100)]
Allow raw lint descriptions

update_lints now understands raw strings in declare_clippy_lint
descriptions.

Co-authored-by: Alex Macleod <alex@macleod.io>
2 years agoAuto merge of #95706 - petrochenkov:doclink4, r=GuillaumeGomez
bors [Thu, 7 Apr 2022 15:33:22 +0000 (15:33 +0000)]
Auto merge of #95706 - petrochenkov:doclink4, r=GuillaumeGomez

rustdoc: Early doc link resolution fixes and refactorings

A subset of https://github.com/rust-lang/rust/pull/94857 that shouldn't cause perf regressions, but should fix some issues like https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/ICE.20in.20collect_intra_doc_links.2Ers https://github.com/rust-lang/rust/pull/95290 and improve performance in cases like https://github.com/rust-lang/rust/issues/95694.

2 years agoAuto merge of #8656 - flip1995:rustup, r=flip1995
bors [Thu, 7 Apr 2022 15:30:27 +0000 (15:30 +0000)]
Auto merge of #8656 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

changelog: none

2 years agoManually mark 1.49 and 1.50 in linker-plugin-lto.md as Clang 11
Jack Grigg [Thu, 7 Apr 2022 15:30:19 +0000 (15:30 +0000)]
Manually mark 1.49 and 1.50 in linker-plugin-lto.md as Clang 11

`rustc +1.49.0 -Vv` and `rustc +1.50.0 -Vv` do not print out an
`LLVM version` line, which prevents the script from detecting them.

2 years agoUpdate linker-plugin-lto.md to contain up to Rust 1.60
Jack Grigg [Thu, 7 Apr 2022 15:29:14 +0000 (15:29 +0000)]
Update linker-plugin-lto.md to contain up to Rust 1.60

The table rows were obtained via the script embedded in the page.

2 years agoBump changelog stable version -> 1.60
flip1995 [Thu, 7 Apr 2022 15:26:43 +0000 (16:26 +0100)]
Bump changelog stable version -> 1.60

2 years agoBump nightly version -> 2022-04-07
flip1995 [Thu, 7 Apr 2022 15:24:55 +0000 (16:24 +0100)]
Bump nightly version -> 2022-04-07

2 years agoBump Clippy Version -> 0.1.62
flip1995 [Thu, 7 Apr 2022 15:24:33 +0000 (16:24 +0100)]
Bump Clippy Version -> 0.1.62

2 years agoFix internal::INVALID_PATHS lint
flip1995 [Thu, 7 Apr 2022 15:24:10 +0000 (16:24 +0100)]
Fix internal::INVALID_PATHS lint

2 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Thu, 7 Apr 2022 14:44:37 +0000 (15:44 +0100)]
Merge remote-tracking branch 'upstream/master' into rustup

2 years agoDeduplicate the error printing code for hidden type mismatches
Oli Scherer [Thu, 7 Apr 2022 13:52:59 +0000 (13:52 +0000)]
Deduplicate the error printing code for hidden type mismatches

2 years agoReport opaque type mismatches directly during borrowck of the function instead of...
Oli Scherer [Thu, 7 Apr 2022 13:39:38 +0000 (13:39 +0000)]
Report opaque type mismatches directly during borrowck of the function instead of within the `type_of` query.

This allows us to only store a single hidden type per opaque type instead of having to store one per set of substitutions.

2 years agoAuto merge of #8635 - pbor:unsigned-abs, r=giraffate
bors [Thu, 7 Apr 2022 13:17:28 +0000 (13:17 +0000)]
Auto merge of #8635 - pbor:unsigned-abs, r=giraffate

Add a lint to detect cast to unsigned for abs() and suggest unsigned_…

…abs()

changelog: Add a [`cast_abs_to_unsigned`] that checks for uses of `abs()` that are cast to the corresponding unsigned integer type and suggest to replace them with `unsigned_abs()`.

2 years agoDocument and rename the new wrapper type
Oli Scherer [Tue, 5 Apr 2022 16:42:47 +0000 (16:42 +0000)]
Document and rename the new wrapper type

2 years agoAuto merge of #8646 - Alexendoo:option-as-deref-mut, r=giraffate
bors [Thu, 7 Apr 2022 13:00:15 +0000 (13:00 +0000)]
Auto merge of #8646 - Alexendoo:option-as-deref-mut, r=giraffate

Fix `as_deref_mut` false positives in `needless_option_as_deref`

Also moves it into `methods/`

Fixes #7846
Fixes #8047

changelog: [`needless_option_as_deref`]: No longer lints for `as_deref_mut` on Options that cannot be moved

supersedes #8064

2 years agoAuto merge of #95715 - nnethercote:shrink-Nonterminal, r=davidtwco
bors [Thu, 7 Apr 2022 12:52:32 +0000 (12:52 +0000)]
Auto merge of #95715 - nnethercote:shrink-Nonterminal, r=davidtwco

Shrink `Nonterminal`

Small consistency and performance improvements.

r? `@petrochenkov`

2 years ago[macro_metavar_expr] Add tests to ensure the feature requirement
Caio [Thu, 7 Apr 2022 12:32:02 +0000 (09:32 -0300)]
[macro_metavar_expr] Add tests to ensure the feature requirement

2 years agoFix `as_deref_mut` false positives in `needless_option_as_deref`
Alex Macleod [Wed, 6 Apr 2022 14:35:49 +0000 (15:35 +0100)]
Fix `as_deref_mut` false positives in `needless_option_as_deref`

Also moves the lint to the methods directory

2 years agoKickstart the inner usage of macro_metavar_expr
Caio [Thu, 7 Apr 2022 11:13:41 +0000 (08:13 -0300)]
Kickstart the inner usage of macro_metavar_expr

2 years agoAuto merge of #95760 - Dylan-DPC:rollup-uskzggh, r=Dylan-DPC
bors [Thu, 7 Apr 2022 09:50:11 +0000 (09:50 +0000)]
Auto merge of #95760 - Dylan-DPC:rollup-uskzggh, r=Dylan-DPC

Rollup of 4 pull requests

Successful merges:

 - #95189 (Stop flagging unexpected inner attributes as outer ones in certain diagnostics)
 - #95752 (Regression test for #82866)
 - #95753 (Correct safety reasoning in `str::make_ascii_{lower,upper}case()`)
 - #95757 (Use gender neutral terms)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoReturn status from futex_wake().
Mara Bos [Wed, 6 Apr 2022 14:30:49 +0000 (16:30 +0200)]
Return status from futex_wake().

2 years agoconf: fix lint name in comment
Paolo Borelli [Thu, 7 Apr 2022 09:29:02 +0000 (11:29 +0200)]
conf: fix lint name in comment

The lint name is ERR_EXPECT, not EXPECT_ERR

2 years agonew lint cast_abs_to_unsigned
Paolo Borelli [Mon, 4 Apr 2022 16:38:38 +0000 (18:38 +0200)]
new lint cast_abs_to_unsigned

Add a lint to detect cast to unsigned for abs() and suggest
unsigned_abs() to avoid panic when called on MIN.

2 years agoRollup merge of #95757 - zofrex:gender-neutral-terms, r=dtolnay
Dylan DPC [Thu, 7 Apr 2022 09:17:17 +0000 (11:17 +0200)]
Rollup merge of #95757 - zofrex:gender-neutral-terms, r=dtolnay

Use gender neutral terms

#95508 was not executed well, but it did find a couple of legitimate issues: some uses of unnecessarily gendered language, and some typos. This PR fixes (properly) the legitimate issues it found.

2 years agoRollup merge of #95753 - ChayimFriedman2:patch-1, r=dtolnay
Dylan DPC [Thu, 7 Apr 2022 09:17:16 +0000 (11:17 +0200)]
Rollup merge of #95753 - ChayimFriedman2:patch-1, r=dtolnay

Correct safety reasoning in `str::make_ascii_{lower,upper}case()`

I don't understand why the previous comment was used (it was inserted in #66564), but it doesn't explain why these functions are safe, only why `str::as_bytes{_mut}()` are safe.

If someone thinks they make perfect sense, I'm fine with closing this PR.

2 years agoRollup merge of #95752 - compiler-errors:issue-82866, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 09:17:14 +0000 (11:17 +0200)]
Rollup merge of #95752 - compiler-errors:issue-82866, r=Dylan-DPC

Regression test for #82866

Saw that this issue was open when i was cleaning my old branch for #92237.
I am also not opposed to not adding an extra test and just closing #82866.

Fixes #82866

2 years agoRollup merge of #95189 - fmease:fix-issue-94340, r=estebank
Dylan DPC [Thu, 7 Apr 2022 09:17:13 +0000 (11:17 +0200)]
Rollup merge of #95189 - fmease:fix-issue-94340, r=estebank

Stop flagging unexpected inner attributes as outer ones in certain diagnostics

Fixes #94340.

In the issue to-be-fixed I write that the general message _an inner attribute is not permitted in this context_ should be more specific noting that the “context” is the `include` macro. This, however, cannot be achieved without touching a lot of things and passing a flag to the `parse_expr` and `parse_item` calls in `expand_include`. This seems rather hacky to me. That's why I left it as it. `Span::from_expansion` does not apply either AFAIK.

`@rustbot` label A-diagnostics T-compiler

2 years agoUse gender neutral terms
James 'zofrex' Sanderson [Thu, 7 Apr 2022 07:51:59 +0000 (08:51 +0100)]
Use gender neutral terms

2 years agoUpdate rustc-perf version used in CI and also the corresponding PGO benchmarks
Jakub Beránek [Wed, 6 Apr 2022 07:26:48 +0000 (09:26 +0200)]
Update rustc-perf version used in CI and also the corresponding PGO benchmarks

2 years agoAuto merge of #95678 - pietroalbini:pa-1.62.0-bootstrap, r=Mark-Simulacrum
bors [Thu, 7 Apr 2022 07:34:04 +0000 (07:34 +0000)]
Auto merge of #95678 - pietroalbini:pa-1.62.0-bootstrap, r=Mark-Simulacrum

Bump bootstrap compiler to 1.61.0 beta

This PR bumps the bootstrap compiler to the 1.61.0 beta. The first commit changes the stage0 compiler, the second commit applies the "mechanical" changes and the third and fourth commits apply changes explained in the relevant comments.

r? `@Mark-Simulacrum`

2 years agoAuto merge of #95748 - Dylan-DPC:rollup-t208j51, r=Dylan-DPC
bors [Thu, 7 Apr 2022 05:12:08 +0000 (05:12 +0000)]
Auto merge of #95748 - Dylan-DPC:rollup-t208j51, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #95352 ([bootstrap] Print the full relative path to failed tests)
 - #95646 (Mention `std::env::var` in `env!`)
 - #95708 (Update documentation for `trim*` and `is_whitespace` to include newlines)
 - #95714 (Add test for issue #83474)
 - #95725 (Message: Chunks cannot have a size of zero.)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoCorrect safety reasoning in `str::make_ascii_{lower,upper}case()`
Chayim Refael Friedman [Thu, 7 Apr 2022 04:52:07 +0000 (07:52 +0300)]
Correct safety reasoning in `str::make_ascii_{lower,upper}case()`

2 years agoregression test for #82866
Michael Goulet [Thu, 7 Apr 2022 04:43:34 +0000 (21:43 -0700)]
regression test for #82866

2 years agodon't report int/float ambiguity when we have previous errors
Michael Goulet [Thu, 7 Apr 2022 04:27:46 +0000 (21:27 -0700)]
don't report int/float ambiguity when we have previous errors

2 years agoRollup merge of #95725 - hkBst:patch-1, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 04:04:54 +0000 (06:04 +0200)]
Rollup merge of #95725 - hkBst:patch-1, r=Dylan-DPC

Message: Chunks cannot have a size of zero.

Add a message to the assertion that chunks cannot have a size of zero.

2 years agoRollup merge of #95714 - KSBilodeau:master, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 04:04:54 +0000 (06:04 +0200)]
Rollup merge of #95714 - KSBilodeau:master, r=Dylan-DPC

Add test for issue #83474

Adds test for https://github.com/rust-lang/rust/issues/83474 - second attempt at PR https://github.com/rust-lang/rust/pull/91821 which was abandoned.

2 years agoRollup merge of #95708 - fee1-dead:doc_whitespace_trim, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 04:04:52 +0000 (06:04 +0200)]
Rollup merge of #95708 - fee1-dead:doc_whitespace_trim, r=Dylan-DPC

Update documentation for `trim*` and `is_whitespace` to include newlines

2 years agoRollup merge of #95646 - mgeisler:mention-std-env-var, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 04:04:52 +0000 (06:04 +0200)]
Rollup merge of #95646 - mgeisler:mention-std-env-var, r=Dylan-DPC

Mention `std::env::var` in `env!`

When searching for how to read an environment variable, I first encountered the `env!` macro. It would have been useful to me if the documentation had included a link to `std::env::var`, which is what I was actually looking for.

2 years agoRollup merge of #95352 - jyn514:full-relative-path, r=Mark-Simulacrum
Dylan DPC [Thu, 7 Apr 2022 04:04:51 +0000 (06:04 +0200)]
Rollup merge of #95352 - jyn514:full-relative-path, r=Mark-Simulacrum

[bootstrap] Print the full relative path to failed tests

Before:
```
failures:
    [ui] rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 163 filtered out; finished in 0.45s
```

After:
```
failures:
    [ui] src/test/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 163 filtered out; finished in 0.45s
```

This allows copy pasting the path or using Ctrl+Click in IDEs to go directly to the file, instead of having to edit the filename first.

2 years agoShrink `Nonterminal`.
Nicholas Nethercote [Wed, 6 Apr 2022 02:08:39 +0000 (12:08 +1000)]
Shrink `Nonterminal`.

By heap allocating the argument within `NtPath`, `NtVis`, and `NtStmt`.
This slightly reduces cumulative and peak allocation amounts, most
notably on `deep-vector`.

2 years agoUpdate library/core/src/slice/mod.rs
Dylan DPC [Thu, 7 Apr 2022 02:44:30 +0000 (04:44 +0200)]
Update library/core/src/slice/mod.rs

Co-authored-by: Janusz Marcinkiewicz <virrages@gmail.com>
2 years agoremove exclamation mark
Dylan DPC [Thu, 7 Apr 2022 02:44:11 +0000 (04:44 +0200)]
remove exclamation mark

Co-authored-by: Janusz Marcinkiewicz <virrages@gmail.com>
2 years agoAuto merge of #95688 - pfmooney:libc-update, r=Mark-Simulacrum
bors [Thu, 7 Apr 2022 02:41:28 +0000 (02:41 +0000)]
Auto merge of #95688 - pfmooney:libc-update, r=Mark-Simulacrum

Update libc to 0.2.121

With the updated libc, UNIX stack overflow handling in libstd can now
use the common `si_addr` accessor function, rather than attempting to
use a field from that name in `siginfo_t`.  This simplifies the
collection of the fault address, particularly on platforms where that
data resides within a union in `siginfo_t`.

2 years agoadd necessary closure for partition_point
Jane Lusby [Thu, 7 Apr 2022 01:14:21 +0000 (18:14 -0700)]
add necessary closure for partition_point

2 years agoAuto merge of #95745 - Dylan-DPC:rollup-485ajqi, r=Dylan-DPC
bors [Thu, 7 Apr 2022 00:15:18 +0000 (00:15 +0000)]
Auto merge of #95745 - Dylan-DPC:rollup-485ajqi, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #95185 (Stabilize Stdin::lines.)
 - #95626 (Don't cast thread name to an integer for prctl)
 - #95709 (Improve terse test output.)
 - #95735 (Revert "Mark Location::caller() as #[inline]")
 - #95738 (Switch item-info from div to span)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #95738 - GuillaumeGomez:item-info-switch-to-span, r=jsha
Dylan DPC [Wed, 6 Apr 2022 23:59:24 +0000 (01:59 +0200)]
Rollup merge of #95738 - GuillaumeGomez:item-info-switch-to-span, r=jsha

Switch item-info from div to span

Following discussion in #95684.

cc `@jsha`
r? `@notriddle`