Commit Graph

137 Commits

Author SHA1 Message Date
Felix S. Klock II
fadabd6fbb Revert stabilization of feature(never_type).
This commit is just covering the feature gate itself and the tests
that made direct use of `!` and thus need to opt back into the
feature.

A follow on commit brings back the other change that motivates the
revert: Namely, going back to the old rules for falling back to `()`.
2018-04-20 18:09:28 +02:00
Francis Gagné
f48c043154 Document builtin implementations of Clone and Copy
There are types that implement `Clone` and `Copy` but are not mentioned
in the documentation, because the implementations are provided by the
compiler. They are types of variants that cannot be fully covered by
trait implementations in Rust code, because the language is not
expressive enough.
2018-03-26 23:42:29 -04:00
Francis Gagné
27164faaef Move some implementations of Clone and Copy to libcore
Add implementations of `Clone` and `Copy` for some primitive types to
libcore so that they show up in the documentation. The concerned types
are the following:

* All primitive signed and unsigned integer types (`usize`, `u8`, `u16`,
  `u32`, `u64`, `u128`, `isize`, `i8`, `i16`, `i32`, `i64`, `i128`);
* All primitive floating point types (`f32`, `f64`)
* `bool`
* `char`
* `!`
* Raw pointers (`*const T` and `*mut T`)
* Shared references (`&'a T`)

These types already implemented `Clone` and `Copy`, but the
implementation was provided by the compiler. The compiler no longer
provides these implementations and instead tries to look them up as
normal trait implementations. The goal of this change is to make the
implementations appear in the generated documentation.

For `Copy` specifically, the compiler would reject an attempt to write
an `impl` for the primitive types listed above with error `E0206`; this
error no longer occurs for these types, but it will still occur for the
other types that used to raise that error.

The trait implementations are guarded with `#[cfg(not(stage0))]` because
they are invalid according to the stage0 compiler. When the stage0
compiler is updated to a revision that includes this change, the
attribute will have to be removed, otherwise the stage0 build will fail
because the types mentioned above no longer implement `Clone` or `Copy`.

For type variants that are variadic, such as tuples and function
pointers, and for array types, the `Clone` and `Copy` implementations
are still provided by the compiler, because the language is not
expressive enough yet to be able to write the appropriate
implementations in Rust.

The initial plan was to add `impl` blocks guarded by `#[cfg(dox)]` to
make them apply only when generating documentation, without having to
touch the compiler. However, rustdoc's usage of the compiler still
rejected those `impl` blocks.

This is a [breaking-change] for users of `#![no_core]`, because they
will now have to supply their own implementations of `Clone` and `Copy`
for the primitive types listed above. The easiest way to do that is to
simply copy the implementations from `src/libcore/clone.rs` and
`src/libcore/marker.rs`.

Fixes #25893
2018-03-26 21:52:58 -04:00
Simon Sapin
00721de714 Mention closures in docs for Clone and Copy 2018-03-23 15:12:10 +01:00
bors
6bfa7d02d6 Auto merge of #49058 - withoutboats:pin, r=cramertj
Pin, Unpin, PinBox

Implementing rust-lang/rfcs#2349 (do not merge until RFC is merged)

@bors r? @cramertj
2018-03-19 23:01:37 +00:00
boats
2797aaca77
Update tracking issue. 2018-03-18 15:05:45 -07:00
Esteban Küber
bfc66daef9 Review comment: remove mention of move closure 2018-03-14 18:05:55 -07:00
Esteban Küber
cb5667eaa5 Make hint clearer, with the potential of being wrong 2018-03-14 18:04:21 -07:00
Esteban Küber
fe1975448c Suggest using move when trying to share ...::channel::{Receiver, Sender}
Extend `rustc_on_unimplemented` to match on ADT without evaluating type
arguments.
2018-03-14 18:04:20 -07:00
Esteban Küber
6d8a173980 Reword E0044 and message for !Send types
- Reword E0044 help.
 - Change error message for types that don't implement `Send`
2018-03-14 18:04:20 -07:00
boats
918ef671b0
Pin and Unpin in libcore. 2018-03-14 15:57:25 -07:00
Jacob Hughes
38064a9a7c Review change - Expanded on explanation. 2018-02-14 19:14:25 +00:00
Jacob Hughes
288c0c3081 Clarified why Sized bound not implicit on trait's implicit Self type. 2018-02-14 15:50:26 +00:00
leonardo.yvens
f93183adb4 Remove impl Foo for .. in favor of auto trait Foo
No longer parse it.
Remove AutoTrait variant from AST and HIR.
Remove backwards compatibility lint.
Remove coherence checks, they make no sense for the new syntax.
Remove from rustdoc.
2018-01-13 18:48:00 +03:00
Alex Crichton
a850bb0e5d Update bootstrap compiler
Also remove a number of `stage0` annotations and such
2017-11-29 21:11:20 -08:00
Lucas Morales
a1ad729a81
core::marker fix typo 2017-11-24 03:04:57 -06:00
leonardo.yvens
7995f879d0 Remove send lang item.
It's completely unused.
2017-11-07 10:39:17 -02:00
leonardo.yvens
8b586e68b5 auto trait future compatibility lint 2017-11-03 16:13:21 -02:00
Havvy
20fc215323 Normalize spaces in lang attributes. 2017-09-28 01:30:25 -07:00
kennytm
4711982314
Removed as many "```ignore" as possible.
Replaced by adding extra imports, adding hidden code (`# ...`), modifying
examples to be runnable (sorry Homura), specifying non-Rust code, and
converting to should_panic, no_run, or compile_fail.

Remaining "```ignore"s received an explanation why they are being ignored.
2017-06-23 15:31:53 +08:00
Wonwoo Choi
3cb7825986 Update older URLs pointing to the first edition of the Book
`compiler-plugins.html` is moved into the Unstable Book.
Explanation is slightly modified to match the change.
2017-06-15 00:04:00 +09:00
king6cong
018722e485 doc rewording 2017-06-05 11:02:38 +08:00
Sam Whited
f6d935b455 fix broken link to nomicon in Unsize docs 2017-05-24 11:55:05 -05:00
Alex Crichton
5daf557a77 Update stage0 bootstrap compiler
We've got a freshly minted beta compiler, let's update to use that on nightly!
This has a few other changes associated with it as well

* A bump to the rustc version number (to 1.19.0)
* Movement of the `cargo` and `rls` submodules to their "proper" location in
  `src/tools/{cargo,rls}`. Now that Cargo workspaces support the `exclude`
  option this can work.
* Updates of the `cargo` and `rls` submodules to their master branches.
* Tweak to the `src/stage0.txt` format to be more amenable for Cargo version
  numbers. On the beta channel Cargo will bootstrap from a different version
  than rustc (e.g. the version numbers are different), so we need different
  configuration for this.
* Addition of `dev` as a readable key in the `src/stage0.txt` format. If present
  then stage0 compilers are downloaded from `dev-static.rust-lang.org` instead
  of `static.rust-lang.org`. This is added to accomodate our updated release
  process with Travis and AppVeyor.
2017-04-29 12:11:14 -07:00
Eduard-Mihai Burtescu
6563374ed2 rustc: replace interior_unsafe with a Freeze trait. 2017-04-20 14:39:31 +03:00
Corey Farwell
e7b0f2badf Remove function invokation parens from documentation links.
This was never established as a convention we should follow in the 'More
API Documentation Conventions' RFC:

https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md
2017-03-13 21:43:18 -04:00
Steve Klabnik
3eb8434150 Get linkchecker clean
This affects the book, some missed things in the reference, the grammar,
and the standard library. Whew!
2017-02-21 14:02:12 -05:00
est31
af46d69b8a Remove Reflect
* Remove the Reflect trait
* Remove the "reflect" lang feature
2017-01-24 23:22:44 +01:00
Seo Sanghyeon
ac2723886f Rollup merge of #38816 - Manishearth:coercion-doc, r=GuillaumeGomez
Add more docs for CoerceUnsized and Unsize

here be dragons

r? @ubsan @steveklabnik
2017-01-10 20:27:43 +09:00
Manish Goregaokar
07e844f95f Add more docs for CoerceUnsized and Unsize 2017-01-04 02:42:10 -08:00
Ariel Ben-Yehuda
4cab2931c8 simplify Copy implementation error reporting
Span the affected fields instead of reporting the field/variant name.
2017-01-04 00:03:34 +02:00
Guillaume Gomez
fdf482c398 Add missing urls for marker's traits 2016-11-10 23:13:37 +01:00
Oliver Middleton
8faa503a6b Fix a few links in the docs 2016-10-21 00:49:47 +01:00
Nick Cameron
14c62f91b7 Deprecate Reflect
[tracking issue](https://github.com/rust-lang/rust/issues/27749)
2016-10-12 08:40:22 +13:00
Keegan McAllister
b735c1bc78 Tweak std::marker docs
Fixes #29361.
2016-09-15 12:31:17 -07:00
ggomez
48dc0ba307 Improve Copy trait doc 2016-09-11 11:58:20 +02:00
Jeffrey Seyfried
e2ad3be178 Use #[prelude_import] in libcore. 2016-08-24 22:12:23 +00:00
Ryan Scheel (Havvy)
157f7c1b30 Add Derive not possible question to Copy
This adds a question and answer to the Q&A section of the Copy
docs. Specifically, it asks the question I asked while reading
the docs, and gives its answer.
2016-08-01 05:43:13 +00:00
Carol (Nichols || Goulding)
fc467b31c2 Reorder Copy doc sections
The new order puts all the "when" questions together and puts the "how"
question with the "derivable" section. So you have to scroll past (and
hopefully read) the can/cannot/should caveats and guidelines to get to
the information about how to actually go about doing it once you've
determined that you can and should, with derivable information first so
that you can just use the derived implementation if that applies.

Previous order:

* General explanation
* When can my type be `Copy`?
* How can I implement `Copy`?
* When can my type _not_ be `Copy`?
* When should my type be `Copy`?
* Derivable

New order:

* General explanation
* When can my type be `Copy`?
* When can my type _not_ be `Copy`?
* When should my type be `Copy`?
* Derivable
* How can I implement `Copy`?
2016-05-23 10:03:44 -04:00
Carol (Nichols || Goulding)
2f44053332 Make Derivable header be an h2 instead of an h1
This matches the other subsections.
2016-05-23 10:03:44 -04:00
Carol (Nichols || Goulding)
1e493fd979 Add explanations about what derived trait implementations do 2016-05-23 10:03:44 -04:00
Ulrik Sverdrup
f4fac9b0fa Fix spacing style of T: Bound in docs
The space between `T` and `Bound` is the typical style used in code and
produced by rustdoc's rendering. Fixed first in Reflect's docs and then
I fixed all occurrences in docs I could find.
2016-01-17 23:44:33 +01:00
Steve Klabnik
05874de412 Link Nomicon in PhantomData's docs
Fixes #30069
2016-01-07 14:18:15 -05:00
Steve Klabnik
ff3ebfa7b9 Mention that Sync/Send are automatically derived
Fixes #28581
2016-01-04 13:03:29 -05:00
William Throwe
7a7d481270 Mark raw pointer Send and Sync impls ?Sized
I'm pretty sure this code isn't actually used by the compiler, so this
is effectively a documentation change.
2015-11-26 00:36:09 -05:00
Vadim Petrochenkov
7e2ffc7090 Add missing annotations and some tests 2015-11-18 01:24:21 +03:00
Steve Klabnik
e4a0b48027 Make note about traits that can be derived
in their API docs

Fixes #29711
2015-11-16 18:50:40 -05:00
Kevin Butler
82784cb89d libcore: deny warnings in doctests 2015-11-12 05:16:08 +00:00
Andrew Paseltiner
d76cdac482 Tidy core::marker doc summaries 2015-11-05 13:29:46 -05:00
Benjamin Herr
4db95e652e docs for Reflect: blank line after first sentence
Rustdoc takes the first paragraph as a summary, so having a huge
paragraph that ends with introducing an example looked somewhat wrong on
the module page.
2015-11-05 13:37:43 +01:00