Commit Graph

62725 Commits

Author SHA1 Message Date
Oliver Schneider
eb447f4ef4
Fix various useless derefs and slicings 2017-03-27 08:58:00 +02:00
Oliver Schneider
79feb9476d
allow InternedString to be compared to str directly 2017-03-27 08:57:23 +02:00
bors
ccce2c6eb9 Auto merge of #40764 - arielb1:range-nodes, r=eddyb
keep the AST node-id when lowering ExprKind::Range

When the Range expression is the root of a constant, its node-id is
used for the def-id of the body, so it has to be preserved in the AST ->
HIR lowering.

Fixes #40749.

r? @eddyb
beta-nominating because regression
2017-03-27 05:28:32 +00:00
Jeffrey Seyfried
737511ee11 Ensure that macro resolutions in trait positions get finalized. 2017-03-27 05:22:18 +00:00
Ariel Ben-Yehuda
39011f8590 fix handling of self 2017-03-27 01:37:46 +03:00
Ariel Ben-Yehuda
50728e5245 borrowck: consolidate mut suggestions
This converts all of borrowck's `mut` suggestions to a new
`mc::ImmutabilityBlame` API instead of the current mix of various hacks.

Fixes #35937.
Fixes #40823.
2017-03-27 01:37:42 +03:00
Alan Stoate
1579fbd8ca Fixed spelling mistakes 2017-03-27 07:46:43 +10:30
Vadzim Dambrouski
fda8e1571f libcore: sort_unstable: improve randomization in break_patterns.
Select 3 random points instead of just 1.
Also the code now compiles on 16bit architectures.
2017-03-26 20:37:04 +03:00
Jörg Thalheim
2cf686f2cd
Implement AsRawFd/IntoRawFd for RawFd
This is useful to build os abstraction like the nix crate does.
It allows to define functions, which accepts generic arguments
of data structures convertible to RawFd, including RawFd itself.
For example:

  fn write<FD: AsRawFd>(fd: FD, buf: &[u8]) -> Result<usize>

instead of:

  fn write(fd: RawFd, buf: &[u8]) -> Result<usize>
  write(foo.as_raw_fd(), buf);
2017-03-26 19:14:03 +02:00
lukaramu
c2601fd358 fix trailing whitespace 2017-03-26 18:06:22 +02:00
lukaramu
577677d55d Expanded std::net module docs
Part of #29363
2017-03-26 17:27:40 +02:00
lukaramu
597bcec379 Expanded top-level docs for std::net{TcpListener,TcpStream,UdpSocket}
Part of #29363
2017-03-26 17:06:39 +02:00
lukaramu
ad816f8174 Added links to std::net::Shutdown docs and made them more consistent
Part of #29363
2017-03-26 16:12:27 +02:00
bors
7846dbe0c8 Auto merge of #40826 - frewsxcv:rollup, r=frewsxcv
Rollup of 7 pull requests

- Successful merges: #40642, #40734, #40740, #40771, #40807, #40820, #40821
- Failed merges:
2017-03-26 14:04:25 +00:00
lukaramu
1a9c8baed5 Added examples to std::net::{SocketAddr, SocketAddrV4, SocketAddrV6} docs 2017-03-26 15:43:25 +02:00
lukaramu
6f0c742b00 Expanded and added links to std::net::{SocketAddr,SocketAddrV4,SocketAddrV6} docs
Part of #29363
Changed summary sentences of SocketAddr and IpAddr for consistency
Linked to SocketAddrV4 and SocketAddrV6 from SocketAddr, moving explaination
there
Expanded top-level docs for SocketAddrV4 and SocketAddrV6, linking to some
relevant IETF RFCs, and linking back to SocketAddr
Changed some of the method summaries to third person as per RFC 1574; added
links to IETF RFCs where appropriate
2017-03-26 14:35:12 +02:00
lukaramu
be713fa4bf Removed link in std::net::ToSocketAddr's summary sentence
Relative links in trait methods don't resolve in e.g.
std/primitive.tuple.html
:(
2017-03-26 14:35:12 +02:00
lukaramu
347b70901c Expanded and added links to std::net::{IpAddr,Ipv4Addr,Ipv6Addr} docs
Part of #29363
Expanded top-level documentation & linked to relevant IETF RFCs.
Added a bunch of links (to true/false/Ipv4Addr/etc.) throughout the docs.
2017-03-26 14:35:12 +02:00
lukaramu
0d5baba70d Added links to std::net::AddrParseError's documentation
Additionally changed the summary sentence to be more consistent with most
of the other FromStr implementations' error types.
2017-03-26 14:35:12 +02:00
lukaramu
df5830a4ec Added links throughout std::net::ToSocketAddrs' documentation
Part of #29363

In the section about the default implementations of ToSocketAddrs,
I moved the bulletpoint of SocketAddrV4 & SocketAddrV6 to the one
stating that SocketAddr is constructed trivially, as this is what's
actually the case
2017-03-26 14:35:12 +02:00
lukaramu
0df7398558 std::net docs: changed occurences of "RFC" to say "IETF RFC"
part of #29363
2017-03-26 14:35:12 +02:00
lukaramu
76d08eda7d Update std::net:Incoming's docs to use standard iterator boilerplate
Part of #29363
2017-03-26 14:35:12 +02:00
lukaramu
169facfc28 added missing links in std::net TCP docs
part of #29363
2017-03-26 14:35:12 +02:00
aStoate
6e6dec0cab change string references in asciiext r? @steveklabnik 2017-03-26 22:26:03 +10:30
bors
bcfd5c48b7 Auto merge of #40501 - jseyfried:shadow_builtin_macros, r=nrc
Allow `use` macro imports to shadow global macros

Terminology:
 - global scope: builtin macros, macros from the prelude, `#[macro_use]`, or `#![plugin(..)]`.
 - legacy scope: crate-local `macro_rules!`.
 - modern scope: `use` macro imports, `macro` (once implemented).

Today, the legacy scope can shadow the global scope (modulo RFC 1560 expanded shadowing restrictions). However, the modern scope cannot shadow or be shadowed by either the global or legacy scopes, leading to ambiguity errors.

This PR allows the modern scope to shadow the global scope (subject to some restrictions).
More specifically, a name in the global scope is as shadowable as a glob import in the module `self`. In other words, we imagine a special, implicit glob import in each module item:
```rust
mod foo {
    #[lexical_only] // Not accessible via `foo::<name>`, like pre-RFC 1560 `use` imports.
    #[shadowable_by_legacy_scope] // for back-compat
    use <global_macros>::*;
}
```

r? @nrc
2017-03-26 11:45:13 +00:00
Ariel Ben-Yehuda
7e0f7a50ab store a copy of the Issue32230 info within TypeError
The data can't be looked up from the region variable directly, because
the region variable might have been destroyed at the end of a snapshot.

Fixes #40000.
Fixes #40743.
2017-03-26 14:38:23 +03:00
bors
7dd4e2db78 Auto merge of #40347 - alexcrichton:rm-liblog, r=brson
Remove internal liblog

This commit deletes the internal liblog in favor of the implementation that
lives on crates.io. Similarly it's also setting a convention for adding crates
to the compiler. The main restriction right now is that we want compiler
implementation details to be unreachable from normal Rust code (e.g. requires a
feature), and by default everything in the sysroot is reachable via `extern
crate`.

The proposal here is to require that crates pulled in have these lines in their
`src/lib.rs`:

    #![cfg_attr(rustbuild, feature(staged_api, rustc_private))]
    #![cfg_attr(rustbuild, unstable(feature = "rustc_private", issue = "27812"))]

This'll mean that by default they're not using these attributes but when
compiled as part of the compiler they do a few things:

* Mark themselves as entirely unstable via the `staged_api` feature and the
  `#![unstable]` attribute.
* Allow usage of other unstable crates via `feature(rustc_private)` which is
  required if the crate relies on any other crates to compile (other than std).
2017-03-26 04:26:22 +00:00
bors
0f5ddb953a Auto merge of #40809 - alexcrichton:update-sccache-again, r=alexcrichton
travis: Update sccache again

Looks like the last version was built with mio 0.6.5 which now has known bugs
against it. This build includes mio 0.6.6
2017-03-26 01:33:39 +00:00
Colin Wallace
188299e04a char::to_uppercase doc typo: use the 'an' article. 2017-03-25 15:58:35 -07:00
Colin Wallace
53b70953c3 char::to_uppercase doc typo: s/lowercase/uppercase/ 2017-03-25 15:46:13 -07:00
bors
0e4b4eb6ab Auto merge of #40821 - arielb1:fix-emscripten, r=TimNN
try to fix the build on emscripten

The "upstream" emscripten tar.gz now extracts to `emsdk-portable` instead of `emsdk_portable`, breaking our CI. It might be better to vendor a specific version of emscripten instead of using the latest, but I could not find a good way of doing that.

r? @alexcrichton
2017-03-25 22:33:29 +00:00
Marco A L Barbosa
24be89980e Avoid using libc::sigemptyset on Android 2017-03-25 17:15:26 -03:00
Esteban Küber
6341a8b0e5 Clarify suggetion for field used as method
Instead of

```
error: no method named `src_addr` found for type `&wire::ipv4::Repr` in the current scope
   --> src/wire/ipv4.rs:409:34
    |
409 |         packet.set_src_addr(self.src_addr());
    |                                  ^^^^^^^^
    |
note: did you mean to write `self.src_addr`?
   --> src/wire/ipv4.rs:409:34
    |
409 |         packet.set_src_addr(self.src_addr());
    |                                  ^^^^^^^^
```

present

```
error: no method named `src_addr` found for type `&wire::ipv4::Repr` in the current scope
   --> src/wire/ipv4.rs:409:34
    |
409 |         packet.set_src_addr(self.src_addr());
    |                                  ^^^^^^^^ `src_addr` is a field, not a method
    |
    = help: did you mean to write `self.src_addr` instead of `self.src_addr(...)`?
```
2017-03-25 12:57:54 -07:00
projektir
2e14bfe0d7 rustdoc to accept # at the start of a markdown file #40560 2017-03-25 15:42:44 -04:00
Donnie Bishop
fb5e63fc47 Change try! to ? 2017-03-25 14:41:37 -04:00
Corey Farwell
dc52625d61 Rollup merge of #40821 - arielb1:fix-emscripten, r=TimNN
try to fix the build on emscripten

The "upstream" emscripten tar.gz now extracts to `emsdk-portable` instead of `emsdk_portable`, breaking our CI. It might be better to vendor a specific version of emscripten instead of using the latest, but I could not find a good way of doing that.

r? @alexcrichton
2017-03-25 09:30:34 -07:00
Corey Farwell
fbcb370fe8 Rollup merge of #40820 - irfanhudda:fix-typo-algorithm, r=BurntSushi
Fix typo in dec2flt/algorithm.rs
2017-03-25 09:30:33 -07:00
Corey Farwell
2bdbcb0618 Rollup merge of #40807 - stjepang:optimize-insertion-sort, r=alexcrichton
Optimize insertion sort

This change slightly changes the main iteration loop so that LLVM can optimize it more efficiently.

Benchmark:

```
name                                   before ns/iter   after ns/iter    diff ns/iter   diff %
slice::sort_unstable_small_ascending   39 (2051 MB/s)   38 (2105 MB/s)             -1   -2.56%
slice::sort_unstable_small_big_random  579 (2210 MB/s)  575 (2226 MB/s)            -4   -0.69%
slice::sort_unstable_small_descending  80 (1000 MB/s)   70 (1142 MB/s)            -10  -12.50%
slice::sort_unstable_small_random      396 (202 MB/s)   386                       -10   -2.53%
```

The benchmark is not a fluke. I can see that performance on `small_descending` is consistently better after this change. I'm not 100% sure why this makes things faster, but my guess would be that `v.len()+1` to the compiler looks like it could in theory overflow.
2017-03-25 09:30:32 -07:00
Corey Farwell
22f914a09a Rollup merge of #40771 - nikomatsakis:issue-40746-privacy-access-levels, r=eddyb
"on-demandify" privacy and access levels

r? @eddyb
cc @cramertj https://github.com/rust-lang/rust/issues/40746
2017-03-25 09:30:31 -07:00
Corey Farwell
03d54a4f06 Rollup merge of #40740 - shepmaster:inclusive-range-unstable-doc, r=steveklabnik
Basic documentation for inclusive range syntax

Done so that we can remove mention of this from the stable documentation ⚠️.
2017-03-25 09:30:30 -07:00
Corey Farwell
2673b03d65 Rollup merge of #40734 - adamransom:fix/40661, r=jseyfried
Add warning for use of lifetime parameter with 'static bound

Previously a `'static` lifetime bound would result in an `undeclared lifetime` error when compiling, even though it could be considered valid.

However, it is unnecessary to use it as a lifetime bound so we present the user with a warning instead and suggest using the `'static` lifetime directly, in place of the lifetime parameter. We can change this to an error (or warning with lint) if that's decided to be more appropriate.

Example output:
```
warning: unnecessary lifetime parameter `'a`
 --> ../static-lifetime-bound.rs:3:10
  |
3 | fn f<'a: 'static>(val: &'a i32) {
  |      ^^^^^^^^^^^
  |
  = help: you can use the `'static` lifetime directly, in place `'a`
```

Fixes #40661

r? @jseyfried
2017-03-25 09:30:29 -07:00
Corey Farwell
f43c336e74 Rollup merge of #40642 - frewsxcv:io-bufread-doc-examples, r=GuillaumeGomez
Rewrite `io::BufRead` doc examples to better demonstrate behaviors.

Prior to this commit, most of the `BufRead` examples used `StdinLock` to
demonstrate how certain `BufRead` methods worked. Using `StdinLock` is
not ideal since:

* Relying on run-time data means we can't show concrete examples of how
  these methods work up-front. The user is required to run them in order
  to see how they behave.
* If the user tries to run an example in the playpen, it won't work
  because the playpen doesn't support user input to stdin.
2017-03-25 09:30:28 -07:00
Donnie Bishop
64cd0bebab Remove trailing whitespace 2017-03-25 12:22:23 -04:00
Tim Neumann
935d84a272 fix permissions of emsdk_portable 2017-03-25 17:22:07 +01:00
Donnie Bishop
33a6a07d58 FromStr implementation example 2017-03-25 11:56:52 -04:00
Ariel Ben-Yehuda
ca85c400da travis: try to fix the build on emscripten
The emsdk-portable .tar.gz now extracts to emsdk-portable instead of
emsdk_portable. Handle that.
2017-03-25 17:36:54 +03:00
Marco A L Barbosa
b45c631382 Fix libc::bind call on aarch64-linux-android 2017-03-25 11:03:06 -03:00
Marco A L Barbosa
a7add43389 Fix c_char (u8 -> i8) definition for i686-linux-android 2017-03-25 11:03:06 -03:00
Marco A L Barbosa
6344d08727 Update libc to 0.2.21 2017-03-25 11:03:06 -03:00
Irfan Hudda
5d9d652e0f Fix typo in dec2flt/algorithm.rs 2017-03-25 16:21:08 +05:30