Commit graph

218 commits

Author SHA1 Message Date
Yuki Okushi
3f4f3134d9
Add missing backticks in diagnostics note 2020-07-23 21:52:48 +09:00
Manish Goregaokar
241374a93b
Rollup merge of #73197 - c410-f3r:ranges, r=dtolnay
Impl Default for ranges

Couldn't find an issue about it.

`Range` and friends probably can implement `Default` if `Idx: Default`. For example, the following would be possible:

```rust
#[derive(Default)]
struct Foo(core::ops::RangeToInclusive<u64>);

let _ = [1, 2, 3].get(core::ops::Range::default());

core::ops::RangeFrom::<u8>::default().take(20).for_each(|x| { dbg!(x); });

fn stuff<T: Default>() { let instance = T::default(); ... more stuff }
stuff::<core::ops::RangeTo<f32>>();
```

Maybe there are some concerns about safety or misunderstandings?
2020-07-20 12:30:14 -07:00
Mark Rousskov
647d9b525f apply bootstrap cfgs 2020-07-16 19:36:49 -04:00
Caio
c375692747 Remove some Default impls 2020-07-10 07:53:53 -03:00
Aaron Hill
a13d4678fe
Implement associated lang items
Fixes #70718

This commit allows making associated items (e.g. associated functions
and types) into lang items via the `#[lang]` attribute. This allows such
items to be accessed directly, rather than by iterating over the parent
item's associated items.

I've added `FnOnce::Output` as a lang item, and updated one old usage to
use the new lang item. The remaining uses can be updated separately.
2020-06-24 19:08:11 -04:00
Caio
187aea7c34 Impl Default for ranges 2020-06-09 23:10:55 -03:00
Mark Rousskov
7139342249 Bump to 1.46 2020-06-03 15:27:51 -04:00
JOE1994
3048a41a5a Rephrase term 'non-pointer type'
If the reader assumes that 'pointer type's include 'smart pointer's,
the term 'non-pointer type' could mislead the reader to assume that
x should not be a smart pointer type. I tried to rephrase the term
'non-pointer type' to remove ambiguity in the doc comments.

closes #72335

Thank you for reviewing this PR! :)
2020-05-31 15:58:06 -04:00
Ralf Jung
93d45a01e7
Rollup merge of #72368 - CAD97:rangeto, r=dtolnay
Resolve overflow behavior for RangeFrom

This specifies a documented unspecified implementation detail of `RangeFrom` and makes it consistently implement the specified behavior.

Specifically, `(u8::MAX).next()` is defined to cause an overflow, and resolve that overflow in the same manner as the `Step::forward` implementation.

The inconsistency that has existed is `<RangeFrom as Iterator>::nth`. The existing behavior should be plain to see after #69659: the skipping part previously always panicked if it caused an overflow, but the final step (to set up the state for further iteration) has always been debug-checked.

The inconsistency, then, is that `RangeFrom::nth` does not implement the same behavior as the naive (and default) implementation of just calling `next` multiple times. This PR aligns `RangeFrom::nth` to have identical behavior to the naive implementation. It also lines up with the standard behavior of primitive math in Rust everywhere else in the language: debug checked overflow.

cc @Amanieu

---

Followup to #69659. Closes #25708 (by documenting the panic as intended).

The documentation wording is preliminary and can probably be improved.

This will probably need an FCP, as it changes observable stable behavior.
2020-05-30 13:45:02 +02:00
csmoe
7cdc897234 only try to suggest for try trait_ref 2020-05-22 10:11:52 +08:00
CAD97
406852ae0d Resolve overflow behavior for RangeFrom 2020-05-19 22:31:31 -04:00
Bastian Kauschke
33324f5a40 rewrite Drop documentation 2020-05-07 09:10:31 +02:00
Mark Rousskov
93eed402ad Bump bootstrap compiler 2020-04-25 09:25:33 -04:00
Josh Stone
9ede5b04d0 Remove the last remnant of unsigned Neg
It's been gone since #23945, before Rust 1.0. The former wrapping
semantics have also been available as inherent methods for a long time
now. There's no reason to keep this unused macro around.
2020-04-13 18:37:06 -07:00
Linus Färnstrand
d06b26fb6c Stop importing the float modules. Use assoc consts 2020-04-05 11:30:25 +02:00
Linus Färnstrand
c831265940 Replace float module consts with assoc consts in documentation 2020-04-03 09:33:10 +02:00
Niko Matsakis
e8a05e201e permit negative impls for non-auto traits 2020-03-26 06:27:45 -04:00
Adam Perry
a7ab7b136e #[track_caller] on core::ops::{Index, IndexMut}. 2020-03-23 08:01:49 -07:00
CDirkx
6570e275b9 Removed unused Hasher import. 2020-03-19 21:58:11 +01:00
CDirkx
bd6deaa08d Derive PartialEq, Eq and Hash for RangeInclusive
The manual implementation of PartialEq, Eq and Hash for RangeInclusive was functionally equivalent to a derived implementation.

This change removes the manual implementation and adds the respective derives.
A side effect of this change is that the derives also add implementations for StructuralPartialEq and StructuralEq, which enables RangeInclusive to be used in const generics.
2020-03-19 20:45:47 +01:00
Jonas Schievink
f53f9a88f1 Bump the bootstrap compiler 2020-03-15 19:43:25 +01:00
Florian Gilcher
69aaed872c Make Point Copy in arithmetic documentation
Small composite types like `Point { x: i32, y: i32}` are plain
old data and we should encourage users to derive `Copy` on them.

This changes the semantics of the edited examples slightly: instead
of consuming the operands during addition, it will copy them. This
is desired behaviour.

Co-Authored-By: Jake Goulding <shepmaster@mac.com>
2020-03-10 18:11:36 +01:00
CAD97
3e115b6c9d Remove problematic specialization from RangeInclusive 2020-02-08 18:47:41 -05:00
bors
6cad7542da Auto merge of #68358 - matthewjasper:spec-fix, r=nikomatsakis
Remove some unsound specializations

This removes the unsound and exploitable specializations in the standard library

* The `PartialEq` and `Hash` implementations for  `RangeInclusive` are changed to avoid specialization.
* The `PartialOrd` specialization for slices now specializes on a limited set of concrete types.
* Added some tests for the soundness problems.
2020-02-08 03:46:56 +00:00
Jonas Schievink
044fe0f558 Add a resume type parameter to Generator 2020-02-02 13:20:57 +01:00
Matthew Jasper
a81c59f9b8 Remove some unsound specializations 2020-02-01 09:11:41 +00:00
Matthew Kraai
2f43313834 Convert collapsed to shortcut reference links 2019-12-26 05:27:55 -08:00
Mark Rousskov
a08df28a6f Document that calling Drop, even after it panics, is UB 2019-12-23 09:04:00 -05:00
Mazdak Farrokhzad
eaeb1138c6
Rollup merge of #67480 - rossmacarthur:fix-41260-avoid-issue-0-part-2, r=Centril
Require issue = "none" over issue = "0" in unstable attributes

These changes make the use of `issue = "none"` required in unstable attributes throughout the compiler.

Notes:
- #66299 is now in beta so `issue = "none"` is accepted.
- The `tidy` tool now fails on `issue = "0"`.
- Tests that used `issue = "0"` were changed to use `issue = "none"`, except for _one_ that asserts `issue = "0"` can still be used.
- The compiler still allows `issue = "0"` because some submodules require it, this could be disallowed once these are updated.

Resolves #41260

r? @varkor
2019-12-22 02:40:04 +01:00
Mark Rousskov
519fc84852 Document privacy of RangeInclusive fields 2019-12-21 11:27:51 -05:00
Ross MacArthur
f7256d28d1
Require issue = "none" over issue = "0" in unstable attributes 2019-12-21 13:16:18 +02:00
Mark Rousskov
82184440ec Propagate cfg bootstrap 2019-12-18 12:16:19 -05:00
Oliver Scherer
5e17e39881 Require stable/unstable annotations for the constness of all stable functions with a const modifier 2019-12-13 11:27:02 +01:00
David Tolnay
c737169fe5
Format libcore with rustfmt (including tests and benches) 2019-12-06 20:20:51 -08:00
Mazdak Farrokhzad
8dacfc2ada
Rollup merge of #66651 - Areredify:on-unimplemented-scope, r=davidtwco
Add `enclosing scope` parameter to `rustc_on_unimplemented`

Adds a new parameter to `#[rustc_on_unimplemented]`, `enclosing scope`, which highlights the function or closure scope with a message.

The wip part refers to adding this annotation to `Try` trait to improve ergonomics (which I don't know how to do since I change both std and librustc)

Closes #61709.
2019-12-03 11:07:01 +01:00
David Tolnay
95e00bfed8
Format libcore with rustfmt
This commit applies rustfmt with default settings to files in
src/libcore *that are not involved in any currently open PR* to minimize
merge conflicts. The list of files involved in open PRs was determined
by querying GitHub's GraphQL API with this script:
https://gist.github.com/dtolnay/aa9c34993dc051a4f344d1b10e4487e8

With the list of files from the script in `outstanding_files`, the
relevant commands were:

    $ find src/libcore -name '*.rs' | xargs rustfmt --edition=2018
    $ rg libcore outstanding_files | xargs git checkout --

Repeating this process several months apart should get us coverage of
most of the rest of libcore.
2019-11-26 23:02:11 -08:00
Mikhail Babenko
1d0c015f9b added enclosing_scope attr to Try trait and fixed ui tests accordingly 2019-11-25 18:10:14 +03:00
Esteban Küber
f57413b717 Suggest borrowing when it would satisfy an unmet trait bound
When there are multiple implementors for the same trait that is present
in an unmet binding, modify the E0277 error to refer to the parent
obligation and verify whether borrowing the argument being passed in
would satisfy the unmet bound. If it would, suggest it.
2019-11-16 13:23:19 -08:00
Mark Rousskov
997feacddd Snap cfgs 2019-11-12 16:36:57 -05:00
Tyler Mandry
d75338e630
Rollup merge of #65902 - gilescope:issue62570, r=estebank
Make ItemContext available for better diagnositcs

Fix #62570
2019-11-01 11:20:14 -07:00
Giles Cope
d7869ec022 Make ItemContext available for better diagnositcs. 2019-10-30 06:12:49 +00:00
Mikko Rantanen
040d88dda1
Remove leading :: from paths in doc examples 2019-10-20 21:13:47 +03:00
Christian
55f8dde6c8 Added an extra line to make the formatting conform to the rest of the document. 2019-08-24 13:38:09 +02:00
Christian
a577316b0a Removed the confusing FnOnce example. closes #47091 2019-08-24 13:36:57 +02:00
Esteban Küber
3ab60264b5 Add note suggesting to borrow a String argument to find 2019-07-25 10:11:03 -07:00
Vadim Petrochenkov
dcd30a4b17 hygiene: Fix wording of desugaring descriptions
Use variant names rather than descriptions for identifying desugarings in `#[rustc_on_unimplemented]`.
Both are highly unstable, but variant name is at least a single identifier.
2019-07-11 00:12:57 +03:00
Jeremy Stucki
47ea8ae022
Remove needless lifetimes 2019-07-01 12:15:27 +02:00
Jonas Schievink
ba30dcad2f Remove the default type of Rem::Output 2019-06-15 22:22:06 +02:00
Mazdak Farrokhzad
654854fdb5
Rollup merge of #61376 - czipperz:bound-cloned, r=sfackler
Add Bound::cloned()

Suggested by #61356
2019-06-06 22:39:09 +02:00
Chris Gregory
c1bc8f11cb
Remove dereference
Co-Authored-By: Steven Fackler <sfackler@gmail.com>
2019-06-05 21:23:45 -07:00