Commit graph

4517 commits

Author SHA1 Message Date
Wesley Norris
a3f7f97205 Fix tidy error. 2019-01-17 17:26:00 -05:00
Wesley Norris
1318e53ea8 Persist doc test executables to given path. 2019-01-17 17:26:00 -05:00
Guillaume Gomez
25189874fb Fix non-clickable urls 2019-01-17 21:28:23 +01:00
Yuki Okushi
8bbb63c600 Add token::Err 2019-01-18 05:23:56 +09:00
Igor Matuszewski
6f1d06d219 Querify glob map usage (last use of CrateAnalysis) 2019-01-17 10:40:22 +01:00
Igor Matuszewski
6c8fdf971c Remove access level mention from DocContext
Leftover from c754e8240c.
2019-01-17 10:37:31 +01:00
bors
956dba47d3 Auto merge of #56869 - GuillaumeGomez:index-size-reduction, r=QuietMisdreavus
Reduce search-index.js size

Coming from:

```
1735683 Dec 16 01:35 build/x86_64-apple-darwin/doc/search-index.js
```

to:

```
727755 Dec 16 01:51 build/x86_64-apple-darwin/doc/search-index.js
```

r? @QuietMisdreavus
2019-01-17 02:12:17 +00:00
Guillaume Gomez
d405606c3b End fixing search index minification 2019-01-17 01:41:01 +01:00
Guillaume Gomez
2e8fd44598 Minify search-index in one pass 2019-01-17 01:41:01 +01:00
Guillaume Gomez
f42407f114 Reduce search-index.js size 2019-01-17 01:41:01 +01:00
bors
c40b97796e Auto merge of #57392 - Xanewok:always-calc-glob-map, r=petrochenkov
Always calculate glob map but only for glob uses

Previously calculating glob map was *opt-in*, however it did record node id -> ident use for every use directive. This aims to see if we can unconditionally calculate the glob map and not regress performance.

Main motivation is to get rid of some of the moving pieces and simplify the compilation interface - this would allow us to entirely remove `CrateAnalysis`. Later, we could easily expose a relevant query, similar to the likes of `maybe_unused_trait_import` (so using precomputed data from the resolver, but which could be rewritten to be on-demand).

r? @nikomatsakis

Local perf run showed mostly noise (except `ctfe-stress-*`) but I'd appreciate if we could do a perf run run here and double-check that this won't regress performance.
2019-01-16 23:25:41 +00:00
Guillaume Gomez
feda6040fa Fixes text becoming invisible when element targetted 2019-01-15 23:21:36 +01:00
Guillaume Gomez
ed717f30ec Fix sources sidebar not showing up 2019-01-15 17:57:25 +01:00
Mazdak Farrokhzad
9947b3060c
Rollup merge of #57614 - GuillaumeGomez:fix-crate-filtering, r=QuietMisdreavus
[rustdoc] Fix crates filtering box not being filled

Currently, the filter crate box (at the left of the search input) is always empty. To get the number of keys of dictionary in JS, you need to call `Object.keys()` on it.

r? @QuietMisdreavus
2019-01-15 12:42:14 +01:00
Andy Russell
8c93798e9f
rustdoc: check code block syntax in early pass 2019-01-14 21:21:21 -05:00
Andy Russell
ee10d99b9a
generalize markdown to source span calculation 2019-01-14 20:29:39 -05:00
Guillaume Gomez
0d695ff330 Fix crates filtering box not being filled 2019-01-15 00:41:41 +01:00
Jethro Beekman
6080318883 Add additional human-readable cfg strings to rustdoc 2019-01-14 14:32:31 +05:30
Mazdak Farrokhzad
6d00124b85
Rollup merge of #56874 - JohnHeitmann:docs-spacing, r=GuillaumeGomez
Simplify foreign type rendering.

Simplified foreign type rendering by switching from tables to flexbox. Also, removed some seemingly extraneous elements like “ghost” spans.

Reduces element count on the `std::iter::Iterator` page by 30%. On my laptop it drops Iterator page load time from ~15s to ~10s. Frame times during scrolling are a hair lower too.

Known visual changes (happy to tweak based on feedback):
* The main `impl ...` headers are now getting the default, larger, h3 font size. This was an accident, but I liked how it turned out so I didn't fix it.
* There's a hair less vertical spacing between the end of a where block and the start of the next fn. Now, all spacing is consistent. I think this looks a bit worse. I may tweak vertical spacing more here or in a follow-up that cleans up vertical spacing more broadly.
* "[src]" links are all sized at 17px. A few were 19px in the original.

I haven't yet done heavy cross-browser or cross-crate testing. I was hoping to get a quick thumbs up or thumbs down here at this first draft, then if this is on the right track I'll spend some time on that testing.

TODO:

- [x] Test on Chrome
- [x] Test on Firefox
- [ ] ~~Test on UC Android~~
- [x] Test on Edge
- [x] Test on iOS safari
- [x] Test on desktop safari
- [x] Update automated tests
- [x] Increase vertical margin
- [x] Fix "Important traits for" hover overlap
- [x] Wait for #55798 to land & merge it
2019-01-13 21:18:09 +01:00
Igor Matuszewski
df9df19507 Always calculate glob map but only for glob uses
Previously calculating glob map was *opt-in*, however it did record
node id -> ident use for every use directive. This aims to see if we
can unconditionally calculate the glob map and not regress performance.
2019-01-13 10:42:59 +01:00
Mazdak Farrokhzad
8f11da4bfc
Rollup merge of #57508 - DebugSteven:inline-extern, r=GuillaumeGomez
rustdoc: Allow inlining of reexported crates and crate items

Fixes #46296

This PR checks for when a `pub extern crate` statement has a `#[doc(inline)]` attribute & inlines its contents. Code is based off of the inlining statements for `pub use` statements.
2019-01-13 05:26:57 +01:00
Mazdak Farrokhzad
a61ebac367
Rollup merge of #57417 - QuietMisdreavus:semi-revert-doctest-parsing, r=GuillaumeGomez
rustdoc: use text-based doctest parsing if a macro is wrapping main

This is a "forward-port" of https://github.com/rust-lang/rust/pull/57019, intended to get https://github.com/rust-lang/rust/issues/56898 on nightly, since it's now fixed on beta (and already worked on stable).

To recap:

* The libsyntax-based doctest parsing now checks to see whether there is a top-level macro invocation in the doctest while it's checking for `fn main` and an `extern crate` statement.
* If it finds a macro invocation and *didn't* find `fn main`, then it performs the older text-based scan to allow doctests like the ones in `allocator_api` to still compile.

A "proper" fix will involve changing how `make_test` works to call it later in the `run_test` function, after the initial steps of compilation have completed. I've filed [a separate issue](https://github.com/rust-lang/rust/issues/57415) for that, though.
2019-01-12 10:55:02 +01:00
DebugSteven
3f03297956 inline pub extern crate statements 2019-01-10 20:27:44 -05:00
Guillaume Gomez
830b3b8c75 Re-enable history api on file:// protocol 2019-01-10 23:59:42 +01:00
QuietMisdreavus
dac6eeca92 semi-revert libsyntax doctest parsing if a macro is wrapping main 2019-01-07 11:25:39 -06:00
Trevor Spiteri
d2ac094c99 Update static files code for updated Source Serif Pro font 2019-01-07 14:27:50 +01:00
Trevor Spiteri
aa257ec73e Replace Heuristica with Source Serif Pro italic in rustdoc.css 2019-01-07 14:03:46 +01:00
Trevor Spiteri
239ac2b990 Source Serif Pro regular and bold 2.007, and italic 1.007
Use fonts from the Roman 2.007 and Italic 1.007 version at:
https://github.com/adobe-fonts/source-serif-pro/releases/tag/2.007R-ro%2F1.007R-it

The following files are used from the distribution:

  * WOFF/TTF/SourceSerifPro-Regular.ttf.woff
  * WOFF/TTF/SourceSerifPro-Bold.ttf.woff
  * WOFF/TTF/SourceSerifPro-It.ttf.woff

These replace the older Source Serif Pro regular and bold fonts, and
the Heuristica italic font.
2019-01-07 14:03:29 +01:00
kennytm
d9885c41de
Rollup merge of #57343 - Xanewok:querify-access-levels, r=nikomatsakis
Calculate privacy access only via query

Initially converted to query in a9f6babcda and then changed to respect dependencies 8281e883dd.

I did this as an effort to prune `CrateAnalysis` from librustc_save_analysis, with the only thing remaining being the glob map (`name` is unused, existing `crate_name` is exposed in the compiler passes, instead).

Since calculating the glob map is opt-in, it'd be great if we could calculate that on-demand. However, it seems that it'd require converting resolution to queries, which I'm not sure how to do yet.

In an effort to get rid of `CrateAnalysis` altogether, could we try unconditionally calculating the glob_map in the resolver, thus completely removing `CrateAnalysis` struct, and doing a perf run?

r? @nikomatsakis

cc @petrochenkov do you have any idea how/if at all could we querify the resolver? I've stumbled upon a comment that's ~3? years old at the moment, so I'm guessing things might have changed and it actually may be feasible now. fe0c10019d/src/librustc_driver/driver.rs (L589-L593)
2019-01-05 23:57:06 +08:00
kennytm
284a419b73
Rollup merge of #57338 - QuietMisdreavus:doctest-file-name, r=GuillaumeGomez
rustdoc: force binary filename for compiled doctests

Fixes https://github.com/rust-lang/rust/issues/57317, needed for https://github.com/rust-lang/rust-by-example/issues/1137

Right now, when building a doctest, rustdoc provides the compiler an output directory (a temp dir) but lets the compiler name the executable. If the doctest needs to be executed, it then tries to run a binary named `rust_out` from that directory. For the most part, this works fine. However, if the doctest sets its own crate name, the compiler uses that name for the output binary instead. This causes rustdoc to try to execute a nonexistent binary, causing the test to fail.

This PR changes the paths rustdoc gives to the compiler when building doctests to force the output *filename* instead of just the *directory*.
2019-01-05 23:57:02 +08:00
kennytm
ab55ecf4ba
Rollup merge of #57314 - wiktorkuchta:master, r=Centril
Fix repeated word typos

Inspired by #57295 (I skipped 'be be' because of it) and my [PR in another repo
](https://github.com/e-maxx-eng/e-maxx-eng/pull/389)
Not a stupid `sed`, I actually tried to fix case by case.
2019-01-05 23:56:59 +08:00
bors
2fba17fc97 Auto merge of #56837 - arielb1:nonprincipal-trait-objects, r=nikomatsakis
Add support for trait-objects without a principal

The hard-error version of #56481 - should be merged after we do something about the `traitobject` crate.

Fixes #33140.
Fixes #57057.

r? @nikomatsakis
2019-01-05 03:36:31 +00:00
bors
f381a96255 Auto merge of #56897 - euclio:parse-fatal, r=estebank
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-04 19:39:24 +00:00
Igor Matuszewski
480d0f3a31 Remove unused name from CrateAnalysis 2019-01-04 20:01:01 +01:00
Igor Matuszewski
a1189ac058 Replace CrateAnalysis::access_levels with query 2019-01-04 19:12:48 +01:00
QuietMisdreavus
0b55c79072 force binary filename for compiled doctests 2019-01-04 09:57:17 -06:00
Ariel Ben-Yehuda
64857de2bd hack-fix to rustdoc 2019-01-04 00:34:53 +02:00
Wiktor Kuchta
190d139f3a Fix repeated word typos
Found with `git grep -P '\b([a-z]+)\s+\1\b'`
2019-01-03 21:33:37 +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
Oliver Scherer
b903cb9d60 Move the Unevaluated constant arm upwards in the type structure 2019-01-01 20:05:02 +01:00
bors
59183180f7 Auto merge of #56225 - alexreg:type_alias_enum_variants, r=petrochenkov
Implement RFC 2338, "Type alias enum variants"

This PR implements [RFC 2338](https://github.com/rust-lang/rfcs/pull/2338), allowing one to write code like the following.

```rust
#![feature(type_alias_enum_variants)]

enum Foo {
    Bar(i32),
    Baz { i: i32 },
}

type Alias = Foo;

fn main() {
    let t = Alias::Bar(0);
    let t = Alias::Baz { i: 0 };
    match t {
        Alias::Bar(_i) => {}
        Alias::Baz { i: _i } => {}
    }
}
```

Since `Self` can be considered a type alias in this context, it also enables using `Self::Variant` as both a constructor and pattern.

Fixes issues #56199 and #56611.

N.B., after discussing the syntax for type arguments on enum variants with @petrochenkov and @eddyb (there are also a few comments on the [tracking issue](https://github.com/rust-lang/rust/issues/49683)), the consensus seems to be treat the syntax as follows, which ought to be backwards-compatible.

```rust
Option::<u8>::None; // OK
Option::None::<u8>; // OK, but lint in near future (hard error next edition?)
Alias::<u8>::None; // OK
Alias::None::<u8>; // Error
```

I do not know if this will need an FCP, but let's start one if so.
2018-12-29 21:03:11 +00:00
kennytm
af56d2bf1a
Rollup merge of #57163 - JohnHeitmann:chevron-fix, r=estebank
Give the crate select chevron room to breathe.

Before:
![screen shot 2018-12-27 at 10 26 10 pm](https://user-images.githubusercontent.com/4282480/50505100-9ff24300-0a26-11e9-9b74-37bdee6faf83.png)

After:
![screen shot 2018-12-27 at 10 25 57 pm](https://user-images.githubusercontent.com/4282480/50505110-a54f8d80-0a26-11e9-9fa2-7fed21773207.png)
2018-12-29 18:50:28 +08:00
bors
43d26b1f35 Auto merge of #57006 - GuillaumeGomez:no-crate-filter, r=QuietMisdreavus
Add no-crate filter option on rustdoc

@onur asked me about it so here it is!

r? @QuietMisdreavus
2018-12-29 01:22:04 +00:00
John Heitmann
94dd67bc6e Give the crate select chevron room to breathe. 2018-12-27 22:26:54 -08:00
John Heitmann
34bd2b845b Simplify foreign type rendering.
Simplified foreign type rendering by switching from tables to flexbox. Also, removed some seemingly extraneous elements like “ghost” spans.

Reduces element count on std::iter::Iterator by 30%.
2018-12-27 21:22:27 -08:00
Alexander Regueiro
1b150c4043 Store Ident rather than just Name in HIR types Item and ForeignItem. 2018-12-26 21:26:37 +00:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
bors
27a25df2e2 Auto merge of #56962 - nivkner:fixme_fixup4, r=pnkfelix
address some FIXME whose associated issues were marked as closed

part of #44366
2018-12-25 13:32:31 +00:00
Guillaume Gomez
dbcf68951c Add no-crate filter option on rustdoc 2018-12-24 18:19:36 +01:00
kennytm
4446c65d9b
Rollup merge of #57011 - QuietMisdreavus:static-root-path, r=GuillaumeGomez
rustdoc: add new CLI flag to load static files from a different location

This PR adds a new CLI flag to rustdoc, `--static-root-path`, which controls how rustdoc links pages to the CSS/JS/font static files bundled with the output. By default, these files are linked with a series of `../` which is calculated per-page to link it to the documentation root - i.e. a relative link to the directory given by `-o`. This is causing problems for docs.rs, because even though docs.rs has saved one copy of these files and is dispatching them dynamically, browsers have no way of knowing that these are the same files and can cache them. This can allow it to link these files as, for example, `/rustdoc.css` instead of `../../rustdoc.css`, creating a single location that the files are loaded from.

I made sure to only change links for the *static* files, those that don't change between crates. Files like the search index, aliases, the source files listing, etc, are still linked with relative links.

r? @GuillaumeGomez

cc @onur
2018-12-23 02:12:16 +08:00