Commit graph

70 commits

Author SHA1 Message Date
Andy Russell
695dfe7dff
compiletest: make path normalization smarter 2019-03-25 01:06:45 -04:00
Andy Russell
7c66ae2fc5
use ! in macro disambiguation suggestion 2019-03-15 15:12:30 -04:00
Andy Russell
150b49a582
replace ad-hoc namespace enums 2019-03-15 14:33:41 -04:00
Andy Russell
33442b133c
overhaul intra-doc-link ambiguity warning
- Makes the warning part of the `intra_doc_link_resolution_failure`
lint.
- Tightens the span to just the ambiguous link.
- Reports ambiguities across all three namespaces.
- Uses structured suggestions for disambiguation.
- Adds a test for the warnings.
2019-03-15 14:15:06 -04:00
Vadim Petrochenkov
fa72a81bea Update tests 2019-03-11 23:10:26 +03:00
John Kåre Alsaker
51938c61f6 Make the rustc driver and interface demand driven 2019-03-10 04:49:45 +01:00
Mazdak Farrokhzad
61e8cc571d
Rollup merge of #58626 - QuietMisdreavus:doc-coverage, r=GuillaumeGomez
rustdoc: add option to calculate "documentation coverage"

This PR adds a new flag to rustdoc, `--show-coverage`. When passed, this flag will make rustdoc count the number of items in a crate with documentation instead of generating docs. This count will be output as a table of each file in the crate, like this (when run on my crate `egg-mode`):

```
+-------------------------------------+------------+------------+------------+
| File                                | Documented |      Total | Percentage |
+-------------------------------------+------------+------------+------------+
| src/auth.rs                         |         16 |         16 |     100.0% |
| src/common/mod.rs                   |          1 |          1 |     100.0% |
| src/common/response.rs              |          9 |          9 |     100.0% |
| src/cursor.rs                       |         24 |         24 |     100.0% |
| src/direct/fun.rs                   |          6 |          6 |     100.0% |
| src/direct/mod.rs                   |         41 |         41 |     100.0% |
| src/entities.rs                     |         50 |         50 |     100.0% |
| src/error.rs                        |         27 |         27 |     100.0% |
| src/lib.rs                          |          1 |          1 |     100.0% |
| src/list/fun.rs                     |         19 |         19 |     100.0% |
| src/list/mod.rs                     |         22 |         22 |     100.0% |
| src/media/mod.rs                    |         27 |         27 |     100.0% |
| src/place/fun.rs                    |          8 |          8 |     100.0% |
| src/place/mod.rs                    |         35 |         35 |     100.0% |
| src/search.rs                       |         26 |         26 |     100.0% |
| src/service.rs                      |         74 |         74 |     100.0% |
| src/stream/mod.rs                   |         49 |         49 |     100.0% |
| src/tweet/fun.rs                    |         15 |         15 |     100.0% |
| src/tweet/mod.rs                    |         73 |         73 |     100.0% |
| src/user/fun.rs                     |         24 |         24 |     100.0% |
| src/user/mod.rs                     |         87 |         87 |     100.0% |
+-------------------------------------+------------+------------+------------+
| Total                               |        634 |        634 |     100.0% |
+-------------------------------------+------------+------------+------------+
```

Trait implementations are not counted because by default they "inherit" the docs from the trait, even though an impl can override those docs. Similarly, inherent impl blocks are not counted at all, because for the majority of cases such docs are not useful. (The usual pattern for inherent impl blocks is to throw all the methods on a type into a single impl block. Any docs you would put on that block would be better served on the type itself.)

In addition, `--show-coverage` can be combined with `--document-private-items` to get the coverage counts for everything in the crate, not just public items.

The coverage calculation is implemented as a late pass and two new sets of passes which strip out most of the work that rustdoc otherwise does when generating docs. The is because after the new pass is executed, rustdoc immediately closes instead of going on to generate documentation.

Many examples of coverage calculations have been included as `rustdoc-ui` tests.

r? @rust-lang/rustdoc
2019-03-09 17:18:13 +01:00
QuietMisdreavus
515dbe73ab update rustdoc coverage tests with new table layout 2019-02-28 16:24:38 -06:00
QuietMisdreavus
63bdd29ef4 add tests for doc coverage 2019-02-28 16:11:21 -06:00
John Kåre Alsaker
23a51f91c9 Introduce rustc_interface and move some methods there 2019-02-28 19:30:31 +01:00
Andy Russell
906ec8acce
move collapse and unindent docs passes earlier 2019-02-23 14:53:51 -05:00
bors
fcccf06fc9 Auto merge of #56514 - ollie27:rustdoc_test_libdir, r=QuietMisdreavus
rustdoc: Don't modify library path for doctests

It shouldn't be needed anymore because doctests are no longer compiled with `prefer-dynamic` (since #54939).

r? @QuietMisdreavus
2019-02-19 07:27:39 +00:00
bors
846ea58cd5 Auto merge of #56884 - euclio:codeblock-diagnostics, r=QuietMisdreavus
rustdoc: overhaul code block lexing errors

Fixes #53919.

This PR moves the reporting of code block lexing errors from rendering time to an early pass, so we can use the compiler's error reporting mechanisms. This dramatically improves the diagnostics in this situation: we now de-emphasize the lexing errors as a note under a warning that has a span and suggestion instead of just emitting errors at the top level.

Additionally, this PR generalizes the markdown -> source span calculation function, which should allow other rustdoc warnings to use better spans in the future.

Last, the PR makes sure that the code block is always emitted in the docs, even if it fails to highlight correctly.

Of note:
- The new pass unfortunately adds another pass over the docs to gather the doc blocks for syntax-checking. I wonder if this could be combined with the pass that looks for testable blocks? I'm not familiar with that code, so I don't know how feasible that is.
- `pulldown_cmark` doesn't make it easy to find the spans of the code blocks, so the code that calculates the spans is a little nasty. It works for all the test cases I threw at it, but I wouldn't be surprised if an edge case would break it. Should have a thorough review.
- This PR worsens the state of #56885, since those certain fatal lexing errors are now emitted before docs get generated at all.
2019-01-20 19:01:38 +00:00
Oliver Middleton
ad09d7fc79 rustdoc: Don't modify library path for doctests
It shouldn't be needed anymore because doctests are no longer compiled with `prefer-dynamic`.
2019-01-20 10:14:26 +00:00
Wesley Norris
f5413cd1e2 Bless test.
Bless test, remove submodule, and fix book entry.

bless test again? maybe it'll work this time...
2019-01-17 17:49:29 -05:00
Wesley Norris
80ee94c1f8 Minor changes to wording and formatting. 2019-01-17 17:26:24 -05:00
Wesley Norris
22e97da30a Bless test. 2019-01-17 17:26:24 -05:00
bors
6599946272 Auto merge of #57520 - alexreg:tidy-copyright-lint, r=Mark-Simulacrum
Add lint for copyright headers to 'tidy' tool

r? @Mark-Simulacrum

CC @centril
2019-01-17 07:36:37 +00:00
Andy Russell
8c93798e9f
rustdoc: check code block syntax in early pass 2019-01-14 21:21:21 -05:00
Alexander Regueiro
2e30a3c4d8 Removed more copyright notices. 2019-01-13 19:47:02 +00:00
Igor Matuszewski
cc19a78ee8 Account for 2 removed lines in src/librustdoc/test.rs 2019-01-13 10:42:59 +01:00
Guillaume Gomez
47e294e758 check missing docs for reexported macros as well 2019-01-06 18:55:55 +01:00
Andy Russell
0a6fb84738
make panictry! private to libsyntax
This commit completely removes usage of the `panictry!` macro from
outside libsyntax. The macro causes parse errors to be fatal, so using
it in libsyntax_ext caused parse failures *within* a syntax extension to
be fatal, which is probably not intended.

Furthermore, this commit adds spans to diagnostics emitted by empty
extensions if they were missing, à la #56491.
2019-01-02 11:02:30 -05:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
Pietro Albini
b747425f59
Rollup merge of #56689 - QuietMisdreavus:rustdoc-lint-group, r=pnkfelix
add a lint group for lints emitted by rustdoc

As rustdoc adds more lints that it specifically manages, it would be nice to be able to lump them all together. This gives us a new group just for that.

I deliberately didn't include `missing_docs` because this is kind of a stepping stone for moving our lints into tool lints (i.e. `#![warn(rustdoc::private_doc_tests)]`), since all of these are specifically emitted by rustdoc. If we want to move `missing_docs` out of the compiler, that's also an option, but it would create a surprising change of behavior.

I also took the chance to rewrite the lint descriptions of these lints to better match the style of the other lints. `>_>`
2018-12-19 11:47:07 +01:00
kennytm
123b72a05e
Rollup merge of #56748 - kinnison:kinnison/fix-56734, r=dtolnay
Update panic message to be clearer about env-vars

Esteban Kuber requested that the panic message make it clear
that `RUST_BACKTRACE=1` is an environment variable.  This change
makes that clear.

I understand that this may simply be closed if the concept isn't accepted, and I'd be fine with that :-)

Fixes #56734
2018-12-14 22:17:43 +08:00
Daniel Silverstone
6057147fde Update panic message to be clearer about env-vars
Esteban Kuber requested that the panic message make it clear
that `RUST_BACKTRACE=1` is an environment variable.  This change
makes that clear.  Wording provided in part by David Tolnay.
2018-12-13 23:07:04 +00:00
Andy Russell
56413ecffc
fix intra-link resolution spans in block comments
This commit improves the calculation of code spans for intra-doc
resolution failures. All sugared doc comments should now have the
correct spans, including those where the comment is longer than the
docs.

It also fixes an issue where the spans were calculated incorrectly for
certain unsugared doc comments. The diagnostic will now always use the
span of the attributes, as originally intended.

Fixes #55964.
2018-12-10 21:08:26 -05:00
QuietMisdreavus
48c17a0938 add a lint group for lints emitted by rustdoc 2018-12-10 14:58:57 -06:00
Alexander Regueiro
e14ff9bac6 Fixed line numbers in stderr file. 2018-12-07 23:53:34 +00:00
Matthew Russo
f0f8aa9e05 adds DocTest filename variant, refactors doctest_offset out of source_map, fixes remaining test failures 2018-12-04 19:52:42 -05:00
Oliver Scherer
ff97569dd9 Update doc-ui tests 2018-12-04 10:06:05 +01:00
bors
c08840d5c3 Auto merge of #53586 - eddyb:top-lock, r=alexcrichton
Move Cargo.{toml,lock} to the repository root directory.

This should give us back `src/` in errors, panics and debuginfo, for free.

r? @Mark-Simulacrum @alexcrichton cc @michaelwoerister
2018-11-22 15:54:10 +00:00
Eduard-Mihai Burtescu
7c166f54b2 Move Cargo.{toml,lock} to the repository root directory. 2018-11-22 12:10:04 +02:00
Guillaume Gomez
9aedfd5a3b
Rollup merge of #55367 - GuillaumeGomez:private-item-doc-test-lint, r=QuietMisdreavus
lint if a private item has doctests

Fixes #55333.

r? @QuietMisdreavus
2018-11-22 10:37:43 +01:00
Guillaume Gomez
675319e558 lint if a private item has doctests 2018-11-16 14:29:44 +01:00
QuietMisdreavus
aa3d7a4e6e properly calculate spans for intra-doc link resolution errors 2018-11-14 18:14:31 -06:00
QuietMisdreavus
297cfea0ce update rustdoc-ui/failed-doctest-output test 2018-11-02 17:17:02 -05:00
Josh Stone
f2443a9b20 Set RUST_BACKTRACE=0 for rustdoc-ui/failed-doctest-output.rs
This UI test is sensitive to backtrace output, so it should make sure
that backtraces are not enabled by the environment.
2018-10-23 15:38:31 -07:00
bors
40123a1257 Auto merge of #54349 - GuillaumeGomez:no-example-lint, r=QuietMisdreavus
[rustdoc] Add lint for doc without codeblocks

Fixes #53805.

r? @QuietMisdreavus
2018-10-18 09:53:29 +00:00
bors
9d7f0da367 Auto merge of #54939 - pnkfelix:issue-54478-dont-prefer-dynamic-in-doc-tests, r=QuietMisdreavus
rustdoc: don't prefer dynamic linking in doc tests

This is an attempt to address the regression in #54478

This may be a case where the cure is worse than the disease, at least in the short term...

cc @alexcrichton
2018-10-17 06:42:15 +00:00
bors
849a0e9c40 Auto merge of #53933 - GuillaumeGomez:codeblock-error-display, r=QuietMisdreavus
Improve error display for codeblocks in rustdoc

Part of #53919.

r? @QuietMisdreavus
2018-10-12 09:23:10 +00:00
Alex Crichton
cbca688341 Update a rustdoc ui test whose output has changed 2018-10-09 15:03:25 -07:00
Guillaume Gomez
26479c4637 Add test for docs without examples 2018-10-09 17:55:12 +02:00
Guillaume Gomez
322e46916e Add a sentence before rustc errors 2018-09-29 18:34:49 +02:00
Guillaume Gomez
f7240e1c74 Improve error display for codeblocks in rustdoc 2018-09-29 18:14:34 +02:00
QuietMisdreavus
93321671ca add -Zui-testing to rustdoc 2018-09-19 18:39:39 -05:00
Pietro Albini
f52ef3b839
Rollup merge of #52835 - GuillaumeGomez:ice-rustdoc-links, r=eddyb
Fix Alias intra doc ICE

Fixes #52611.

cc @QuietMisdreavus

r? @varkor
2018-08-01 21:46:27 +02:00
Mark Rousskov
0f680b38d0 Fixup test case 2018-07-31 17:55:12 -06:00
Guillaume Gomez
d5f1f70a8e Fix Alias intra doc ICE 2018-07-30 20:57:27 +02:00