Commit Graph

199004 Commits

Author SHA1 Message Date
Michael Goulet
1256530643 More descriptive argument placeholders 2022-08-28 01:24:41 +00:00
Michael Goulet
18b640aee5 Suggest calling when operator types mismatch 2022-08-28 01:08:24 +00:00
Michael Goulet
2f78dd15a6 Suggest calling trait objects and parameters too, when possible 2022-08-27 23:08:44 +00:00
est31
4a82c2174a unstable-book-gen: use std::fs::write
I wrote this code in 2017 back when std::fs::write wasn't available.
Also, use the t macro from tidy.
2022-08-28 00:40:58 +02:00
Amanieu d'Antras
a7e4794c2e Fix handling of rust_eh_personality in reachable_non_generics 2022-08-28 06:38:01 +08:00
Ralf Jung
cf2c65b251 adjust tests 2022-08-27 18:37:49 -04:00
Ralf Jung
2e172473da interpret: make read-pointer-as-bytes *always* work in Miri
and show some extra information when it happens in CTFE
2022-08-27 18:37:44 -04:00
Michael Goulet
cef0482d11 Add test 2022-08-27 22:36:04 +00:00
Michael Goulet
703603a362 Only suggest call on nonexistent fields and methods if they make sense 2022-08-27 22:36:04 +00:00
Michael Goulet
0734200e80 Use autoderef 2022-08-27 21:23:06 +00:00
Michael Goulet
dca5f5bf8f Drive-by: Rename expr_t to base_ty 2022-08-27 21:23:06 +00:00
Vadim Petrochenkov
fc3f3c304b rustc_middle: Remove Visibility::Invisible 2022-08-27 22:34:18 +03:00
Ralf Jung
e63a625711 interpret: rename relocation → provenance 2022-08-27 14:11:19 -04:00
bors
2d4d8e16cd Auto merge of #8984 - xanathar:pr/suspicious_to_owned, r=llogiq
Implemented `suspicious_to_owned` lint to check if `to_owned` is called on a `Cow`

changelog: Add lint ``[`suspicious_to_owned`]``

-----------------
Hi,
posting this unsolicited PR as I've been burned by this issue :)
Being unsolicited, feel free to reject it or reassign a different lint level etc.

This lint checks whether `to_owned` is called on `Cow<'_, _>`. This is done because `to_owned` is very similarly named to `into_owned`, but the effect of calling those two methods is completely different (one makes the `Cow::Borrowed` into a `Cow::Owned`, the other just clones the `Cow`). If the cow is then passed to code for which the type is not checked (e.g. generics, closures, etc.) it might slip through and if the cow data is coming from an unsafe context there is the potential for accidentally cause undefined behavior.
Even if not falling into this painful case, there's really no reason to call `to_owned` on a `Cow` other than confusing people reading the code: either `into_owned` or `clone` should be called.

Note that this overlaps perfectly with `implicit_clone` as a warning, but `implicit_clone` is classified pedantic (while the consequences for `Cow` might be of a wider blast radius than just pedantry); given the overlap, I set-up the lint so that if `suspicious_to_owned` triggers `implicit_clone` will not trigger. I'm not 100% sure this is done in the correct way (I tried to copy what other lints were doing) so please provide feedback on it if it isn't.

### Checklist

- \[x] Followed [lint naming conventions][lint_naming]
- \[x] Added passing UI tests (including committed `.stderr` file)
- \[x] `cargo test` passes locally
- \[x] Executed `cargo dev update_lints`
- \[x] Added lint documentation
- \[x] Run `cargo dev fmt`
2022-08-27 17:38:40 +00:00
bors
eaadb8947b Auto merge of #100591 - est31:stabilization_placeholder, r=Mark-Simulacrum
Require stabilizations to use a placeholder instead of writing out stabilization version

Implements the idea from [this](https://rust-lang.zulipchat.com/#narrow/stream/241545-t-release/topic/libs.20stabilization.20placeholder) zulip stream.

It's a common phenomenon that feature stabilizations don't make it into a particular release, but the version is still inaccurate. Often this is caught in the PR, but it can also require subsequent changes to adjust/correct the version. A list with examples of such PRs is given in #100577, but it's far from complete.

This PR requires stabilization PRs to use the placeholder `CURRENT_RUSTC_VERSION`, enforced via tidy tooling. The PR also adds a tool that replaces the placeholder with the version number. It can be invoked via `./x.py run src/tools/replace-version-placeholder` and is supposed to be ran upon beta branching as well as version bumping and any backports to the beta branch.  I filed PRs to the dev guide and forge to document these changes in the release and stabilization workflows:

* The [dev guide](https://rustc-dev-guide.rust-lang.org/stabilization_guide.html#determining-the-stabilization-version) PR: https://github.com/rust-lang/rustc-dev-guide/pull/1443
* The [std dev guide](https://std-dev-guide.rust-lang.org/) PR: https://github.com/rust-lang/std-dev-guide/pull/43
* The [forge](https://github.com/rust-lang/rust-forge) PR: https://github.com/rust-lang/rust-forge/pull/643

Alternative to #100577 which added checking.
2022-08-27 16:57:19 +00:00
Takayuki Maeda
aa76e135ff extend attrs if local_def_id exists 2022-08-28 01:20:26 +09:00
dswij
b07d72b69e Ignore when there is comment 2022-08-28 00:07:00 +08:00
dswij
51e9113c60 Add span_contains_comments util 2022-08-28 00:07:00 +08:00
Nicholas Bishop
1dd47b04c0 Set DebuginfoKind::Pdb in msvc_base
This PDB setting was added to `windows_msvc_base` in
https://github.com/rust-lang/rust/pull/98051. It's also needed for the
UEFI targets, and since `uefi_msvc_base` and `windows_msvc_base` are the
only things that inherit from `msvc_base`, just move the PDB setting up
to `mscv_base` to cover both.

Fixes https://github.com/rust-lang/rust/issues/101071
2022-08-27 11:44:35 -04:00
est31
d32ff14b86 Add replace-version-placeholder tool
This tool is to be ran at specific points in the release process to replace
the version place holder made by stabilizations with the version number.
2022-08-27 17:39:11 +02:00
est31
a2e2d76768 tidy: move directory traversal utility functions into dedicated module 2022-08-27 17:39:11 +02:00
est31
4caedbae86 Adjust label break value stabilization version to CURRENT_RUSTC_VERSION 2022-08-27 17:36:13 +02:00
est31
6e4e3e84b5 Adjust backtrace stabilization version to CURRENT_RUSTC_VERSION 2022-08-27 17:08:53 +02:00
est31
e576a9b554 Adjust ptr_const_cast stabilization version to CURRENT_RUSTC_VERSION 2022-08-27 17:08:53 +02:00
est31
7a5b1d7939 Expand the version placeholder to the current version in stability attribute parsing
That way, the current version is shown in rustdoc etc.
2022-08-27 17:08:52 +02:00
est31
d06e0e53eb tidy: forbid since values for features that point to the current release or future ones
It's a common phenomenon that feature stabilizations don't make it into
a particular release, but the version is still inaccurate. Often this
leads to subsequent changes to adjust/correct the version.

Instead, require people to put a placeholder that gets replaced during
beta branching time with the current rust version. That way, there is
no chance that an error can be introduced.

Usage of the placeholder is required on the nightly channel, and forbidden
on the stable and beta channels.
2022-08-27 17:08:52 +02:00
bors
332cc8fb75 Auto merge of #100999 - nnethercote:shrink-FnAbi, r=bjorn3
Shrink `FnAbi`

Because they can take up a lot of memory in debug and release builds.

r? `@bjorn3`
2022-08-27 14:00:53 +00:00
Vadim Petrochenkov
f7eb7ef2ca Update tests for UEFI and AVR 2022-08-27 16:50:41 +03:00
Ralf Jung
aff9841507 remove a now-useless machine hook 2022-08-27 08:53:04 -04:00
Ralf Jung
4173e971b8 remove an ineffective check in const_prop 2022-08-27 08:53:04 -04:00
Vadim Petrochenkov
f4b5954764 rustc_target: Use Cow and link args helpers in apple_base 2022-08-27 15:30:05 +03:00
Vadim Petrochenkov
f0d0573db1 rustc_target: Do not specify some target options redundantly
These values are already inherited
2022-08-27 15:30:05 +03:00
Vadim Petrochenkov
2e83c22154 rustc_target: Add some more target spec sanity checking 2022-08-27 15:30:05 +03:00
bors
3b3f3b72c5 Auto merge of #100989 - lcnr:implied-bounds-uwu, r=spastorino
no unnormalized types for implied bounds outside borrowck

fixes #100910 - introduced in https://github.com/rust-lang/rust/pull/100676 - by only considering normalized types for wf.

r? types
2022-08-27 11:37:06 +00:00
Andre Bogus
90fe3bea52 remove parenthesis from unnecessary_cast suggestion 2022-08-27 12:04:19 +02:00
bors
4065b89b1e Auto merge of #100946 - jyn514:query-system-3, r=cjgillot
Simplify the arguments to macros generated by the `rustc_queries` proc macro

Very small cleanup. Based on https://github.com/rust-lang/rust/pull/100436 which modifies some of the same code.

r? `@cjgillot`
2022-08-27 08:53:24 +00:00
bors
be8bd60000 Auto merge of #9381 - lukaslueg:issue9361, r=dswij
Don't lint `needless_return` if `return` has attrs

Fixes #9361

The lint used to have a mechanic to allow `cfg`-attrs on naked `return`-statements. This was well-intentioned, yet we can have any kind of attribute, e.g. `allow`, `expect` or even custom `derive`. So the mechanic was simply removed. We now never lint on a naked `return`-statement that has attributes on it.

Turns out that the ui-test had a Catch22 in it: In `check_expect()` the `#[expect(clippy::needless_return)]` is an attribute on the `return` statement that can and will be rustfixed away without side effects. But any other attribute would also have been removed, which is what #9361 is about. The test proved the wrong thing. Removed the test, the body is tested elsewhere as well.

changelog: Ignore [`needless_return`] on `return`s with attrs
2022-08-27 08:37:29 +00:00
Jean CASPAR
e89d4fcc7d remove span_fatal from ast_lowering 2022-08-27 09:15:55 +02:00
Takayuki Maeda
b33c3d6cd6 use smaller span for suggestions 2022-08-27 15:22:08 +09:00
bors
d0e1491ecd Auto merge of #101074 - JohnTitor:rollup-zwznihq, r=JohnTitor
Rollup of 11 pull requests

Successful merges:

 - #96240 (Stabilize `const_ptr_offset_from`.)
 - #99784 (Make forward compatibility lint deprecated_cfg_attr_crate_type_name deny by default)
 - #100811 (Fix wrong compiletest filters on Windows)
 - #100924 (Smaller improvements of tidy and the unicode generator)
 - #100953 (Update documentation for `write!` and `writeln!`)
 - #101018 (rustdoc: omit start/end tags for empty item description blocks)
 - #101044 (rustdoc: remove unused CSS for `hidden-by-*-hider`)
 - #101046 (rustdoc: remove incorrect CSS selector `.impl-items table td`)
 - #101057 (Merge implementations of HIR fn_decl and fn_sig.)
 - #101062 (rustdoc: remove empty extern_crates and type="text/javascript" on script)
 - #101063 (Merge duplicated CSS rules)

Failed merges:

 - #101055 (Use smaller span for suggestions)

r? `@ghost`
`@rustbot` modify labels: rollup
2022-08-27 06:12:17 +00:00
Yuki Okushi
bd89372563
Rollup merge of #101063 - GuillaumeGomez:merge-duplicated-css, r=notriddle
Merge duplicated CSS rules

I used the [stylelint](https://stylelint.io/user-guide/configure) tool to check for duplicated CSS rules in order to merge them.

r? `@notriddle`
2022-08-27 13:14:26 +09:00
Yuki Okushi
bdbbbe687e
Rollup merge of #101062 - notriddle:notriddle/text-javascript, r=GuillaumeGomez
rustdoc: remove empty extern_crates and type="text/javascript" on script

Like #101023, this removes an attribute with a default value.
2022-08-27 13:14:25 +09:00
Yuki Okushi
aa6b750854
Rollup merge of #101057 - cjgillot:one-fn-sig, r=compiler-errors
Merge implementations of HIR fn_decl and fn_sig.
2022-08-27 13:14:24 +09:00
Yuki Okushi
0cad2746be
Rollup merge of #101046 - notriddle:notriddle/table-css, r=jsha
rustdoc: remove incorrect CSS selector `.impl-items table td`

Fixes #100994

This selector was added in c7312fbae4. The bug can be seen at <https://doc.rust-lang.org/1.27.0/alloc/slice/trait.SliceIndex.html#foreign-impls>.

This rule was added to help with a `<table>` that was used for displaying the function signature [src] lockup. That lockup was changed in 34bd2b845b to use flexbox instead, leaving this selector unused (at least, for its original purpose).
2022-08-27 13:14:23 +09:00
Yuki Okushi
84f5ccd917
Rollup merge of #101044 - notriddle:notriddle/css-hidden-by, r=jsha
rustdoc: remove unused CSS for `hidden-by-*-hider`

This CSS seems to have become obsolete with the move to `<details>` tags,
and its corresponding JavaScript was removed in aee054d05d
2022-08-27 13:14:22 +09:00
Yuki Okushi
6ccad25359
Rollup merge of #101018 - notriddle:notriddle/item-right-docblock-short, r=GuillaumeGomez
rustdoc: omit start/end tags for empty item description blocks

Related to #100952

This is definitely not a complete solution, but it does shrink keysyms/index.html on smithay from 620K to 516K.
2022-08-27 13:14:21 +09:00
Yuki Okushi
f4d4a40a7c
Rollup merge of #100953 - joshtriplett:write-docs, r=Mark-Simulacrum
Update documentation for `write!` and `writeln!`

https://github.com/rust-lang/rust/pull/37472 added this documentation, but it
needs updating:

- Remove some documentation duplicated between `writeln!` and `write!`
- Update `write!` docs: can now import traits as `_` to avoid conflicts
- Expand example to show how to implement qualified trait names
2022-08-27 13:14:20 +09:00
Yuki Okushi
e31bedc9cf
Rollup merge of #100924 - est31:closure_to_fn_ptr, r=Mark-Simulacrum
Smaller improvements of tidy and the unicode generator
2022-08-27 13:14:19 +09:00
Yuki Okushi
7214f0cfc4
Rollup merge of #100811 - czzrr:master, r=Mark-Simulacrum
Fix wrong compiletest filters on Windows

As discussed in [#79334](https://github.com/rust-lang/rust/issues/79334), when calling e.g.
```
python x.py test src/test/ui/expr/compound-assignment/eval-order.rs
```
on Windows, compiletest passes the filter `expr/compound-assignment/eval-order.rs` to libtest, which instead should be `expr\compound-assignment\eval-order.rs`, as that is the file found when collecting tests. This is what I fixed.

I'm not sure how to organize a test for this. Any suggestions?
2022-08-27 13:14:18 +09:00
Yuki Okushi
134cc2d6be
Rollup merge of #99784 - est31:deny_cfg_attr_crate_type_name, r=Mark-Simulacrum
Make forward compatibility lint deprecated_cfg_attr_crate_type_name deny by default

Turns the forward compatibility lint added by #83744 to deprecate `cfg_attr` usage with `#![crate_type]` and `#![crate_name]` attributes into deny by default. Copying the example from #83744:

```Rust
#![crate_type = "lib"] // remains working
#![cfg_attr(foo, crate_type = "bin")] // will stop working
```

Over 8 months have passed since #83744 was merged so I'd say this gives ample time for people to have been warned, so we can make the warning stronger. No usage was found via grep.app except for one, which was in an unmaintained code base that didn't seem to be used in the open source eco system. The crater run conducted in #83744 also didn't show up anything.

cc #91632 - tracking issue for the lint
2022-08-27 13:14:16 +09:00