Commit Graph

7268 Commits

Author SHA1 Message Date
Yuki Okushi
f898aa3f5b Rollup merge of #80527 - jyn514:rustdoc-lints, r=GuillaumeGomez
Make rustdoc lints a tool lint instead of built-in

- Rename `broken_intra_doc_links` to `rustdoc::broken_intra_doc_links` (and similar for other rustdoc lints; I don't expect any others to be used frequently, though).
- Ensure that the old lint names still work and give deprecation errors
- Register lints even when running doctests
- Move lint machinery into a separate file
- Add `declare_rustdoc_lint!` macro

Unblocks https://github.com/rust-lang/rust/pull/80300, https://github.com/rust-lang/rust/pull/79816, https://github.com/rust-lang/rust/pull/80965. Makes the strangeness in https://github.com/rust-lang/rust/pull/77364 more apparent to the end user (note that `missing_docs` is *not* moved to rustdoc in this PR). Closes https://github.com/rust-lang/rust/issues/78786.

## Current status

This is blocked on #82620 (see https://github.com/rust-lang/rust/pull/80527#issuecomment-787401519)
2021-03-04 20:01:01 +09:00
Ömer Sinan Ağacan
c8a0e8d61b Refactor confirm_builtin_call, remove partial if
Pass callee expr to `confirm_builtin_call`. This removes a partial
pattern match in `confirm_builtin_call` and the `panic` in the `else`
branch. The diff is large because of indentation changes caused by
removing the if-let.
2021-03-04 13:39:41 +03:00
bors
7f32f62aa5 Auto merge of #82304 - LeSeulArtichaut:unpretty-ast, r=spastorino
Add `-Z unpretty` flags for the AST

Implements rust-lang/compiler-team#408.
Builds on #82269, but if that PR is rejected or stalls out, I can implement this without #82269.
cc rust-lang/rustc-dev-guide#1062
2021-03-04 05:46:43 +00:00
Esteban Küber
c6c243ae1e Move check only relevant in error case out of critical path
Move the check for potentially forgotten `return` in a tail expression
of arbitrary expressions into the coercion error branch to avoid
computing unncessary coercion checks on successful code.

Follow up to #81458.
2021-03-03 18:28:53 -08:00
bors
6f7673d077 Auto merge of #81114 - bugadani:generator, r=estebank
Box generator-related Body fields

Might save some memory on functions that aren't generators.
2021-03-04 00:23:42 +00:00
bors
1c77a1fa3c Auto merge of #82702 - jyn514:downgrade-err, r=Manishearth
Change error about unknown attributes to a warning

Hard errors should go through a future-compatibility phase first, especially since these attributes only have no effect and don't actively cause bugs.

Follow-up to https://github.com/rust-lang/rust/pull/82662. Fixes ecosystem breakage like https://github.com/rust-lang/rust-clippy/issues/6832.

r? `@GuillaumeGomez`
2021-03-03 21:35:32 +00:00
Esteban Küber
ae494d147a Detect match arm body without braces
Fix #82524.
2021-03-03 12:17:26 -08:00
Esteban Küber
5d0697b1be reworded message 2021-03-03 12:15:26 -08:00
Nikita Popov
9a8acea783 Schedule ThinLTOBuffer passes again after sanitizer passes
This works around a design defect in the LLVM 12 pass builder
implementation. In LLVM 13, the PreLink ThinLTO pipeline properly
respects the OptimizerLastEPCallbacks.
2021-03-03 20:48:37 +01:00
bors
476acbf1e9 Auto merge of #82553 - tmiasko:update-tracing, r=Mark-Simulacrum
Update tracing to 0.1.25

* Update tracing from 0.1.18 to 0.1.25
* Update tracing-subscriber from 0.2.13 to 0.2.16
* Update tracing-tree from 0.1.6 to 0.1.8
* Add pin-project-lite to the list of allowed dependencies (it is now a direct dependency of tracing).
2021-03-03 18:01:29 +00:00
Oli Scherer
f31481368b Check the sizes of Operand, Rvalue, AggregateKind and Place 2021-03-03 17:01:38 +00:00
Joshua Nelson
4b2e4e69df Change error about unknown doc attributes to a warning
This prevents breakage across the ecosystem, since the error was just
introduced recently without first having a warning period.
2021-03-03 10:04:36 -05:00
LeSeulArtichaut
61114453ae Add -Z unpretty flags for the AST 2021-03-03 15:11:26 +01:00
Ellen
8e353bb8ea Fix tidy err and review 2021-03-03 11:26:23 +00:00
Henry Boisdequin
d9d69212c3 Fix diagnostic suggests adding type [type error]
Fixes #79040

Unresolved questions:

Why does this change output the diagnostic twice?

Why does the CI fail when the errors are pointed out (UI tests)?
2021-03-03 16:50:07 +05:30
Ryan Levick
25637b228d Warn in doc test 2021-03-03 11:23:33 +01:00
Ryan Levick
1999a3147f Fix borrow and deref 2021-03-03 11:23:29 +01:00
Ryan Levick
da3995f0ec Remove lint pass on borrow and deref 2021-03-03 11:23:14 +01:00
Esteban Küber
055db16479 Clean up code rightward drift 2021-03-03 11:22:57 +01:00
Esteban Küber
e48670c34a Increase accuracy of lint trigger 2021-03-03 11:22:56 +01:00
Ryan Levick
49f32e0c8e Improve error messages 2021-03-03 11:22:55 +01:00
Ryan Levick
95e330bd01 Update error message 2021-03-03 11:22:54 +01:00
Ryan Levick
217c88655b Improve warning 2021-03-03 11:22:52 +01:00
Ryan Levick
a6d926d80d Fix tests 2021-03-03 11:22:44 +01:00
Ryan Levick
f49ed7a6b7 Add tests and support two more noop methods 2021-03-03 11:22:17 +01:00
Ryan Levick
040735c110 First version of noop-lint 2021-03-03 11:22:16 +01:00
Ellen
356ce96fe1 Remove extraneous return statement 2021-03-03 10:04:49 +00:00
Yuki Okushi
651f53e517 Rollup merge of #82706 - klensy:expn-data, r=petrochenkov
use outer_expn_data() instead of outer_expn().expn_data()

From the comment in hygiene.rs, so use it:
https://github.com/rust-lang/rust/blob/master/compiler/rustc_span/src/hygiene.rs#L627-L632
2021-03-03 16:27:45 +09:00
Yuki Okushi
64b76da4b6 Rollup merge of #82695 - XAMPPRocky:remove-non-power-of-two-limit, r=nagisa
Revert non-power-of-two vector restriction

Removes the power of two restriction from rustc. As discussed in https://github.com/rust-lang/stdsimd/issues/63

r? ```@calebzulawski```

cc ```@workingjubilee``` ```@thomcc```
2021-03-03 16:27:44 +09:00
Esteban Küber
5824917dbb Account for macros when suggesting adding lifetime
Fix #70152.
2021-03-02 18:24:13 -08:00
bors
35dbef2350 Auto merge of #82562 - llogiq:one-up-82248, r=oli-obk
Optimize counting digits in line numbers during error reporting further

This one-ups #82248 by switching the strategy: Instead of dividing the value by 10 repeatedly, we compare with a limit that we multiply by 10 repeatedly. In my benchmarks, this took between 50% and 25% of the original time. The reasons for being faster are:

1. While LLVM is able to replace a division by constant with a multiply + shift, a plain multiplication is still faster. However, this doesn't even factor, because
2. Multiplication, unlike division, is const. We also use a simple for-loop instead of a more complex loop + break, which allows
3. rustc to const-fold the whole loop, and indeed the assembly output simply shows a series of comparisons.
2021-03-02 21:01:47 +00:00
Ellen
342ec83629 nits 2021-03-02 19:33:28 +00:00
klensy
ed330c4463 use outer_expn_data() instead of outer_expn().expn_data() 2021-03-02 22:01:29 +03:00
Joshua Nelson
d5c300b1f2 Report that doc(plugins) doesn't work using diagnostics instead of println!
This also adds a test for the output and fixes `rustc_attr` to properly
know that `plugins` is a valid attribute.
2021-03-02 11:38:07 -05:00
Ellen
f97e075e92 errooaaar~ 2021-03-02 15:47:16 +00:00
bors
67342b830e Auto merge of #82698 - JohnTitor:rollup-htd533c, r=JohnTitor
Rollup of 10 pull requests

Successful merges:

 - #80189 (Convert primitives in the standard library to intra-doc links)
 - #80874 (Update intra-doc link documentation to match the implementation)
 - #82376 (Add option to enable MIR inlining independently of mir-opt-level)
 - #82516 (Add incomplete feature gate for inherent associate types.)
 - #82579 (Fix turbofish recovery with multiple generic args)
 - #82593 (Teach rustdoc how to display WASI.)
 - #82597 (Get TyCtxt from self instead of passing as argument in AutoTraitFinder)
 - #82627 (Erase late bound regions to avoid ICE)
 - #82661 (⬆️ rust-analyzer)
 - #82691 (Update books)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-03-02 12:57:06 +00:00
Yuki Okushi
2c40e13b84 Rollup merge of #82627 - JohnTitor:issue-82612, r=estebank
Erase late bound regions to avoid ICE

Fixes #82612, which is caused by #81769.

r? `@estebank`
2021-03-02 21:23:20 +09:00
Yuki Okushi
43bcfdb0d0 Rollup merge of #82597 - noslaver:fix-82137, r=nagisa
Get TyCtxt from self instead of passing as argument in AutoTraitFinder

First contribution 🦀, let me know if anything is amiss.

Fix #82137.
2021-03-02 21:23:19 +09:00
Yuki Okushi
906e535205 Rollup merge of #82579 - osa1:issue82566, r=estebank
Fix turbofish recovery with multiple generic args

This consists of two commits, each can be individually reviewed.

- First commit fixes the issue in [this comment](https://github.com/rust-lang/rust/issues/82566#issuecomment-786924466).
- Second commit fixes #82566

---

r? ````@estebank````
2021-03-02 21:23:17 +09:00
Yuki Okushi
5e68c60406 Rollup merge of #82516 - PoignardAzur:inherent-impl-ty, r=oli-obk
Add incomplete feature gate for inherent associate types.

Mentored by ``````@oli-obk``````

So far the only change is that instead of giving an automatic error, the following code compiles:

```rust
struct Foo;

impl Foo {
    type Bar = isize;
}
```

The backend work to make it actually usable isn't there yet. In particular, this:

```rust
let x : Foo::Bar;
```

will give you:

```sh
error[E0223]: ambiguous associated type
  --> /$RUSTC_DIR/src/test/ui/assoc-inherent.rs:15:13
   |
LL |     let x : Foo::Bar;
   |             ^^^^^^^^ help: use fully-qualified syntax: `<Foo as Trait>::Bar`
```
2021-03-02 21:23:15 +09:00
Yuki Okushi
ae5e024194 Rollup merge of #82376 - tmiasko:inline-options, r=oli-obk
Add option to enable MIR inlining independently of mir-opt-level

Add `-Zinline-mir` option that enables MIR inlining independently of the
current MIR opt level. The primary use-case is enabling MIR inlining on the
default MIR opt level.

Turn inlining thresholds into optional values to make it possible to configure
different defaults depending on the current mir-opt-level (although thresholds
are yet to be used in such a manner).
2021-03-02 21:23:14 +09:00
Jonas Platte
c194849a75 Fix stabilization version of move_ref_pattern 2021-03-02 12:54:25 +01:00
Erin Power
5f344a2883 Fix UI errors 2021-03-02 12:18:46 +01:00
bors
edeee915b1 Auto merge of #82634 - osa1:osa1/remove_old_fixme, r=Mark-Simulacrum
Remove an old FIXME comment and inline attribute

Apparently #35870 caused a problem in this code (which originally
returned an impl trait) and `#[inline]` was added as a workaround, in
ade79d7609.

The issue is now fixed and the comment and `#[inline]` can now be
removed.
2021-03-02 10:15:34 +00:00
Erin Power
79c5fa1f0c Revert non-power-of-two vector restriction 2021-03-02 09:41:41 +01:00
Joshua Nelson
c7535d1361 Update comments
Note that the FIXME was removed because this can't be fixed,
`register_renamed` calls LintId::of and there's no LintId for rustdoc
lints when rustc is running.
2021-03-01 19:29:15 -05:00
Joshua Nelson
0517ea7cdc Address review comments
- Move MISSING_CRATE_LEVEL_DOCS to rustdoc directly
- Update documentation

This also takes the opportunity to make the `no-crate-level-doc-lint`
test more specific.
2021-03-01 19:29:15 -05:00
Joshua Nelson
e8ddfda813 Improve error messages
- Use `register_renamed` when rustdoc is running so the lint will still
  be active and use a structured suggestion
- Test the behavior for rustc, not just for rustdoc (because it differs)
2021-03-01 19:29:15 -05:00
Joshua Nelson
cc62018e61 Rename rustdoc lints to be a tool lint instead of built-in.
- Rename `broken_intra_doc_links` to `rustdoc::broken_intra_doc_links`
- Ensure that the old lint names still work and give deprecation errors
- Register lints even when running doctests

  Otherwise, all `rustdoc::` lints would be ignored.

- Register all existing lints as removed

  This unfortunately doesn't work with `register_renamed` because tool
  lints have not yet been registered when rustc is running. For similar
  reasons, `check_backwards_compat` doesn't work either. Call
  `register_removed` directly instead.

- Fix fallout

  + Rustdoc lints for compiler/
  + Rustdoc lints for library/

Note that this does *not* suggest `rustdoc::broken_intra_doc_links` for
`rustdoc::intra_doc_link_resolution_failure`, since there was no time
when the latter was valid.
2021-03-01 19:29:15 -05:00
Guillaume Gomez
0c6b69aa70 Rollup merge of #82662 - GuillaumeGomez:doc-attr-check, r=jyn514
Warn about unknown doc attributes

Fixes #82652.

For the text error, I decided to go for "invalid" instead of "unknown". What do you think?

r? `@jyn514`
2021-03-02 00:50:10 +01:00