Commit graph

7525 commits

Author SHA1 Message Date
kennytm
c599463cd1
Rollup merge of #48365 - Centril:docs/document-refcell-panics, r=frewsxcv
RefCell: document panics in Clone, PartialEq, PartialOrd, Ord.

This fixes #47400 by adding:

```rust
    /// # Panics
    ///
    /// Panics if the value is currently mutably borrowed.
```
to said impls. They may panic since they call `.borrow()`.
2018-02-28 19:15:29 +08:00
kennytm
85d7d0bf56
Rollup merge of #48321 - milesand:no_panic_pow, r=alexcrichton
Add non-panicking variants of pow for integer types

Currently, calling pow may panic in case of overflow, and the function does not have non-panicking counterparts. Thus, it would be beneficial to add those in.

Closes #48291.
Relevant tracking issue: #48320
2018-02-28 19:15:28 +08:00
bors
ddab91a5de Auto merge of #48056 - ExpHP:macro-commas, r=dtolnay
Comprehensively support trailing commas in std/core macros

I carefully organized the changes into four commits:

* Test cases
* Fixes for `macro_rules!` macros
* Fixes for builtin macros
* Docs for builtins

**I can easily scale this back to just the first two commits for now if such is desired.**

### Breaking (?) changes

* This fixes #48042, which is a breaking change that I hope people can agree is just a bugfix for an extremely dark corner case.

* To fix five of the builtins, this changes `syntax::ext::base::get_single_str_from_tts` to accept a trailing comma, and revises the documentation so that this aspect is not surprising. **I made this change under the (hopefully correct) understanding that `libsyntax` is private rustc implementation detail.** After reviewing all call sites (which were, you guessed it, *precisely those five macros*), I believe the revised semantics are closer to the intended spirit of the function.

### Changes which may require concensus

Up until now, it could be argued that some or all the following macros did not conceptually take a comma-separated list, because they only took one argument:

  * **`cfg(unix,)`** (most notable since cfg! is unique in taking a meta tag)
  * **`include{,_bytes,_str}("file.rs",)`**  (in item form this might be written as "`include!{"file.rs",}`" which is even slightly more odd)
  * **`compile_error("message",);`**
  * **`option_env!("PATH",)`**
  * **`try!(Ok(()),)`**

So I think these particular changes may require some sort of consensus.  **All of the fixes for builtins are included this list, so if we want to defer these decisions to later then I can scale this PR back to just the first two commits.**

### Other notes/general requests for comment

* Do we have a big checklist somewhere of "things to do when adding macros?" My hope is for `run-pass/macro-comma-support.rs` to remain comprehensive.
* Originally I wanted the tests to also comprehensively forbid double trailing commas.  However, this didn't work out too well: [see this gist and the giant FIXME in it](https://gist.github.com/ExpHP/6fc40e82f3d73267c4e590a9a94966f1#file-compile-fail_macro-comma-support-rs-L33-L50)
* I did not touch `select!`. It appears to me to be a complete mess, and its trailing comma mishaps are only the tip of the iceberg.
* There are [some compile-fail test cases](5fa97c35da/src/test/compile-fail/macro-comma-behavior.rs (L49-L52)) that didn't seem to work (rustc emits errors, but compile-fail doesn't acknowledge them), so they are disabled. Any clues? (Possibly related: These happen to be precisely the set of errors which are tagged by rustc as "this error originates in a macro outside of the current crate".)

---

Fixes #48042
Closes #46241
2018-02-28 07:10:05 +00:00
Alexander Ronald Altman
db6a5ee1aa Minor grammatical/style fix in docs. 2018-02-28 00:04:05 -06:00
Maxim Nazarenko
78789add6c and some more tidy checks 2018-02-27 23:52:47 +02:00
Maxim Nazarenko
ff6754c68e fix tidy checks 2018-02-27 23:34:38 +02:00
Maxim Nazarenko
50f5ea9192 Simplify
Merge three rules into one following @cramertj
2018-02-27 23:23:19 +02:00
Maxim Nazarenko
d9b8724a80 style fix 2018-02-27 23:21:04 +02:00
Martin Hoffmann
44be054a2a Further refinement of Borrow documentation. 2018-02-27 16:24:52 +01:00
Mazdak Farrokhzad
f8ebb3f09f fix wording on panics in binary operators on RefCells" 2018-02-27 15:48:50 +01:00
Maxim Nazarenko
273166e765 remove italic
remove italic as per @GuillaumeGomez suggestion
2018-02-27 16:41:28 +02:00
Björn Steinbrink
f05d9679d7 Backport LLVM fixes for a JumpThreading / assume intrinsic bug 2018-02-27 14:20:13 +01:00
Phlosioneer
b7b3498ce8 Fix doctest failure
Tried to be fancy with print statements.
2018-02-26 19:48:15 -05:00
Christian Poveda
9091584def some grammar corrections 2018-02-26 11:14:40 -05:00
Phlosioneer
e8904f935a Change the example string to something arbitrary
The choice of string is arbitrary, so all references to a number
in the string were removed. The string is now the standard "Hello
world!".
2018-02-25 15:46:17 -05:00
Christian Poveda
397ce8a1ae fixed links 2018-02-25 09:39:21 -05:00
kennytm
0652af21b5
Rollup merge of #48235 - varkor:parse-float-lonely-exponent, r=alexcrichton
Make ".e0" not parse as 0.0

This forces floats to have either a digit before the separating point, or after. Thus `".e0"` is invalid like `"."`, when using `parse()`. Fixes #40654. As mentioned in the issue, this is technically a breaking change... but clearly incorrect behaviour at present.
2018-02-25 21:36:46 +08:00
kennytm
268b6d6189
Rollup merge of #48529 - remexre:docs/fix/unicode-0021, r=kennytm
Fixes docs for ASCII functions to no longer claim U+0021 is '@'.

Looks like a typo that got copy-pasted without anyone checking on it.
2018-02-25 21:30:53 +08:00
kennytm
562626ac3f
Rollup merge of #48115 - Centril:feature/iterator_flatten, r=alexcrichton
Add Iterator::flatten

This adds the trait method `.flatten()` on `Iterator` which flattens one level of nesting from an iterator or (into)iterators. The method `.flat_fmap(f)` is then redefined as `.map(f).flatten()`. The implementation of `Flatten` is essentially that of what it was for `FlatMap` but removing the call to `f` at various places.

Hopefully the type alias approach should be OK as was indicated / alluded to by @bluss and @eddyb in https://github.com/rust-lang/rfcs/pull/2306#issuecomment-361391370.

cc @scottmcm
2018-02-25 15:54:41 +08:00
Nathan Ringo
64236092e5
Fixes docs for ASCII functions to no longer claim U+0021 is '@'. 2018-02-24 23:48:51 -06:00
Christian Poveda
7ded7f764c corrected grammar errors 2018-02-24 18:06:01 -05:00
Christian Poveda
ce3ad263ff added link to sync containers 2018-02-24 18:04:08 -05:00
Phlosioneer
bbd64b2563 Slight modification to the as_ref example of std::option::Option
A user in a reddit thread was confused by the name of the variable
"num_as_int"; they thought the example was trying to convert the
string "10" as if it were binary 2 by calling str::len(). In reality,
the example is simply demonstrating how to take an immutable reference
to the value of an Option. The confusion comes from the coincidence
that the length of the string "10" is also its binary representation,
and the implication from the variable names that a conversion was
occuring ("num_as_str" to "num_as_int").

This PR changes the example number to 12 instead of 10, and changes
the variable name from "num_as_int" to "num_length" to better
communicate what the example is doing.

The reddit thread:
https://www.reddit.com/r/rust/comments/7zpvev/notyetawesome_rust_what_use_cases_would_you_like/dur39xw/
2018-02-24 11:37:38 -05:00
Christian Poveda
43de01f97e cleaned trailing whitespaces 2018-02-23 15:12:28 -05:00
Manish Goregaokar
5fd8d18097
Rollup merge of #48157 - scottmcm:try-for-each, r=dtolnay
Add Iterator::try_for_each

The fallible version of `for_each` aka the stateless version of `try_fold`.  Inspired by @cuviper's comment in https://github.com/rust-lang/rust/pull/45379#issuecomment-338370020 as a more direct and obvious solution than `.map(f).collect::<Result<(), _>>()`.

Like `for_each`, no need for an `r` version thanks to overrides in `Rev`.

`iterator_try_fold` tracking issue: https://github.com/rust-lang/rust/issues/45594
2018-02-23 10:24:49 -08:00
Christian Poveda
58d1f83952 remove redundant info 2018-02-23 13:00:26 -05:00
Christian Poveda
f9e049afc5 add info about sync 2018-02-23 12:57:18 -05:00
Corey Farwell
b1a6c8bdd3 Stabilize [T]::rotate_{left,right}
https://github.com/rust-lang/rust/issues/41891
2018-02-22 20:12:38 -05:00
bors
5de90898de Auto merge of #48343 - Mark-Simulacrum:release-step, r=kennytm
Update nightly to 1.26.0 and bootstrap from beta.
2018-02-22 23:25:39 +00:00
Christian Poveda
238bb38a94 First version 2018-02-22 13:53:59 -05: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
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
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
Niko Matsakis
a47fd3df89 make #[unwind] attribute specify expectations more clearly
You can now choose between the following:

- `#[unwind(allowed)]`
- `#[unwind(aborts)]`

Per rust-lang/rust#48251, the default is `#[unwind(allowed)]`, though
I think we should change this eventually.
2018-02-20 19:12:52 -05:00
Mark Simulacrum
33f5ceee1f stage0 cfg cleanup 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
Mazdak Farrokhzad
bde855518b RefCell: document panics in Clone, PartialEq, PartialOrd, Ord. Fixes #47400 2018-02-20 05:52:26 +01:00
Gil Cottle
3f931515df
Fix count usize link typo in docs 2018-02-19 20:51:48 +00:00
varkor
c0e87f13a4 Make ".e0" not parse as 0.0
This forces floats to have either a digit before the separating point, or after. Thus ".e0" is invalid like ".", when using `parse()`.
2018-02-19 14:53:30 +00:00
Jewoo Lee
b31ff95ae6 Add non-panicking variants of pow to all integer types
Currently, calling pow may panic in case of overflow, and the function
does not have non-panicking counterparts. Thus, it would be beneficial
to add those in.
2018-02-19 10:34:43 +09:00
Guillaume Gomez
04256e7b9d
Rollup merge of #48282 - Centril:spelling-fix/iter-repeat-with, r=kennytm
Fix spelling in core::iter::repeat_with: s/not/note

Fixes spelling error in https://github.com/rust-lang/rust/pull/48156#discussion_r168718452.
Tracking issue: https://github.com/rust-lang/rust/issues/48169
2018-02-18 13:21:02 +01:00
bors
1ad094d81c Auto merge of #47687 - SimonSapin:panic-impl, r=sfackler
RFC 2070 part 1: PanicInfo and Location API changes

This implements part of https://rust-lang.github.io/rfcs/2070-panic-implementation.html
Tracking issue: https://github.com/rust-lang/rust/issues/44489

* Move `std::panic::PanicInfo` and `std::panic::Location` to a new `core::panic` module. The two types and the `std` module were already `#[stable]` and stay that way, the new `core` module is `#[unstable]`.
* Add a new `PanicInfo::message(&self) -> Option<&fmt::Arguments>` method, which is `#[unstable]`.
* Implement `Display` for `PanicInfo` and `Location`
2018-02-18 06:02:35 +00:00
Guillaume Gomez
7dd8c090e4
Rollup merge of #48260 - dns2utf8:add_link_to_yield, r=kennytm
[doc] Add link to yield_now

A convenient link.
2018-02-17 14:45:26 +01:00
Guillaume Gomez
01c7f3a345
Rollup merge of #48243 - rust-lang:steveklabnik-patch-1, r=kennytm
spelling fix in comment

r? @Manishearth
2018-02-17 14:45:24 +01:00
Guillaume Gomez
6db06f593b
Rollup merge of #48152 - antoyo:primitive-docs-relevant, r=QuietMisdreavus
Primitive docs relevant

This fixes the documentation to show the right types in the examples for many integer methods.

I need to check if the result is correct before we merge.
2018-02-17 14:45:21 +01:00