]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoRollup merge of #82798 - jyn514:rustdoc-group, r=Manishearth,GuillaumeGomez
Yuki Okushi [Sun, 14 Mar 2021 04:07:32 +0000 (13:07 +0900)]
Rollup merge of #82798 - jyn514:rustdoc-group, r=Manishearth,GuillaumeGomez

Rename `rustdoc` to `rustdoc::all`

When rustdoc lints were changed to be tool lints, the `rustdoc` group was removed, leading to spurious warnings like

```
warning: unknown lint: `rustdoc`
```

The lint group still worked when rustdoc ran, since rustdoc added the group itself.

This renames the group to `rustdoc::all` for consistency with `clippy::all` and the rest of the rustdoc lints.

Follow-up to #80527.
r? ``@Manishearth``

3 years agoRollup merge of #82789 - csmoe:issue-82772, r=estebank
Yuki Okushi [Sun, 14 Mar 2021 04:07:31 +0000 (13:07 +0900)]
Rollup merge of #82789 - csmoe:issue-82772, r=estebank

Get with field index from pattern slice instead of directly indexing

Closes #82772
r? ``@estebank``

https://github.com/rust-lang/rust/pull/82789#issuecomment-796921977
> ``@estebank`` So the real cause is we only generate single pattern for Box here
https://github.com/csmoe/rust/blob/615b03aeaa8ce9819de7828740ab3cd7def4fa76/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs#L1130-L1132
But in the replacing function, it tries to index on the 1-length pattern slice with field 1, thus out of bounds.
https://github.com/csmoe/rust/blob/615b03aeaa8ce9819de7828740ab3cd7def4fa76/compiler/rustc_mir_build/src/thir/pattern/deconstruct_pat.rs#L1346

3 years agoRollup merge of #82617 - camelid:everybody_loops-docs, r=jyn514
Yuki Okushi [Sun, 14 Mar 2021 04:07:30 +0000 (13:07 +0900)]
Rollup merge of #82617 - camelid:everybody_loops-docs, r=jyn514

Document `everybody_loops`

cc `@jyn514`

3 years agoRollup merge of #82121 - lopopolo:pathbuf-osstring-extend, r=joshtriplett
Yuki Okushi [Sun, 14 Mar 2021 04:07:28 +0000 (13:07 +0900)]
Rollup merge of #82121 - lopopolo:pathbuf-osstring-extend, r=joshtriplett

Implement Extend and FromIterator for OsString

Add the following trait impls:

- `impl Extend<OsString> for OsString`
- `impl<'a> Extend<&'a OsStr> for OsString`
- `impl FromIterator<OsString> for OsString`
- `impl<'a> FromIterator<&'a OsStr> for OsString`

Because `OsString` is a platform string with no particular semantics, concatenating them together seems acceptable.

I came across a use case for these trait impls in https://github.com/artichoke/artichoke/pull/1089:

Artichoke is a Ruby interpreter. Its CLI accepts multiple `-e` switches for executing inline Ruby code, like:

```console
$ cargo -q run --bin artichoke -- -e '2.times {' -e 'puts "foo: #{__LINE__}"' -e '}'
foo: 2
foo: 2
```

I use `clap` for command line argument parsing, which collects these `-e` commands into a `Vec<OsString>`. To pass these commands to the interpreter for `Eval`, I need to join them together. Combining these impls with `Iterator::intersperse` https://github.com/rust-lang/rust/issues/79524 would enable me to build a single bit of Ruby code.

Currently, I'm doing something like:

```rust
let mut commands = commands.into_iter();
let mut buf = if let Some(command) = commands.next() {
    command
} else {
    return Ok(Ok(()));
};
for command in commands {
    buf.push("\n");
    buf.push(command);
}
```

If there's interest, I'd also like to add impls for `Cow<'a, OsStr>`, which would avoid allocating the `"\n"` `OsString` in the concatenate + intersperse use case.

3 years agoRollup merge of #81465 - joshtriplett:duration-formatting-documentation, r=m-ou-se
Yuki Okushi [Sun, 14 Mar 2021 04:07:27 +0000 (13:07 +0900)]
Rollup merge of #81465 - joshtriplett:duration-formatting-documentation, r=m-ou-se

Add documentation about formatting `Duration` values

Explain why Duration has a Debug impl but not a Display impl, and
mention the use of Unicode.

3 years agobless tests
Erik Desjardins [Sun, 14 Mar 2021 04:04:38 +0000 (23:04 -0500)]
bless tests

3 years agoUpdate `rustdoc-ui` versions of the `doc-attr` test
Camelid [Sun, 14 Mar 2021 00:36:38 +0000 (16:36 -0800)]
Update `rustdoc-ui` versions of the `doc-attr` test

It seems there are two copies of it: one in `src/test/ui/attributes/`
and one in `src/test/rustdoc-ui/`. I'm guessing this is to test that the
lint is emitted both when you run the compiler and when you run rustdoc.

3 years agoAdd hyphen to "crate level"
Camelid [Sat, 13 Mar 2021 22:32:06 +0000 (14:32 -0800)]
Add hyphen to "crate level"

"crate level attribute" -> "crate-level attribute"

3 years agoDo not emit alloca for ZST local even if it is uninitialized
Simon Vandel Sillesen [Sun, 3 Jan 2021 14:45:15 +0000 (15:45 +0100)]
Do not emit alloca for ZST local even if it is uninitialized

3 years agoMove ZST check inside UsedLocals
Simon Vandel Sillesen [Sun, 3 Jan 2021 13:51:24 +0000 (14:51 +0100)]
Move ZST check inside UsedLocals

3 years agoExtend SimplifyLocals to remove ZST writes
Simon Vandel Sillesen [Tue, 29 Dec 2020 22:32:31 +0000 (23:32 +0100)]
Extend SimplifyLocals to remove ZST writes

3 years agoAdd another test case
Camelid [Fri, 12 Mar 2021 20:27:52 +0000 (12:27 -0800)]
Add another test case

3 years agoReport error for each invalid nested attribute
Camelid [Thu, 11 Mar 2021 23:41:51 +0000 (15:41 -0800)]
Report error for each invalid nested attribute

3 years agoDocument `everybody_loops`
Camelid [Sun, 28 Feb 2021 03:36:37 +0000 (19:36 -0800)]
Document `everybody_loops`

3 years agoLint non-meta doc attributes
Camelid [Sat, 13 Mar 2021 21:25:27 +0000 (13:25 -0800)]
Lint non-meta doc attributes

E.g., `#[doc(123)]`.

3 years agoRefactor `check_doc_attrs` body
Camelid [Sat, 13 Mar 2021 21:13:27 +0000 (13:13 -0800)]
Refactor `check_doc_attrs` body

This change makes it easier to follow the control flow.

I also moved the end-of-line comments attached to some symbols to before
the symbol listing. This allows rustfmt to format the code; otherwise no
formatting occurs (see rust-lang/rustfmt#4750).

3 years agoAdd documentation about formatting `Duration` values
Josh Triplett [Thu, 28 Jan 2021 08:51:31 +0000 (00:51 -0800)]
Add documentation about formatting `Duration` values

Explain why Duration has a Debug impl but not a Display impl, and
mention the use of Unicode.

3 years agoAlways lower asm! to valid HIR
Amanieu d'Antras [Sat, 6 Mar 2021 19:00:04 +0000 (19:00 +0000)]
Always lower asm! to valid HIR

3 years agoAuto merge of #83064 - cjgillot:fhash, r=jackh726
bors [Sat, 13 Mar 2021 20:21:40 +0000 (20:21 +0000)]
Auto merge of #83064 - cjgillot:fhash, r=jackh726

Tweaks to stable hashing

3 years agocrates.js should use root_path and not static_root_path
Guillaume Gomez [Sat, 13 Mar 2021 20:21:03 +0000 (21:21 +0100)]
crates.js should use root_path and not static_root_path

3 years agoAvoid sorting predicates by `DefId`
Aaron Hill [Fri, 12 Mar 2021 22:53:02 +0000 (17:53 -0500)]
Avoid sorting predicates by `DefId`

Fixes issue #82920

Even if an item does not change between compilation sessions, it may end
up with a different `DefId`, since inserting/deleting an item affects
the `DefId`s of all subsequent items. Therefore, we use a `DefPathHash`
in the incremental compilation system, which is stable in the face of
changes to unrelated items.

In particular, the query system will consider the inputs to a query to
be unchanged if any `DefId`s in the inputs have their `DefPathHash`es
unchanged. Queries are pure functions, so the query result should be
unchanged if the query inputs are unchanged.

Unfortunately, it's possible to inadvertantly make a query result
incorrectly change across compilations, by relying on the specific value
of a `DefId`. Specifically, if the query result is a slice that gets
sorted by `DefId`, the precise order will depend on how the `DefId`s got
assigned in a particular compilation session. If some definitions end up
with different `DefId`s (but the same `DefPathHash`es) in a subsequent
compilation session, we will end up re-computing a *different* value for
the query, even though the query system expects the result to unchanged
due to the unchanged inputs.

It turns out that we have been sorting the predicates computed during
`astconv` by their `DefId`. These predicates make their way into the
`super_predicates_that_define_assoc_type`, which ends up getting used to
compute the vtables of trait objects. This, re-ordering these predicates
between compilation sessions can lead to undefined behavior at runtime -
the query system will re-use code built with a *differently ordered*
vtable, resulting in the wrong method being invoked at runtime.

This PR avoids sorting by `DefId` in `astconv`, fixing the
miscompilation. However, it's possible that other instances of this
issue exist - they could also be easily introduced in the future.

To fully fix this issue, we should
1. Turn on `-Z incremental-verify-ich` by default. This will cause the
   compiler to ICE whenver an 'unchanged' query result changes between
   compilation sessions, instead of causing a miscompilation.
2. Remove the `Ord` impls for `CrateNum` and `DefId`. This will make it
   difficult to introduce ICEs in the first place.

3 years agoAuto merge of #83007 - Aaron1011:incr-verify-default, r=Mark-Simulacrum
bors [Sat, 13 Mar 2021 17:52:22 +0000 (17:52 +0000)]
Auto merge of #83007 - Aaron1011:incr-verify-default, r=Mark-Simulacrum

Turn `-Z incremental-verify-ich` on by default

Issue #82920 showed that the kind of bugs caught by this flag have
soundness implications.

3 years agoRemove tab character
Michael Howell [Sat, 13 Mar 2021 17:29:21 +0000 (10:29 -0700)]
Remove tab character

3 years agoAvoid potential collisions with `constructor` and the search query
Michael Howell [Sat, 13 Mar 2021 17:28:36 +0000 (10:28 -0700)]
Avoid potential collisions with `constructor` and the search query

3 years agoAdd comments regarding object shapes in buildIndex
Michael Howell [Sat, 13 Mar 2021 17:12:17 +0000 (10:12 -0700)]
Add comments regarding object shapes in buildIndex

3 years agoAlways run `incremental_verify_ich` when re-computing query results
Aaron Hill [Thu, 11 Mar 2021 06:12:07 +0000 (01:12 -0500)]
Always run `incremental_verify_ich` when re-computing query results

Issue #82920 showed that the kind of bugs caught by this flag have
soundness implications.

This causes performance regressions of up to 15.2% during incremental
compilation, but this is necessary to catch miscompilations caused by
bugs in query implementations.

3 years agoFix jslint warnings
Michael Howell [Sat, 13 Mar 2021 16:54:19 +0000 (09:54 -0700)]
Fix jslint warnings

3 years agoUse only x86_64 flag
Hiroki Noda [Fri, 12 Mar 2021 10:46:17 +0000 (19:46 +0900)]
Use only x86_64 flag

3 years agoUse null instead of undefined here
Michael Howell [Sat, 13 Mar 2021 16:34:37 +0000 (09:34 -0700)]
Use null instead of undefined here

3 years agoUpdate src/librustdoc/html/static/main.js
Michael Howell [Sat, 13 Mar 2021 16:32:40 +0000 (09:32 -0700)]
Update src/librustdoc/html/static/main.js

Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
3 years agoAuto merge of #83069 - tgnottingham:simplify-query-cache-iter, r=cjgillot
bors [Sat, 13 Mar 2021 15:11:25 +0000 (15:11 +0000)]
Auto merge of #83069 - tgnottingham:simplify-query-cache-iter, r=cjgillot

rustc_query_system: simplify QueryCache::iter

Minor cleanup to reduce a small amount of complexity and code bloat.
Reduces the number of mono items in rustc_query_impl by 15%.

3 years agoIterate on crate_inherent_impls for metadata.
Camille GILLOT [Sat, 13 Mar 2021 13:17:55 +0000 (14:17 +0100)]
Iterate on crate_inherent_impls for metadata.

3 years agoAuto merge of #82891 - cjgillot:monoparent, r=petrochenkov
bors [Sat, 13 Mar 2021 12:28:04 +0000 (12:28 +0000)]
Auto merge of #82891 - cjgillot:monoparent, r=petrochenkov

Make def_key and HIR parenting consistent.

r? `@petrochenkov`

3 years agoAdd regression tests
hyd-dev [Sat, 13 Mar 2021 11:14:57 +0000 (19:14 +0800)]
Add regression tests

3 years agoFix panic message of `assert_failed_inner`
hyd-dev [Sat, 13 Mar 2021 10:50:43 +0000 (18:50 +0800)]
Fix panic message of `assert_failed_inner`

3 years agoAuto merge of #82878 - sexxi-goose:repr_packed, r=nikomatsakis
bors [Sat, 13 Mar 2021 09:47:07 +0000 (09:47 +0000)]
Auto merge of #82878 - sexxi-goose:repr_packed, r=nikomatsakis

2229: Handle capturing a reference into a repr packed struct

RFC 1240 states that it is unsafe to capture references into a
packed-struct. This PR ensures that when a closure captures a precise
path, we aren't violating this safety constraint.

To acheive so we restrict the capture precision to the struct itself.

An interesting edge case where we decided to restrict precision:
```rust
struct Foo(String);

let foo: Foo;
let c = || {
    println!("{}", foo.0);
    let x = foo.0;
}
```

Given how closures get desugared today, foo.0 will be moved into the
closure, making the `println!`, safe. However this can be very subtle
and also will be unsafe if the closure gets inline.

Closes: https://github.com/rust-lang/project-rfc-2229/issues/33
r? `@nikomatsakis`

3 years agoAdd `reverse` search alias for Iterator::rev()
Sebastian Widua [Sat, 13 Mar 2021 00:09:53 +0000 (01:09 +0100)]
Add `reverse` search alias for Iterator::rev()

3 years agoAuto merge of #82760 - WaffleLapkin:unleak_extend_from_within, r=kennytm
bors [Sat, 13 Mar 2021 07:06:01 +0000 (07:06 +0000)]
Auto merge of #82760 - WaffleLapkin:unleak_extend_from_within, r=kennytm

Fix leak in Vec::extend_from_within

Fixes #82533

3 years agoEagerly generate the underscore-less name to search on
Michael Howell [Sat, 13 Mar 2021 06:52:46 +0000 (23:52 -0700)]
Eagerly generate the underscore-less name to search on

Basically, it doesn't make sense to generate those things every time
you search. That generates a bunch of stuff for the GC to clean up,
when, if the user wanted to do another search, it would just need
to re-do it again.

3 years agoIn checkGenerics and checkType, don't use Array.prototype.splice so much
Michael Howell [Sat, 13 Mar 2021 06:23:42 +0000 (23:23 -0700)]
In checkGenerics and checkType, don't use Array.prototype.splice so much

Every time splice() is called, another temporary object is created.
This version, which uses plain objects as a sort of Hash Bag,
should only produce one temporary object each time it's called.

3 years agoGet rid of the garbage produced by getObjectFromId
Michael Howell [Sat, 13 Mar 2021 05:59:16 +0000 (22:59 -0700)]
Get rid of the garbage produced by getObjectFromId

There is no reason for this function to return an object,
since it is always used for getting at the name anyhow.
It's used in the inner loop for some popular functions,
so we want to avoid allocating in it.

3 years agoAuto merge of #82436 - osa1:issue80258, r=nikomatsakis
bors [Sat, 13 Mar 2021 04:38:39 +0000 (04:38 +0000)]
Auto merge of #82436 - osa1:issue80258, r=nikomatsakis

Allow calling *const methods on *mut values

This allows `*const` methods to be called on `*mut` values.

TODOs:

- [x] ~~Remove debug logs~~ Done.
- [x] ~~I haven't tested, but I think this currently won't work when the `self` value has type like `&&&&& *mut X` because I don't do any autoderefs when probing. To fix this the new code in `rustc_typeck::check::method::probe` needs to reuse `pick_method` somehow as I think that's the function that autoderefs.~~ This works, because autoderefs are done before calling `pick_core`, in `method_autoderef_steps`, called by `probe_op`.
- [x] ~~I should probably move the new `Pick` to `pick_autorefd_method`. If not, I should move it to its own function.~~ Done.
- [ ] ~~Test this with a `Pick` with `to_ptr = true` and `unsize = true`.~~ I think this case cannot happen, because we don't have any array methods with `*mut [X]` receiver. I should confirm that this is true and document this. I've placed two assertions about this.
- [x] ~~Maybe give `(Mutability, bool)` a name and fields~~ I now have a `to_const_ptr` field in `Pick`.
- [x] ~~Changes in `adjust_self_ty` is quite hacky. The problem is we can't deref a pointer, and even if we don't have an adjustment to get the address of a value, so to go from `*mut` to `*const` we need a special case.~~ There's still a special case for `to_const_ptr`, but I'm not sure if we can avoid this.
- [ ] Figure out how `reached_raw_pointer` stuff is used. I suspect only for error messages.

Fixes #80258

3 years agoUpdate `Vec` docs
Henry Boisdequin [Sat, 13 Mar 2021 02:28:03 +0000 (07:58 +0530)]
Update `Vec` docs

3 years agoUpdate cargo
Eric Huss [Sat, 13 Mar 2021 02:10:17 +0000 (18:10 -0800)]
Update cargo

3 years agoAuto merge of #83067 - JohnTitor:rollup-0wo338i, r=JohnTitor
bors [Sat, 13 Mar 2021 02:08:33 +0000 (02:08 +0000)]
Auto merge of #83067 - JohnTitor:rollup-0wo338i, r=JohnTitor

Rollup of 6 pull requests

Successful merges:

 - #82984 (Simplify ast block lowering)
 - #83012 (Update Clippy)
 - #83020 (Emit the enum range assumption if the range only contains one element)
 - #83037 (Support merge_functions option in NewPM since LLVM >= 12)
 - #83052 (updated vulnerable deps)
 - #83059 (Allow configuring `rustdoc --disable-minification` in config.toml)

Failed merges:

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

3 years agorustc_query_system: simplify QueryCache::iter
Tyson Nottingham [Thu, 11 Mar 2021 19:22:47 +0000 (11:22 -0800)]
rustc_query_system: simplify QueryCache::iter

Minor cleanup to reduce a small amount of complexity and code bloat.
Reduces the number of mono items in rustc_query_impl by 15%.

3 years agoRollup merge of #83059 - notriddle:config-toml-disable-minification, r=Mark-Simulacrum
Yuki Okushi [Sat, 13 Mar 2021 00:44:47 +0000 (09:44 +0900)]
Rollup merge of #83059 - notriddle:config-toml-disable-minification, r=Mark-Simulacrum

Allow configuring `rustdoc --disable-minification` in config.toml

This way, you can debug rustdoc's JavaScript and CSS file with normal F12 Dev Tools and you'll have useful line numbers to work with.

3 years agoRollup merge of #83052 - klensy:dep-update, r=Mark-Simulacrum
Yuki Okushi [Sat, 13 Mar 2021 00:44:46 +0000 (09:44 +0900)]
Rollup merge of #83052 - klensy:dep-update, r=Mark-Simulacrum

updated vulnerable deps

* Updated signal-hook-registry 1.2.1 to 1.2.2, as it drops dependency on vulnerable arc-swap 0.4.7 https://rustsec.org/advisories/RUSTSEC-2020-0091
* Updated generic-array 0.12.3 to 0.12.4, vuln https://rustsec.org/advisories/RUSTSEC-2020-0146
* Updated sized-chunks 0.6.2 to 0.6.4, vuln https://rustsec.org/advisories/RUSTSEC-2020-0041 fixed in 0.6.3, in 0.6.4 fixed some UB https://github.com/bodil/sized-chunks/blob/master/CHANGELOG.md#064---2021-02-17

3 years agoRollup merge of #83037 - kubo39:merge-functions-in-llvm-new-pass-manager, r=nikic
Yuki Okushi [Sat, 13 Mar 2021 00:44:45 +0000 (09:44 +0900)]
Rollup merge of #83037 - kubo39:merge-functions-in-llvm-new-pass-manager, r=nikic

Support merge_functions option in NewPM since LLVM >= 12

now we can pass this flag since https://reviews.llvm.org/D93002 has been merged.

3 years agoRollup merge of #83020 - hi-rustin:rustin-patch-enum, r=lcnr
Yuki Okushi [Sat, 13 Mar 2021 00:44:44 +0000 (09:44 +0900)]
Rollup merge of #83020 - hi-rustin:rustin-patch-enum, r=lcnr

Emit the enum range assumption if the range only contains one element

close https://github.com/rust-lang/rust/issues/82871

3 years agoRollup merge of #83012 - flip1995:clippyup, r=Manishearth
Yuki Okushi [Sat, 13 Mar 2021 00:44:43 +0000 (09:44 +0900)]
Rollup merge of #83012 - flip1995:clippyup, r=Manishearth

Update Clippy

Bi-weekly Clippy sync.

r? ``@Manishearth``

3 years agoRollup merge of #82984 - camsteffen:lower-block, r=cjgillot
Yuki Okushi [Sat, 13 Mar 2021 00:44:42 +0000 (09:44 +0900)]
Rollup merge of #82984 - camsteffen:lower-block, r=cjgillot

Simplify ast block lowering

3 years agoAuto merge of #83022 - m-ou-se:mem-replace-no-swap, r=nagisa
bors [Fri, 12 Mar 2021 23:27:23 +0000 (23:27 +0000)]
Auto merge of #83022 - m-ou-se:mem-replace-no-swap, r=nagisa

Don't implement mem::replace with mem::swap.

`swap` is a complicated operation, so this changes the implementation of `replace` to use `read` and `write` instead.

See https://github.com/rust-lang/rust/pull/83019.

I wrote there:

> Implementing the simpler operation (replace) with the much more complicated operation (swap) doesn't make a whole lot of sense. `replace` is just read+write, and the primitive for moving out of a `&mut`. `swap` is for doing that to *two* `&mut` at the same time, which is both more niche and more complicated (as shown by `swap_nonoverlapping_bytes`).

This could be especially interesting for `Option<VeryLargeStruct>::take()`, since swapping such a large structure with `swap_nonoverlapping_bytes` is going to be much less efficient than `ptr::write()`'ing a `None`.

But also for small values where `swap` just reads/writes using temporary variable, this makes a `replace` or `take` operation simpler:
![image](https://user-images.githubusercontent.com/783247/110839393-c7e6bd80-82a3-11eb-97b7-28acb14deffd.png)

3 years agoMake docs-minification default to true
Michael Howell [Fri, 12 Mar 2021 22:03:54 +0000 (15:03 -0700)]
Make docs-minification default to true

3 years agoMake def_key and HIR parenting consistent.
Camille GILLOT [Sat, 13 Feb 2021 19:41:02 +0000 (20:41 +0100)]
Make def_key and HIR parenting consistent.

3 years agoImprove the wording for the `can't reassign` error
Yuki Okushi [Fri, 12 Mar 2021 20:56:30 +0000 (05:56 +0900)]
Improve the wording for the `can't reassign` error

3 years agoAdd a `disable-minification` option for rustdoc
Michael Howell [Fri, 12 Mar 2021 18:41:46 +0000 (11:41 -0700)]
Add a `disable-minification` option for rustdoc

This way, you can debug rustdoc's JavaScript and CSS file
with normal F12 Dev Tools and you'll have useful line numbers
to work with.

3 years agoAuto merge of #83024 - Xanewok:update-rls, r=Dylan-DPC
bors [Fri, 12 Mar 2021 16:57:11 +0000 (16:57 +0000)]
Auto merge of #83024 - Xanewok:update-rls, r=Dylan-DPC

Update RLS

Fixes #82932

r? `@ghost`

3 years agoClippy: HACK! Fix bootstrap error
flip1995 [Fri, 12 Mar 2021 14:32:04 +0000 (15:32 +0100)]
Clippy: HACK! Fix bootstrap error

This will be removed in the next sync, once beta is at 1.52. Until then
this hack avoids to put `cfg(bootstrap)` into Clippy.

3 years agoUpdate Cargo.lock
flip1995 [Fri, 12 Mar 2021 14:31:11 +0000 (15:31 +0100)]
Update Cargo.lock

3 years agoMerge commit '6ed6f1e6a1a8f414ba7e6d9b8222e7e5a1686e42' into clippyup
flip1995 [Fri, 12 Mar 2021 14:30:50 +0000 (15:30 +0100)]
Merge commit '6ed6f1e6a1a8f414ba7e6d9b8222e7e5a1686e42' into clippyup

3 years agoAuto merge of #83030 - nikic:update-llvm, r=nagisa
bors [Fri, 12 Mar 2021 14:16:01 +0000 (14:16 +0000)]
Auto merge of #83030 - nikic:update-llvm, r=nagisa

Update llvm-project submodule

Fixes #82833. Fixes #82859. Probably also `fixes` #83025. This also merges in the current upstream 12.x branch.

r? `@nagisa`

3 years agoupdated vulnerable deps
klensy [Fri, 12 Mar 2021 13:33:02 +0000 (16:33 +0300)]
updated vulnerable deps

3 years agoAuto merge of #82422 - petrochenkov:allunst, r=oli-obk
bors [Fri, 12 Mar 2021 11:46:50 +0000 (11:46 +0000)]
Auto merge of #82422 - petrochenkov:allunst, r=oli-obk

expand: Do not allocate `Lrc` for `allow_internal_unstable` list unless necessary

This allocation is done for any macro defined in the current crate, or used from a different crate.
EDIT: This also removes an `Lrc` increment from each *use* of such macro, which may be more significant.
Noticed when reviewing https://github.com/rust-lang/rust/pull/82367.
This probably doesn't matter, but let's do a perf run.

3 years agoAuto merge of #82935 - henryboisdequin:diagnostic-cleanups, r=estebank
bors [Fri, 12 Mar 2021 09:05:38 +0000 (09:05 +0000)]
Auto merge of #82935 - henryboisdequin:diagnostic-cleanups, r=estebank

Diagnostic cleanups

Follow up to #81503
Helps with #82916 (don't show note if `span` is `DUMMY_SP`)

3 years agoEmit the enum range assumption if the range only contains one element
hi-rustin [Thu, 11 Mar 2021 15:30:39 +0000 (23:30 +0800)]
Emit the enum range assumption if the range only contains one element

test: add test case

make tidy happy

3 years agoAdd support for storing code model to LLVM module IR
Hiroki Noda [Thu, 11 Mar 2021 23:35:13 +0000 (08:35 +0900)]
Add support for storing code model to LLVM module IR

This patch avoids undefined behavior by linking different object files.
Also this would it could be propagated properly to LTO.

See https://reviews.llvm.org/D52322 and https://reviews.llvm.org/D52323.

This patch is based on https://github.com/rust-lang/rust/pull/74002

3 years agoDon't show note if `span` is `DUMMY_SP`
Henry Boisdequin [Tue, 9 Mar 2021 14:42:47 +0000 (20:12 +0530)]
Don't show note if `span` is `DUMMY_SP`

3 years agoAuto merge of #83042 - JohnTitor:rollup-s8efv94, r=JohnTitor
bors [Fri, 12 Mar 2021 00:23:05 +0000 (00:23 +0000)]
Auto merge of #83042 - JohnTitor:rollup-s8efv94, r=JohnTitor

Rollup of 11 pull requests

Successful merges:

 - #80385 (Clarify what `Cell::replace` returns)
 - #82571 (Rustdoc Json: Add tests for Reexports, and improve jsondocck)
 - #82860 (Add `-Z unpretty` flag for the THIR)
 - #82950 (convert slice doc link to intra-doc links)
 - #82965 (Add spirv extension handling in compiletest)
 - #82966 (update MSYS2 link in README)
 - #82979 (Fix "run" button position in error index)
 - #83001 (Ignore Vim swap files)
 - #83003 (rustdoc: tweak the search index format)
 - #83013 (Adjust some `#[cfg]`s to take non-Unix non-Windows operating systems into account)
 - #83018 (Reintroduce accidentally deleted assertions.)

Failed merges:

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

3 years agoRollup merge of #83018 - oli-obk:float_check, r=davidtwco
Yuki Okushi [Thu, 11 Mar 2021 23:55:22 +0000 (08:55 +0900)]
Rollup merge of #83018 - oli-obk:float_check, r=davidtwco

Reintroduce accidentally deleted assertions.

These were removed in https://github.com/rust-lang/rust/pull/50198

3 years agoRollup merge of #83013 - hyd-dev:cfg-unix-windows, r=bjorn3
Yuki Okushi [Thu, 11 Mar 2021 23:55:21 +0000 (08:55 +0900)]
Rollup merge of #83013 - hyd-dev:cfg-unix-windows, r=bjorn3

Adjust some `#[cfg]`s to take non-Unix non-Windows operating systems into account

This makes compilation to such targets (e.g. `wasm32-wasi`) easier.

cc rust-lang/miri#722 https://github.com/rust-lang/rust/commit/bb6d1d0a0966c04a75389348642e11ae44c86514#r48100619

3 years agoRollup merge of #83003 - notriddle:rustdoc-index-v3, r=GuillaumeGomez
Yuki Okushi [Thu, 11 Mar 2021 23:55:20 +0000 (08:55 +0900)]
Rollup merge of #83003 - notriddle:rustdoc-index-v3, r=GuillaumeGomez

rustdoc: tweak the search index format

This essentially switches search-index.js from a "array of struct" to a "struct of array" format, like this:

    {
    "doc": "Crate documentation",
    "t": [ 1, 1, 2, 3, ... ],
    "n": [ "Something", "SomethingElse", "whatever", "do_stuff", ... ],
    "q": [ "a::b", "", "", "", ... ],
    "d": [ "A Struct That Does Something", "Another Struct", "a function", "another function", ... ],
    "i": [ 0, 0, 1, 1, ... ],
    "f": [ null, null, [], [], ... ],
    "p": ...,
    "a": ...
    }

So `{ty: 1, name: "Something", path: "a::b", desc: "A Struct That Does Something", parent_idx: 0, search_type: null}` is the first item.

This makes the uncompressed version smaller, but it really shows on the compressed version:

    notriddle:rust$ wc -c new-search-index1.52.0.js
    2622427 new-search-index1.52.0.js
    notriddle:rust$ wc -c old-search-index1.52.0.js
    2725046 old-search-index1.52.0.js
    notriddle:rust$ gzip new-search-index1.52.0.js
    notriddle:rust$ gzip old-search-index1.52.0.js
    notriddle:rust$ wc -c new-search-index1.52.0.js.gz
    239385 new-search-index1.52.0.js.gz
    notriddle:rust$ wc -c old-search-index1.52.0.js.gz
    296328 old-search-index1.52.0.js.gz

That's a 4% improvement on the uncompressed version (fewer `[]`, and also changing `null` to `0` in the parent_idx list), and 20% improvement after gzipping it, thanks to putting like-typed data next to each other. Any compression algorithm based on a sliding window will probably show this kind of improvement.

3 years agoRollup merge of #83001 - camelid:gitignore-vim-swap, r=Mark-Simulacrum
Yuki Okushi [Thu, 11 Mar 2021 23:55:19 +0000 (08:55 +0900)]
Rollup merge of #83001 - camelid:gitignore-vim-swap, r=Mark-Simulacrum

Ignore Vim swap files

I got this from [a Stack Overflow answer][so].
(I didn't add `*~` because it was already there.)

[so]: https://stackoverflow.com/a/4824199

3 years agoRollup merge of #82979 - GuillaumeGomez:run-button-pos, r=Nemo157
Yuki Okushi [Thu, 11 Mar 2021 23:55:18 +0000 (08:55 +0900)]
Rollup merge of #82979 - GuillaumeGomez:run-button-pos, r=Nemo157

Fix "run" button position in error index

This isn't really a rustdoc issue but I still made the same fix in the `rustdoc.css` file (doesn't hurt).

Before:

![Screenshot from 2021-03-10 16-35-49](https://user-images.githubusercontent.com/3050060/110655807-aa402800-81bf-11eb-8a88-bc979efd1697.png)

After:

![Screenshot from 2021-03-10 16-40-08](https://user-images.githubusercontent.com/3050060/110655843-b4622680-81bf-11eb-8670-42975d92b4eb.png)

cc ````@jyn514```` (considering this is quite a big bug and an easy fix)
r? ````@Nemo157````

3 years agoRollup merge of #82966 - tspiteri:msys2-link, r=Mark-Simulacrum
Yuki Okushi [Thu, 11 Mar 2021 23:55:17 +0000 (08:55 +0900)]
Rollup merge of #82966 - tspiteri:msys2-link, r=Mark-Simulacrum

update MSYS2 link in README

Now https://msys2.github.io/ redirects to https://www.msys2.org/, so the README might just link to that immediately.

3 years agoRollup merge of #82965 - XAMPPRocky:spv-ext, r=nagisa
Yuki Okushi [Thu, 11 Mar 2021 23:55:16 +0000 (08:55 +0900)]
Rollup merge of #82965 - XAMPPRocky:spv-ext, r=nagisa

Add spirv extension handling in compiletest

We're trying to use `compiletest` for Rust-GPU's testsuite, and ran into an issue with host specific extensions. This adds handling to fix that.

3 years agoRollup merge of #82950 - mockersf:slice-intra-doc-link, r=jyn514
Yuki Okushi [Thu, 11 Mar 2021 23:55:15 +0000 (08:55 +0900)]
Rollup merge of #82950 - mockersf:slice-intra-doc-link, r=jyn514

convert slice doc link to intra-doc links

Continuing where #80189 stopped, with `core::slice`.

I had an issue with two dead links in my doc when implementing `Deref<Target = [T]>` for one of my type. This means that [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key) was available, but not [`sort_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key) even though it was linked in it's doc (same issue with [`as_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr) and [`as_mut_pbr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr)). It becomes available if I implement `DerefMut`, as it needs an `&mut self`.

<details>
  <summary>Code that will have dead links in its doc</summary>

```rust
pub struct A;
pub struct B;

impl std::ops::Deref for B{
    type Target = [A];

    fn deref(&self) -> &Self::Target {
        &A
    }
}
```
</details>

I removed the link to `sort_by_key` from `binary_search_by_key` doc as I didn't find a nice way to have a live link:
- `binary_search_by_key` is in `core`
- `sort_by_key` is in `alloc`
- intra-doc link `slice::sort_by_key` doesn't work, as `alloc` is not available when `core` is being build (the warning can't be ignored: ```error[E0710]: an unknown tool name found in scoped lint: `rustdoc::broken_intra_doc_links` ```)
- keeping the link as an anchor `#method.sort_by_key` meant a dead link
- an absolute link would work but doesn't feel right...

3 years agoRollup merge of #82860 - LeSeulArtichaut:unpretty-thir, r=spastorino
Yuki Okushi [Thu, 11 Mar 2021 23:55:14 +0000 (08:55 +0900)]
Rollup merge of #82860 - LeSeulArtichaut:unpretty-thir, r=spastorino

Add `-Z unpretty` flag for the THIR

This adds a new perma-unstable flag, `-Zunpretty=thir-tree`, that dumps the raw THIR tree for each body in the crate.

Implements the THIR part of MCP rust-lang/compiler-team#408, helps with rust-lang/rustc-dev-guide#1062.
Depends on #82495, blocked on that. Only the two last commits are added by this PR.
r? ```@spastorino``` cc ```@estebank```

3 years agoRollup merge of #82571 - aDotInTheVoid:reexport-tests, r=CraftSpider
Yuki Okushi [Thu, 11 Mar 2021 23:55:13 +0000 (08:55 +0900)]
Rollup merge of #82571 - aDotInTheVoid:reexport-tests, r=CraftSpider

Rustdoc Json: Add tests for Reexports, and improve jsondocck

The two changes are orthognal, so you can land just one if you want, but the improved errors realy helped write the tests.

Notably does not have the case from #80664, but I want to have all the ajacent cases tested before starting work on that to ensure I dont break anything.

Improves #81359

cc ```@CraftSpider```

r? ```@jyn514```

```@rustbot``` modify labels: +A-testsuite +T-rustdoc +A-rustdoc-json

3 years agoRollup merge of #80385 - camelid:clarify-cell-replace-docs, r=Mark-Simulacrum
Yuki Okushi [Thu, 11 Mar 2021 23:55:09 +0000 (08:55 +0900)]
Rollup merge of #80385 - camelid:clarify-cell-replace-docs, r=Mark-Simulacrum

Clarify what `Cell::replace` returns

3 years agoSupport merge_functions option in NewPM since LLVM >= 12
Hiroki Noda [Thu, 11 Mar 2021 21:30:49 +0000 (06:30 +0900)]
Support merge_functions option in NewPM since LLVM >= 12

now we can pass this flag since https://reviews.llvm.org/D93002 has been
merged.

3 years agoAdd tests for issues #82833 and #82859
Nikita Popov [Thu, 11 Mar 2021 21:55:11 +0000 (22:55 +0100)]
Add tests for issues #82833 and #82859

3 years agoAuto merge of #82417 - the8472:fix-copy_file_range-append, r=m-ou-se
bors [Thu, 11 Mar 2021 21:41:01 +0000 (21:41 +0000)]
Auto merge of #82417 - the8472:fix-copy_file_range-append, r=m-ou-se

Fix io::copy specialization using copy_file_range when writer was opened with O_APPEND

fixes #82410

While `sendfile()` returns `EINVAL` when the output was opened with O_APPEND,  `copy_file_range()` does not and returns `EBADF` instead, which – unlike other `EBADF` causes – is not fatal for this operation since a regular `write()` will likely succeed.

We now treat `EBADF` as a non-fatal error for `copy_file_range` and fall back to a read-write copy as we already did for several other errors.

3 years agoUpdate llvm-project submodule
Nikita Popov [Thu, 11 Mar 2021 21:04:10 +0000 (22:04 +0100)]
Update llvm-project submodule

3 years agoPrevent JS error when there is no dependency or other crate documented
Guillaume Gomez [Thu, 11 Mar 2021 20:13:42 +0000 (21:13 +0100)]
Prevent JS error when there is no dependency or other crate documented

3 years agoAuto merge of #6826 - TaKO8Ki:refactor-methods-mod, r=phansch
bors [Thu, 11 Mar 2021 19:54:48 +0000 (19:54 +0000)]
Auto merge of #6826 - TaKO8Ki:refactor-methods-mod, r=phansch

Refactor: arrange lints in `methods` module

This PR arranges methods lints so that they can be accessed more easily.
Basically, I refactored them following the instruction described in #6680.

changelog: Move lints in methods module into their own modules.

3 years agoAdd `-Z unpretty` flag for the THIR
LeSeulArtichaut [Sun, 7 Mar 2021 14:09:39 +0000 (15:09 +0100)]
Add `-Z unpretty` flag for the THIR

3 years agoMake THIR data structures public
LeSeulArtichaut [Sun, 7 Mar 2021 14:09:00 +0000 (15:09 +0100)]
Make THIR data structures public

3 years agoAuto merge of #82806 - nikic:memcpyopt-mssa, r=nagisa
bors [Thu, 11 Mar 2021 18:14:59 +0000 (18:14 +0000)]
Auto merge of #82806 - nikic:memcpyopt-mssa, r=nagisa

Enable MemorySSA in MemCpyOpt

LLVM 12 ships with an implementation of MemCpyOpt which is based on MSSA instead of MDA. This implementation can eliminate memcpys across blocks, and as such fixes many (but not all) failures to eliminate redundant memcpys for Rust code. Unfortunately this was only enabled by default shortly after LLVM 12 was cut. This backports the enablement to our LLVM fork.

Perf results: https://perf.rust-lang.org/compare.html?start=8fd946c63a6c3aae9788bd459d278cb2efa77099&end=0628b91ce17035fb5b6a1a99a4f2ab9ab69be7a8

There are improvements on check and debug builds, which indicate that rustc itself has become faster. For opt builds this is, on average, a very minor improvement as well, although there is one significant outlier with deep-vector-opt. This benchmark creates ~140000 zero stores, which are now coalesced into a memset slightly later, resulting in longer compile-time for intermediate passes.

3 years agoDon't implement mem::replace with mem::swap.
Mara Bos [Thu, 11 Mar 2021 18:04:47 +0000 (19:04 +0100)]
Don't implement mem::replace with mem::swap.

3 years agoUpdate RLS
Igor Matuszewski [Thu, 11 Mar 2021 18:01:01 +0000 (19:01 +0100)]
Update RLS

3 years agofix: check before index into generated patterns
csmoe [Thu, 11 Mar 2021 17:49:27 +0000 (01:49 +0800)]
fix: check before index into generated patterns

3 years agoadd ui testcase for issue 82772
csmoe [Fri, 5 Mar 2021 05:54:35 +0000 (13:54 +0800)]
add ui testcase for issue 82772

3 years agoAuto merge of #6884 - matthiaskrgr:lintcheck_crate, r=Manishearth
bors [Thu, 11 Mar 2021 16:10:33 +0000 (16:10 +0000)]
Auto merge of #6884 - matthiaskrgr:lintcheck_crate, r=Manishearth

move lintcheck into its own crate

This pr:
* moves lintcheck out of `clippy dev` and into its own crate (`lintcheck`)  (I should have done this earlier :D)
* makes lintcheck terminate if it is not launched from the repo root (to prevent problems with wrong paths when using `cargo run` in the crate root)
* fixes json lint messages leaking the runners `$HOME` when a lint messages comes from a proc macro that originates from a crate inside the `$CARGO_CACHE`
* adds more documentation to lintchecks `README.md` and mentions lintcheck in `docs/basics.md`

changelog: none

3 years agoAuto merge of #82495 - LeSeulArtichaut:eager-thir, r=oli-obk
bors [Thu, 11 Mar 2021 15:34:01 +0000 (15:34 +0000)]
Auto merge of #82495 - LeSeulArtichaut:eager-thir, r=oli-obk

Eagerly construct bodies of THIR

With this PR:
 - the THIR is no longer constructed lazily, but is entirely built before being passed to the MIR Builder
 - the THIR is now allocated in arenas instead of `Box`es

However, this PR doesn't make any changes to the way patterns are constructed: they are still boxed, and exhaustiveness checking is unchanged.

Implements MCP rust-lang/compiler-team#409.
Closes rust-lang/project-thir-unsafeck#1.
r? `@ghost` cc `@nikomatsakis` `@oli-obk`

3 years agoReintroduce accidentally deleted assertions.
Oli Scherer [Thu, 11 Mar 2021 14:56:03 +0000 (14:56 +0000)]
Reintroduce accidentally deleted assertions.

These were removed in https://github.com/rust-lang/rust/pull/50198

3 years agodoc line length fixes
Matthias Krüger [Thu, 11 Mar 2021 14:47:51 +0000 (15:47 +0100)]
doc line length fixes

3 years agodocs: basics.md: mention lintcheck
Matthias Krüger [Thu, 11 Mar 2021 14:37:10 +0000 (15:37 +0100)]
docs: basics.md: mention lintcheck

3 years agolintcheck: fix clippy warnings
Matthias Krüger [Thu, 11 Mar 2021 14:25:43 +0000 (15:25 +0100)]
lintcheck: fix clippy warnings

3 years agolintcheck: fix --fix and document it in the readme.
Matthias Krüger [Thu, 11 Mar 2021 14:18:56 +0000 (15:18 +0100)]
lintcheck: fix --fix and document it in the readme.

also hook lintcheck into clippy-dev so that `clippy dev fmt` formats it.