Commit Graph

74752 Commits

Author SHA1 Message Date
QuietMisdreavus
ef30a8fd1c track extern traits being inlined 2018-02-21 18:33:42 -06:00
QuietMisdreavus
d98449d110 manually release cx.external_traits while building the new trait 2018-02-21 17:44:49 -06:00
steveklabnik
ef48e0f2b9 Update the book to promote second edition
This updates the book repository, but mostly to include
https://github.com/rust-lang/book/pull/1180

TL;DR: the second edition is close enough to done that we should
universally recommend it over the first edition.
2018-02-21 14:26:09 -05:00
Eduard-Mihai Burtescu
713b05f072 rustc_data_structures: add missing #[inline]. 2018-02-21 19:21:26 +02:00
Guillaume Gomez
24c17cb1a8
Rollup merge of #48397 - ordovicia:pow_doc, r=GuillaumeGomez
Take 2^5 as examples in document of pow()

Fixes #48396 by taking 2^5 as examples.
2018-02-21 16:29:57 +01:00
Guillaume Gomez
c118d37ac4
Rollup merge of #48382 - GuillaumeGomez:fix-rustdoc-test-panic, r=estebank
Fix rustdoc test ICE

Fixes #48377.

r? @QuietMisdreavus
2018-02-21 16:29:56 +01:00
Guillaume Gomez
d9f5eeb57e
Rollup merge of #48360 - redcape:redcape-count-doc-fix, r=cramertj
Fix count usize link typo in docs

The docs point to isize when the link should be going to usize instead. Fix the doc.
2018-02-21 16:29:55 +01:00
Guillaume Gomez
d6e649a631
Rollup merge of #48354 - m0ppers:add-read-until-link, r=aidanhs
Add missing link for read_line

Seems I found a missing link 🔗

https://doc.rust-lang.org/stable/std/io/trait.BufRead.html#errors-2
2018-02-21 16:29:54 +01:00
Guillaume Gomez
37463272a7
Rollup merge of #48352 - JakubAdamWieczorek:mailmap, r=petrochenkov
Update .mailmap with my real name

Good morning, the Rust team!

Once upon a time I was a modest-scale contributor. Sadly, various turbulences made me step away from my participation in the project. It's great to see how far it's gone.

I would appreciate it if you accepted this small change to the .mailmap file so that it shows my real name as back then I was using an alias. If doubts arise if I am the same person, I will be happy to provide further evidence. :)

Kind regards.
2018-02-21 16:29:53 +01:00
Guillaume Gomez
fe1293f8a9
Rollup merge of #48335 - Manishearth:shortcut-links, r=QuietMisdreavus
Implement implied shortcut links for intra-rustdoc-links

cc https://github.com/rust-lang/rust/issues/43466

Needs https://github.com/google/pulldown-cmark/pull/126

r? @QuietMisdreavus
2018-02-21 16:29:52 +01:00
Guillaume Gomez
27c6ff5c7c
Rollup merge of #48325 - frewsxcv:frewxcv-ignore, r=steveklabnik
Mark doc examples w/ `extern` blocks as `ignore`.

Fixes https://github.com/rust-lang/rust/issues/48218.
2018-02-21 16:29:51 +01:00
Guillaume Gomez
cb618ea195
Rollup merge of #48314 - frewsxcv:frewsxcv-broken-link, r=GuillaumeGomez
Fix broken documentation link.

None
2018-02-21 16:29:50 +01:00
Guillaume Gomez
ad83b47802
Rollup merge of #48198 - csmoe:inform_type_annotations, r=estebank
inform user where to give a type annotation

should resolve #47777
previous pull request https://github.com/rust-lang/rust/pull/47982 was closed because of a mistaken rebase.
r? @estebank
2018-02-21 16:29:48 +01:00
Guillaume Gomez
f0343cbd1f
Rollup merge of #48106 - QuietMisdreavus:teleporting-crates, r=GuillaumeGomez
rustdoc: move manual "extern crate" statements outside automatic "fn main"s in doctests

Gated on https://github.com/rust-lang/rust/pull/48095 - I based the branch atop that so i could show off the change in one of its tests, the actual change in this PR is just the last commit

There are a handful of unfortunate assumptions in the way rustdoc processes `extern crate` statements in doctests:

1. In the absence of an `extern crate` statement in the test, if the test also uses the local crate name, it will automatically insert an `extern crate cratename;` statement into the test.
2. If the doctest *does* include an `extern crate` statement, rustdoc will not automatically insert one, on the assumption that doing so would introduce a duplicate import.
3. If a doctest does not have the substring `fn main` outside a comment, rustdoc will wrap the whole doctest in a generated `fn main` so it can be compiled.

In short, whenever you write a doctest like this...

```rust
//! extern crate my_crate;
//! my_crate::some_cool_thing();
```

...rustdoc will turn it into (something like) this:

```rust
fn main() {
extern crate my_crate;
my_crate::some_cool_thing();
}
```

This creates issues when compiled, because now `my_crate` isn't even properly in scope! This forces people who want to have multiple crates in their doctests (or an explicit `extern crate` statement) to also manually include their own `fn main`, so rustdoc doesn't put their imports in the wrong place.

This PR just taps into another processing step rustdoc does to doctests: Whenever you add an `#![inner_attribute]` to the beginning of a doctest, rustdoc will actually splice those out and put it before the generated `fn main`. Now, we can just do the same with `extern crate`s at the beginning, too, and get a much nicer experience.

Now, the above example will be converted into this:

```rust
extern crate my_crate;
fn main() {
my_crate::some_cool_thing();
}
```
2018-02-21 16:29:47 +01:00
Guillaume Gomez
aec653536c
Rollup merge of #47833 - Aaron1011:final_auto_trait, r=GuillaumeGomez
Generate documentation for auto-trait impls

A new section is added to both both struct and trait doc pages.

On struct/enum pages, a new 'Auto Trait Implementations' section displays any synthetic implementations for auto traits. Currently, this is only done for Send and Sync.

![Auto trait implementations for Cloned](https://i.imgur.com/XtTV6IJ.png)

On trait pages, a new 'Auto Implementors' section displays all types which automatically implement the trait. Effectively, this is a list of all public types in the standard library.

![Auto trait implementors for Send](https://i.imgur.com/3GRBpTy.png)

Synthesized impls for a particular auto trait ('synthetic impls') take generic bounds into account. For example, a type
```rust
struct Foo<T>(T)
```
 will have 'impl<T> Send for Foo<T> where T: Send' generated for it.

Manual implementations of auto traits are also taken into account. If we have
the following types:

```rust
struct Foo<T>(T)
struct Wrapper<T>(Foo<T>)
unsafe impl<T> Send for Wrapper<T>' // pretend that Wrapper<T> makes this sound somehow
```

Then Wrapper will have the following impl generated:
```rust
impl<T> Send for Wrapper<T>
```
reflecting the fact that 'T: Send' need not hold for 'Wrapper<T>: Send' to hold

Lifetimes, HRTBS, and projections (e.g. '<T as Iterator>::Item') are taken into account by synthetic impls:

![A ridiculous demonstration type](https://i.imgur.com/TkZMWuN.png)

However, if a type can *never* implement a particular auto trait (e.g. `struct MyStruct<T>(*const T)`), then a negative impl will be generated (in this case, `impl<T> !Send for MyStruct<T>`)

All of this means that a user should be able to copy-paste a syntheticimpl into their code, without any observable changes in behavior (assuming the rest of the program remains unchanged).
2018-02-21 16:29:46 +01:00
Guillaume Gomez
2a32060fb6
Rollup merge of #47379 - da-x:master, r=sfackler
Derive std::cmp::Reverse as Copy or Clone

If the type parameter is Copy or Clone, then `Reverse` should be too.
2018-02-21 16:29:45 +01:00
Hidehito Yabuuchi
7e51e7ddd6 Take 2^5 as examples in document of pow() (fixes #48396)
Current document takes 2^4, which is equal to 4^2.
This example is not very helpful for those unfamiliar with math words in English and thus rely on example codes.
2018-02-21 22:34:45 +09:00
Esteban Küber
20bc72e693 Handle custom diagnostic for &str + String 2018-02-20 22:46:51 -08:00
boats
5949d8b2d7
Fix internal references to bad_style in test code. 2018-02-20 15:57:16 -08:00
boats
21e2a5e8d8
Fix filepath in lint test. 2018-02-20 14:44:39 -08:00
boats
6fe5f42e37
Fix carets. 2018-02-20 13:38:46 -08:00
boats
cf6e2f53ba
Add nonstandard_style alias for bad_style. 2018-02-20 13:28:51 -08:00
Vitali Lovich
14b403c91a Fix doc compile error 2018-02-20 13:07:21 -08:00
Guillaume Gomez
5cbf9aedb8 Fix rustdoc test ICE 2018-02-20 20:30:29 +01:00
John Kåre Alsaker
9d3719bcfa Do not run the default panic hook inside procedural macros. Fixes #47812 2018-02-20 19:16:49 +01:00
Mark Simulacrum
33f5ceee1f stage0 cfg cleanup 2018-02-20 08:52:33 -07:00
Mark Simulacrum
24b485b918 Bootstrap from the 1.25 beta 2018-02-20 08:52:33 -07:00
Mazdak Farrokhzad
819d57abc9 core::iter::Iterator::flatten: improve docs wrt. deep vs. shallow flatten per @clarcharr's review 2018-02-20 08:29:07 +01:00
Mazdak Farrokhzad
3d74c74fa0 core::iter::Iterator::flatten: tracking issue is #48213 2018-02-20 08:28:54 +01:00
Mazdak Farrokhzad
0e394010e6 core::iter::Flatten: update FlatMap & Flatten according to discussion 2018-02-20 08:28:33 +01:00
Mazdak Farrokhzad
36be763d0e Iterator::flatten: fix tracking issue number on FusedIterator for Flatten 2018-02-20 08:27:59 +01:00
Mazdak Farrokhzad
6af23f977c add Iterator::flatten and redefine flat_map(f) in terms of map(f).flatten() 2018-02-20 08:27:32 +01:00
Esteban Küber
1aad320974 When encountering invalid token after unsafe, mention { 2018-02-19 21:58:36 -08:00
Aaron Hill
44d07df1cc
Sort synthetic impls bounds before rendering
This removes the implicit dependency on the iteration
order of FxHashMap
2018-02-19 20:27:28 -05:00
Eduard-Mihai Burtescu
c9fcedeb4c rustc_mir: optimize the deaggregator's expansion of statements. 2018-02-20 02:50:26 +02:00
Eduard-Mihai Burtescu
d773d95880 rustc_mir: don't run the deaggregator on arrays for now. 2018-02-20 02:50:26 +02:00
Eduard-Mihai Burtescu
6195ad8654 test: use the right amount of CGUs in sepcomp-cci-copies to ensure deterministic splitting. 2018-02-20 02:50:26 +02:00
Eduard-Mihai Burtescu
6e5dacbd5e rustc_mir: always run the deaggregator. 2018-02-20 02:50:26 +02:00
Eduard-Mihai Burtescu
e598bdfaa0 rustc_mir: do not remove dead user variables if debuginfo needs them. 2018-02-20 02:50:26 +02:00
Eduard-Mihai Burtescu
b88180f74c rustc_mir: handle all aggregate kinds in the deaggregator. 2018-02-20 02:50:26 +02:00
Eduard-Mihai Burtescu
3922dd72fe rustc_mir: use the "idiomatic" optimization gating in the deaggregator. 2018-02-20 02:50:26 +02:00
Gil Cottle
3f931515df
Fix count usize link typo in docs 2018-02-19 20:51:48 +00:00
Andreas Streichardt
f0a968eada Add missing link 2018-02-19 17:19:30 +01:00
Michael Woerister
89b3ef3e8e Allow for instantiating statics from upstream crates. 2018-02-19 16:49:20 +01:00
Michael Woerister
1be7f966e0 Rename is_translated_fn query to is_translated_item and make it support statics. 2018-02-19 16:47:59 +01:00
Michael Woerister
8ff633cc3b Implement describe_def query for LOCAL_CRATE 2018-02-19 16:46:40 +01:00
Jakub Adam Wieczorek
56512971e0 Update .mailmap with my real name 2018-02-19 13:21:47 +00:00
Michael Woerister
15ff0adcde Use DefId instead of NodeId in MonoItem::Static. 2018-02-19 13:29:22 +01:00
Michael Woerister
d5ed655a08 Use DefId instead of NodeId while generating debuginfo for statics. 2018-02-19 12:41:10 +01:00
Manish Goregaokar
5fdc10c68b Filter out non-macros in resolve_macro
Fixes https://github.com/rust-lang/rust/issues/48341
2018-02-18 17:57:06 -08:00