Commit Graph

36292 Commits

Author SHA1 Message Date
Manish Goregaokar
3ebe24920b Rollup merge of #23375 - kballard:remove-old_io-recommendation-from-io, r=huonw
Now that `old_io` is deprecated and `std::io` is stable, we should stop
recommending the use of `old_io` in the module documentation.
2015-03-15 15:40:18 +05:30
bors
54660fc392 Auto merge of #23316 - alexcrichton:less-question-sized, r=aturon
It is a frequent pattern among I/O functions to take `P: AsPath + ?Sized` or
`AsOsStr` instead of `AsPath`. Most of these functions do not need to take
ownership of their argument, but for libraries in general it's much more
ergonomic to not deal with `?Sized` at all and simply require an argument `P`
instead of `&P`.

This change is aimed at removing unsightly `?Sized` bounds while retaining the
same level of usability as before. All affected functions now take ownership of
their arguments instead of taking them by reference, but due to the forwarding
implementations of `AsOsStr` and `AsPath` all code should continue to work as it
did before.

This is strictly speaking a breaking change due to the signatures of these
functions changing, but normal idiomatic usage of these APIs should not break in
practice.

[breaking-change]
2015-03-15 09:18:42 +00:00
Tamir Duberstein
04c947c13a Implement winsize() for {ios,dragonfly}
`sys/ttycom.h` in both:
`#define TIOCGWINSZ  _IOR('t', 104, struct winsize)  /* get window size */`
2015-03-15 01:29:13 -07:00
Tamir Duberstein
0b01a9bb4b Fallout of c933d44f7b 2015-03-15 01:29:12 -07:00
Dabo Ross
fe9bb26e78 Fix an String -> a String in env.rs documentation
Super minor change!

The `an String` was introduced in a828e79480 (diff-b596503c7c33ce457b6d047e351ac12bR423), which changed `an OsString` to `an String`.
2015-03-15 00:00:26 -07:00
Alex Crichton
60a4a2db88 std: Remove ?Sized bounds from many I/O functions
It is a frequent pattern among I/O functions to take `P: AsPath + ?Sized` or
`AsOsStr` instead of `AsPath`. Most of these functions do not need to take
ownership of their argument, but for libraries in general it's much more
ergonomic to not deal with `?Sized` at all and simply require an argument `P`
instead of `&P`.

This change is aimed at removing unsightly `?Sized` bounds while retaining the
same level of usability as before. All affected functions now take ownership of
their arguments instead of taking them by reference, but due to the forwarding
implementations of `AsOsStr` and `AsPath` all code should continue to work as it
did before.

This is strictly speaking a breaking change due to the signatures of these
functions changing, but normal idiomatic usage of these APIs should not break in
practice.

[breaking-change]
2015-03-14 23:23:54 -07:00
FuGangqiang
3be8380576 fix typos 2015-03-15 13:47:34 +08:00
Manish Goregaokar
d66d0b3ac2 Rollup merge of #23368 - EduardoBautista:fix-closures-chapter, r=steveklabnik
"body": null,
2015-03-15 10:23:45 +05:30
Manish Goregaokar
09e5a7a04e Rollup merge of #23367 - EduardoBautista:fix-indentation-in-book, r=steveklabnik
It was using tabs.
2015-03-15 10:23:45 +05:30
Manish Goregaokar
34ce376140 Rollup merge of #23365 - dotdash:array_loop_panic, r=eddyb
[expr; 0] currently exhibits inconsistent behaviour and [expr; n] with n > 1 triggers an LLVM assertion in case that \"expr\" diverges.
2015-03-15 10:23:44 +05:30
Manish Goregaokar
911f7fec81 Rollup merge of #23363 - meqif:master, r=alexcrichton
There was a minor typo in the book's concurrency section (\"recieve\" instead of \"receive\").
2015-03-15 10:23:43 +05:30
Manish Goregaokar
4be0eaeb48 Rollup merge of #23362 - dotdash:llvm_req, r=alexcrichton
LLVM older that 3.6 has a bug that cause assertions when compiling certain
constructs. For 3.5 there's still a chance that the bug might get fixed
in 3.5.2, so let's keep allowing to compile with it for it for now.
2015-03-15 10:23:42 +05:30
Manish Goregaokar
6af2721466 Rollup merge of #23358 - rprichard:reject-empty-L, r=alexcrichton
This change closes #23303 by rejecting an empty search path.
2015-03-15 10:23:42 +05:30
Manish Goregaokar
7eb9c3765f Rollup merge of #23356 - bombless:camelcase, r=alexcrichton
non_camel_case_types lint suggests `ONETWOTHREE` for non-camel type `ONE_TWO_THREE`, which doesn't look good.
This patch fixes it.
2015-03-15 10:23:41 +05:30
Manish Goregaokar
01f10dead3 Rollup merge of #23351 - nagisa:rustdoc-lines-2, r=alexcrichton
Previously it would fail on a trivial case like

    /// Summary line
    /// <trailing space>
    /// Regular content

Compliant markdown preprocessor would render that as two separate paragraphs, but our summary line
extractor interprets both lines as the same paragraph and includes both into the short summary resulting in
![screenshot from 2015-03-13 22 47 08](https://cloud.githubusercontent.com/assets/679122/6648596/7ef792b2-c9e4-11e4-9c19-704c288ec4de.png)
2015-03-15 10:23:40 +05:30
bors
66853af9af Auto merge of #23351 - nagisa:rustdoc-lines-2, r=alexcrichton
Previously it would fail on a trivial case like

    /// Summary line
    /// <trailing space>
    /// Regular content

Compliant markdown preprocessor would render that as two separate paragraphs, but our summary line
extractor interprets both lines as the same paragraph and includes both into the short summary resulting in
![screenshot from 2015-03-13 22 47 08](https://cloud.githubusercontent.com/assets/679122/6648596/7ef792b2-c9e4-11e4-9c19-704c288ec4de.png)
2015-03-15 03:11:14 +00:00
Kevin Ballard
3453b5b4a8 Remove incorrect references to _raw stdio functions
std::io does not currently expose the stdin_raw, stdout_raw, or
stderr_raw functions. According to the current plans for stdio (see RFC
#517), raw access will likely be provided using the platform-specific
std::os::{unix,windows} modules. At the moment we don't expose any way
to do this. As such, delete all mention of the _raw functions from the
stdin/stdout/stderr function documentation.

While we're at it, remove a few `pub`s from items that aren't exposed.
This is done just to lessen the confusion experienced by anyone who
looks at the source in an attempt to find the _raw functions.
2015-03-14 18:08:09 -07:00
bors
8c85a9d20f Auto merge of #23313 - barosl:match-specialize-ice, r=jakub-
The arity of `ref x` is always 1, so it needs to be dereferenced before being compared with some other type whose arity is not 1.

Fixes #23009.
2015-03-15 00:39:54 +00:00
Kevin Ballard
3dd455d4e1 Stop recommending old_io in the module doc for std::io
Now that `old_io` is deprecated and `std::io` is stable, we should stop
recommending the use of `old_io` in the module documentation.
2015-03-14 17:36:36 -07:00
Simonas Kazlauskas
6e92f0580b Use new io in print and println macroses 2015-03-15 00:26:17 +02:00
bors
30e1f9a1c2 Auto merge of #23289 - mihneadb:rustdoc-search-by-type, r=alexcrichton
This adds search by type (for functions/methods) support to Rustdoc. Target issue is at https://github.com/rust-lang/rfcs/issues/658.

I've described my approach here: https://github.com/rust-lang/rfcs/issues/658#issuecomment-76484200. I'll copy the text in here as well:

---

Hi, it took me longer than I wished, but I have implemented this in a not-too-complex way that I think can be extended to support more complex features (like the ones mentioned [here](https://github.com/rust-lang/rust/issues/12866#issuecomment-66945317)).

The idea is to generate a JSON representation of the types of methods/functions in the existing index, and then make the JS understand when it should look by type (and not by name).

I tried to come up with a JSON representation that can be extended to support generics, bounds, ref/mut annotations and so on. Here are a few samples:

Function:

```rust
fn to_uppercase(c: char) -> char
```

```json
{
    "inputs": [
        {"name": "char"}
    ],
    "output": {
        "name": "char",
    }
}
```

Method (implemented or defined in trait):

```rust
// in struct Vec
// self is considered an argument as well
fn capacity(&self) -> usize
```

```json
{
    "inputs": [
        {"name": "vec"}
    ],
    "output": {
        "name": "usize"
    }
}
```

This simple format can be extended by adding more fields, like `generic: bool`, a `bounds` mapping and so on.

I have a working implementation in https://github.com/rust-lang/rust/compare/master...mihneadb:rustdoc-search-by-type. You can check out a live demo [here](http://data.mihneadb.net/doc/std/index.html?search=charext%20-%3E%20char).

![screenshot from 2015-02-28 00 54 00](https://cloud.githubusercontent.com/assets/643127/6422722/7e5374ee-bee4-11e4-99a6-9aac3c9d5068.png)


The feature list is not that long:
- search by types (you *can* use generics as well, as long as you use the exact name - e.g. [`vec,t -> `](http://data.mihneadb.net/doc/std/index.html?search=vec%2C%20t%20-%3E))
- order of arguments does not matter
- `self` is took into account as well (e.g. search for `vec -> usize`)
- does not use "complex" annotations (e.g. you don't search for `&char -> char` but for `char -> char`)

My goal is to get a working, minimal "base" merged so that others can build upon it. How should I proceed? Do I open a PR (badly in need of code review since this is my first non "hello world"-ish rust code)?

---
2015-03-14 22:07:25 +00:00
Eduardo Bautista
7130c75e46 Concurrency is now in the "Concurrency" chapter 2015-03-14 14:05:59 -06:00
Eduardo Bautista
c8e4f61ad3 Fix indentation in the "Method Syntax" chapter 2015-03-14 13:27:44 -06:00
Mihnea Dobrescu-Balaur
7b7b938be1 Add support to search functions by type to rustdoc. 2015-03-14 20:45:27 +02:00
bors
3400c9ed9f Auto merge of #23357 - Manishearth:oops, r=Manishearth
Oops, merged #21468 by accident.
2015-03-14 16:59:06 +00:00
Barosl Lee
edbc0e509f check_match: Dereference ref x before comparing it and some other type
The arity of `ref x` is always 1, so it needs to be dereferenced before
being compared with some other type whose arity is not 1.

Fixes #23009.
2015-03-14 23:32:57 +09:00
Björn Steinbrink
9eed8ea644 Fix broken codegen for [expr; n] where "expr" diverges 2015-03-14 14:23:43 +01:00
Björn Steinbrink
3a8f989dbb Always evaluate the expression in [expr; n]
In case that there is a destination for the array, like in
"let x = [expr; n]", we currently don't evaluate the given expression if
n is zero. That's inconsistent with all other cases, including "[expr;
0]" without a destination.

Fixes #23354
2015-03-14 14:19:29 +01:00
Ricardo Martins
cb02f366dc Fix a typo in the documentation. 2015-03-14 12:42:12 +00:00
Björn Steinbrink
bb18a3cfe7 Drop support for LLVM < 3.5 and fix compile errors with 3.5
LLVM older that 3.6 has a bug that cause assertions when compiling certain
constructs. For 3.5 there's still a chance that the bug might get fixed
in 3.5.2, so let's keep allowing to compile with it for it for now.
2015-03-14 13:14:04 +01:00
Simonas Kazlauskas
b09e5daa89 Split rustdoc summary lines in a smarter way
Previously it would fail on a trivial case like

    /// Summary line
    /// <trailing space>
    /// Regular content

Compliant markdown preprocessor would render that as two separate paragraphs, but our summary line
extractor would interpret both lines as the same paragraph and include both into the short summary.
2015-03-14 13:00:19 +02:00
bors
766a4e1acc Auto merge of #23333 - oli-obk:slice_from_raw_parts, r=alexcrichton
at least that's what the docs say: http://doc.rust-lang.org/std/slice/fn.from_raw_parts.html

A few situations got prettier. In some situations the mutability of the resulting and source pointers differed (and was cast away by transmute), the mutability matches now.
2015-03-14 08:55:31 +00:00
Ryan Prichard
85b084f4bd Reject -L "", -L native=, and other empty search paths.
It wasn't clear to me that early_error was correct here, but it seems to
work. This code is reachable from `rustdoc`, which is problematic, because
early_error panics. rustc handles the panics gracefully (without ICEing or
crashing), but rustdoc does not. It's not the first such rustdoc problem,
though:

    $ rustdoc hello.rs --extern std=bad-std
    error: extern location for std does not exist: bad-std
    hello.rs:1:1: 1:1 error: can't find crate for `std`
    hello.rs:1
           ^
    error: aborting due to 2 previous errors
    thread '<unnamed>' panicked at 'Box<Any>', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libsyntax/diagnostic.rs:151
    thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: "rustc failed"', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libcore/result.rs:744
    thread '<main>' panicked at 'child thread None panicked', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/thread.rs:661
2015-03-13 23:49:44 -07:00
Manish Goregaokar
c908d1c1f9 Revert "Extend dead code lint to detect more unused enum variants"
This reverts commit b042ffc4a7.

Conflicts:
	src/librustc/middle/pat_util.rs
2015-03-14 12:14:32 +05:30
Manish Goregaokar
82bcc55232 Revert "Remove dead code flagged by lint"
This reverts commit bce7a6f4a9.
2015-03-14 12:14:03 +05:30
York Xiang
60aa751620 Improve camelcase suggestion 2015-03-14 13:40:33 +08:00
bors
f7453f940b Auto merge of #22948 - rprichard:simple-panic-opt, r=alexcrichton
Reduce code size overhead from core::panicking::panic

core::panicking::panic currently creates an Arguments structure using
format_args!("{}", expr), which formats the expr str using the Display::fmt.
Display::fmt pulls in Formatter::pad, which then also pulls in string-related
code for truncation and padding.

If core::panicking::panic instead creates an Arguments structure with a string
piece, it is possible that the Display::fmt function for str can be optimized
out of the program.

In my testing with a 32-bit x86 bare metal program, the change tended to save
between ~100 bytes and ~5500 bytes, depending on what other panic* functions
the program invokes and whether the panic_fmt lang item uses the Arguments
value.
2015-03-14 01:04:37 +00:00
Alex Crichton
f798674b86 std: Stabilize the net module
This commit performs a stabilization pass over the std::net module,
incorporating the changes from RFC 923. Specifically, the following actions were
taken:

Stable functionality:

* `net` (the name)
* `Shutdown`
* `Shutdown::{Read, Write, Both}`
* `lookup_host`
* `LookupHost`
* `SocketAddr`
* `SocketAddr::{V4, V6}`
* `SocketAddr::port`
* `SocketAddrV4`
* `SocketAddrV4::{new, ip, port}`
* `SocketAddrV6`
* `SocketAddrV4::{new, ip, port, flowinfo, scope_id}`
* Common trait impls for socket addr structures
* `ToSocketAddrs`
* `ToSocketAddrs::Iter`
* `ToSocketAddrs::to_socket_addrs`
* `ToSocketAddrs for {SocketAddr*, (Ipv*Addr, u16), str, (str, u16)}`
* `Ipv4Addr`
* `Ipv4Addr::{new, octets, to_ipv6_compatible, to_ipv6_mapped}`
* `Ipv6Addr`
* `Ipv6Addr::{new, segments, to_ipv4}`
* `TcpStream`
* `TcpStream::connect`
* `TcpStream::{peer_addr, local_addr, shutdown, try_clone}`
* `{Read,Write} for {TcpStream, &TcpStream}`
* `TcpListener`
* `TcpListener::bind`
* `TcpListener::{local_addr, try_clone, accept, incoming}`
* `Incoming`
* `UdpSocket`
* `UdpSocket::bind`
* `UdpSocket::{recv_from, send_to, local_addr, try_clone}`

Unstable functionality:

* Extra methods on `Ipv{4,6}Addr` for various methods of inspecting the address
  and determining qualities of it.
* Extra methods on `TcpStream` to configure various protocol options.
* Extra methods on `UdpSocket` to configure various protocol options.

Deprecated functionality:

* The `socket_addr` method has been renamed to `local_addr`

This commit is a breaking change due to the restructuring of the `SocketAddr`
type as well as the renaming of the `socket_addr` method. Migration should be
fairly straightforward, however, after accounting for the new level of
abstraction in `SocketAddr` (protocol distinction at the socket address level,
not the IP address).

[breaking-change]
2015-03-13 16:47:42 -07:00
Joseph Crail
fcf3f3209a Remove explicit syntax highlight from docs. 2015-03-13 19:25:18 -04:00
Aaron Turon
1d5983aded Deprecate range, range_step, count, distributions
This commit deprecates the `count`, `range` and `range_step` functions
in `iter`, in favor of range notation. To recover all existing
functionality, a new `step_by` adapter is provided directly on `ops::Range`
and `ops::RangeFrom`.

[breaking-change]
2015-03-13 14:45:13 -07:00
bors
3e4be02b80 Auto merge of #23292 - alexcrichton:stabilize-io, r=aturon
The new `std::io` module has had some time to bake now, and this commit
stabilizes its functionality. There are still portions of the module which
remain unstable, and below contains a summart of the actions taken.

This commit also deprecates the entire contents of the `old_io` module in a
blanket fashion. All APIs should now have a reasonable replacement in the
new I/O modules.

Stable APIs:

* `std::io` (the name)
* `std::io::prelude` (the name)
* `Read`
* `Read::read`
* `Read::{read_to_end, read_to_string}` after being modified to return a `usize`
  for the number of bytes read.
* `ReadExt`
* `Write`
* `Write::write`
* `Write::{write_all, write_fmt}`
* `WriteExt`
* `BufRead`
* `BufRead::{fill_buf, consume}`
* `BufRead::{read_line, read_until}` after being modified to return a `usize`
  for the number of bytes read.
* `BufReadExt`
* `BufReader`
* `BufReader::{new, with_capacity}`
* `BufReader::{get_ref, get_mut, into_inner}`
* `{Read,BufRead} for BufReader`
* `BufWriter`
* `BufWriter::{new, with_capacity}`
* `BufWriter::{get_ref, get_mut, into_inner}`
* `Write for BufWriter`
* `IntoInnerError`
* `IntoInnerError::{error, into_inner}`
* `{Error,Display} for IntoInnerError`
* `LineWriter`
* `LineWriter::{new, with_capacity}` - `with_capacity` was added
* `LineWriter::{get_ref, get_mut, into_inner}` - `get_mut` was added)
* `Write for LineWriter`
* `BufStream`
* `BufStream::{new, with_capacities}`
* `BufStream::{get_ref, get_mut, into_inner}`
* `{BufRead,Read,Write} for BufStream`
* `stdin`
* `Stdin`
* `Stdin::lock`
* `Stdin::read_line` - added method
* `StdinLock`
* `Read for Stdin`
* `{Read,BufRead} for StdinLock`
* `stdout`
* `Stdout`
* `Stdout::lock`
* `StdoutLock`
* `Write for Stdout`
* `Write for StdoutLock`
* `stderr`
* `Stderr`
* `Stderr::lock`
* `StderrLock`
* `Write for Stderr`
* `Write for StderrLock`
* `io::Result`
* `io::Error`
* `io::Error::last_os_error`
* `{Display, Error} for Error`

Unstable APIs:

(reasons can be found in the commit itself)

* `Write::flush`
* `Seek`
* `ErrorKind`
* `Error::new`
* `Error::from_os_error`
* `Error::kind`

Deprecated APIs

* `Error::description` - available via the `Error` trait
* `Error::detail` - available via the `Display` implementation
* `thread::Builder::{stdout, stderr}`

Changes in functionality:

* `old_io::stdio::set_stderr` is now a noop as the infrastructure for printing
  backtraces has migrated to `std::io`.

[breaking-change]
2015-03-13 20:22:16 +00:00
Alex Crichton
981bf5f690 Fallout of std::old_io deprecation 2015-03-13 10:00:28 -07:00
Manish Goregaokar
40b64645fe rm unused import 2015-03-13 19:52:18 +05:30
Manish Goregaokar
825f49a89a Fix def -> PathResolution 2015-03-13 19:51:09 +05:30
Manish Goregaokar
0d37323fd3 Rollup merge of #21468 - sanxiyn:dead-variant, r=
This implements a wish suggested in #17410, detecting enum variants that are never constructed, even in the presence of `#[derive(Clone)]`. The implementation is general and not specific to `#[derive(Clone)]`.

r? @jakub-
2015-03-13 18:12:05 +05:30
Manish Goregaokar
d0f98fcc7f Rollup merge of #23322 - dotdash:jemalloc_attrs, r=brson
When this attribute is applied to a function, its return value gets the
noalias attribute, which is how you tell LLVM that the function returns
a \"new\" pointer that doesn't alias anything accessible to the caller,
i.e. it acts like a memory allocator.

Plain malloc doesn't need this attribute because LLVM already knows
about malloc and adds the attribute itself.
2015-03-13 18:11:51 +05:30
Manish Goregaokar
63cd9f9d89 Rollup merge of #23321 - apasel422:hash, r=alexcrichton
It is no longer possible to specialize on the `Hasher` because it moved to a method-level type parameter.
2015-03-13 18:11:46 +05:30
Manish Goregaokar
63bdfbf90a Rollup merge of #23317 - tanadeau:fix-formatting-and-grammar, r=steveklabnik
Fixed grammar errors (incorrect uses of commas and \"you're\" instead of \"your\") and broke up a long line.

r? @steveklabnik
2015-03-13 18:11:40 +05:30
Manish Goregaokar
b00c310985 Rollup merge of #23312 - gkoz:ptr_from_box_docs, r=steveklabnik
Show how to get a pointer without destroying the box.
Use `boxed::into_raw` instead of `mem::transmute`.

I removed the `let my_num: *const i32 = mem::transmute(my_num);` case altogether because we own the box, a `*mut` pointer is good anywhere a `*const` is needed, `from_raw` takes a mutable pointer and casting from a `*const` caused an ICE.
2015-03-13 18:11:34 +05:30
Manish Goregaokar
da054a5f87 Rollup merge of #23328 - alexcrichton:rustdoc-default-impl, r=brson
This adds a special code path for impls which are listed as default impls to
ensure that they're loaded correctly.
2015-03-13 18:11:27 +05:30
Manish Goregaokar
6354387e42 Rollup merge of #23310 - michaelwoerister:gdb-std-pp, r=alexcrichton
```rust
Rust:  let slice: &[i32] = &[0, 1, 2, 3];
GDB:   $1 = &[i32](len: 4) = {0, 1, 2, 3}

Rust:  let vec = vec![4, 5, 6, 7];
GDB:   $2 = Vec<u64>(len: 4, cap: 4) = {4, 5, 6, 7}

Rust:  let str_slice = \"IAMA string slice!\";
GDB:   $3 = \"IAMA string slice!\"

Rust:  let string = \"IAMA string!\".to_string();
GDB:   $4 = \"IAMA string!\"
```
Neat!
2015-03-13 18:11:13 +05:30
Manish Goregaokar
7d2ee7a9da Rollup merge of #23307 - michaelwoerister:lldb-vec-pp-bug, r=alexcrichton
Fixes #22656. Also adds a nice pretty printer for `Vec`.
2015-03-13 18:11:07 +05:30
Oliver Schneider
85080fa81d fix tests 2015-03-13 13:09:34 +01:00
bors
ee7696383f Auto merge of #23307 - michaelwoerister:lldb-vec-pp-bug, r=alexcrichton
Fixes #22656. Also adds a nice pretty printer for `Vec`.
2015-03-13 11:44:47 +00:00
Eduard Burtescu
9889aae13e syntax: use lookahead to distinguish inner and outer attributes, instead of passing the latter around. 2015-03-13 11:36:30 +02:00
Oliver Schneider
6584ae5491 slice::from_raw_parts is preferred over transmuting a fresh raw::Slice 2015-03-13 09:56:18 +01:00
Alex Crichton
4e25765aa2 rustdoc: Fix ICE with cross-crate default impls
This adds a special code path for impls which are listed as default impls to
ensure that they're loaded correctly.
2015-03-12 21:01:49 -07:00
Alex Crichton
d54bd9f29a std: Stabilize the io module
The new `std::io` module has had some time to bake now, and this commit
stabilizes its functionality. There are still portions of the module which
remain unstable, and below contains a summart of the actions taken.

This commit also deprecates the entire contents of the `old_io` module in a
blanket fashion. All APIs should now have a reasonable replacement in the
new I/O modules.

Stable APIs:

* `std::io` (the name)
* `std::io::prelude` (the name)
* `Read`
* `Read::read`
* `Read::{read_to_end, read_to_string}` after being modified to return a `usize`
  for the number of bytes read.
* `Write`
* `Write::write`
* `Write::{write_all, write_fmt}`
* `BufRead`
* `BufRead::{fill_buf, consume}`
* `BufRead::{read_line, read_until}` after being modified to return a `usize`
  for the number of bytes read.
* `BufReader`
* `BufReader::{new, with_capacity}`
* `BufReader::{get_ref, get_mut, into_inner}`
* `{Read,BufRead} for BufReader`
* `BufWriter`
* `BufWriter::{new, with_capacity}`
* `BufWriter::{get_ref, get_mut, into_inner}`
* `Write for BufWriter`
* `IntoInnerError`
* `IntoInnerError::{error, into_inner}`
* `{Error,Display} for IntoInnerError`
* `LineWriter`
* `LineWriter::{new, with_capacity}` - `with_capacity` was added
* `LineWriter::{get_ref, get_mut, into_inner}` - `get_mut` was added)
* `Write for LineWriter`
* `BufStream`
* `BufStream::{new, with_capacities}`
* `BufStream::{get_ref, get_mut, into_inner}`
* `{BufRead,Read,Write} for BufStream`
* `stdin`
* `Stdin`
* `Stdin::lock`
* `Stdin::read_line` - added method
* `StdinLock`
* `Read for Stdin`
* `{Read,BufRead} for StdinLock`
* `stdout`
* `Stdout`
* `Stdout::lock`
* `StdoutLock`
* `Write for Stdout`
* `Write for StdoutLock`
* `stderr`
* `Stderr`
* `Stderr::lock`
* `StderrLock`
* `Write for Stderr`
* `Write for StderrLock`
* `io::Result`
* `io::Error`
* `io::Error::last_os_error`
* `{Display, Error} for Error`

Unstable APIs:

(reasons can be found in the commit itself)

* `Write::flush`
* `Seek`
* `ErrorKind`
* `Error::new`
* `Error::from_os_error`
* `Error::kind`

Deprecated APIs

* `Error::description` - available via the `Error` trait
* `Error::detail` - available via the `Display` implementation
* `thread::Builder::{stdout, stderr}`

Changes in functionality:

* `old_io::stdio::set_stderr` is now a noop as the infrastructure for printing
  backtraces has migrated to `std::io`.
* The `ReadExt`, `WriteExt`, and `BufReadExt` extension traits were all removed
  by folding functionality into the corresponding trait.

[breaking-change]
2015-03-12 20:39:03 -07:00
Björn Steinbrink
0942803f50 Add an "allocator" attribute to mark functions as allocators
When this attribute is applied to a function, its return value gets the
noalias attribute, which is how you tell LLVM that the function returns
a "new" pointer that doesn't alias anything accessible to the caller,
i.e. it acts like a memory allocator.

Plain malloc doesn't need this attribute because LLVM already knows
about malloc and adds the attribute itself.
2015-03-13 03:19:30 +01:00
bors
79dd393a4f Auto merge of #23229 - aturon:stab-path, r=alexcrichton
This commit stabilizes essentially all of the new `std::path` API. The
API itself is changed in a couple of ways (which brings it in closer
alignment with the RFC):

* `.` components are now normalized away, unless they appear at the
  start of a path. This in turn effects the semantics of e.g. asking for
  the file name of `foo/` or `foo/.`, both of which yield `Some("foo")`
  now. This semantics is what the original RFC specified, and is also
  desirable given early experience rolling out the new API.

* The `parent` method is now `without_file` and succeeds if, and only
  if, `file_name` is `Some(_)`. That means, in particular, that it fails
  for a path like `foo/../`. This change affects `pop` as well.

In addition, the `old_path` module is now deprecated.

[breaking-change]

r? @alexcrichton
2015-03-13 01:00:02 +00:00
Aaron Turon
42c4e481cd Stabilize std::path
This commit stabilizes essentially all of the new `std::path` API. The
API itself is changed in a couple of ways (which brings it in closer
alignment with the RFC):

* `.` components are now normalized away, unless they appear at the
  start of a path. This in turn effects the semantics of e.g. asking for
  the file name of `foo/` or `foo/.`, both of which yield `Some("foo")`
  now. This semantics is what the original RFC specified, and is also
  desirable given early experience rolling out the new API.

* The `parent` function now succeeds if, and only if, the path has at
  least one non-root/prefix component. This change affects `pop` as
  well.

* The `Prefix` component now involves a separate `PrefixComponent`
  struct, to better allow for keeping both parsed and unparsed prefix data.

In addition, the `old_path` module is now deprecated.

Closes #23264

[breaking-change]
2015-03-12 16:38:58 -07:00
Andrew Paseltiner
ae21b4f581 remove mention of specialization from Hash trait
It is no longer possible to specialize on the `Hasher` because it moved
to a method-level type parameter.
2015-03-12 18:09:52 -04:00
Trent Nadeau
ccfc381044 Fixed several grammar errors and broke up very long line. 2015-03-12 17:00:35 -04:00
bors
c9b03c24ec Auto merge of #23265 - eddyb:meth-ast-refactor, r=nikomatsakis
The end result is that common fields (id, name, attributes, etc.) are stored in now-structures `ImplItem` and `TraitItem`.
The signature of a method is no longer duplicated between methods with a body (default/impl) and those without, they now share `MethodSig`.

This is also a [breaking-change] because of minor bugfixes and changes to syntax extensions:
* `pub fn` methods in a trait no longer parse - remove the `pub`, it has no meaning anymore
* `MacResult::make_methods` is now `make_impl_items` and the return type has changed accordingly
* `quote_method` is gone, because `P<ast::Method>` doesn't exist and it couldn't represent a full method anyways - could be replaced by `quote_impl_item`/`quote_trait_item` in the future, but I do hope we realize how silly that combinatorial macro expansion is and settle on a single `quote` macro + some type hints - or just no types at all (only token-trees)

r? @nikomatsakis This is necessary (hopefully also sufficient) for associated constants.
2015-03-12 20:13:23 +00:00
Gleb Kozyrev
5d9ed0bc0e Update the ways to get a pointer from a box
Show how to get a pointer without destroying the box.
Use `boxed::into_raw` instead of `mem::transmute`.
2015-03-12 20:48:04 +02:00
Alex Crichton
c933d44f7b std: Remove #[allow] directives in sys modules
These were suppressing lots of interesting warnings! Turns out there was also
quite a bit of dead code.
2015-03-12 10:23:27 -07:00
Michael Woerister
90fc28d0f2 debuginfo: Add GDB pretty printers for slices, Vec<>, and String. 2015-03-12 17:05:44 +01:00
bors
206ee0e853 Auto merge of #23299 - mdinger:monospace_table, r=steveklabnik
The [literals table](http://doc.rust-lang.org/reference.html#characters-and-strings) now looks ugly but compact. Add back the monospace text.
2015-03-12 13:47:20 +00:00
Michael Woerister
07240d6026 debuginfo: Make LLDB pretty printer correctly handle zero-sized fields. 2015-03-12 12:18:15 +01:00
bors
49f7550a25 Auto merge of #23162 - sfackler:debug-builders, r=alexcrichton
I've made some minor changes from the implementation attached to the RFC to try to minimize codegen. The methods now take `&Debug` trait objects rather than being parameterized and there are inlined stub methods that call to non-inlined methods to do the work.

r? @alexcrichton 

cc @huonw for the `derive(Debug)` changes.
2015-03-12 07:30:44 +00:00
mdinger
fb0ee646e9 Add monospace font back to literals table 2015-03-12 00:37:47 -04:00
Manish Goregaokar
419c0ff321 Rm unused feature 2015-03-12 09:16:36 +05:30
Manish Goregaokar
7f7a3cc29d Rollup merge of #23296 - shepmaster:explain-why-joinguard-is-must-use, r=alexcrichton 2015-03-12 09:15:06 +05:30
Manish Goregaokar
3d70c7042c Rollup merge of #23295 - johnz133:patch-1, r=steveklabnik
Changed the docs to reflect that
2015-03-12 09:14:59 +05:30
Manish Goregaokar
85d836a2b2 Rollup merge of #23279 - steveklabnik:gh23244, r=alexcrichton
Fixes #23244
2015-03-12 09:14:51 +05:30
Manish Goregaokar
cc6ef80fa4 Rollup merge of #23275 - aochagavia:constants, r=eddyb
Fixes #23260

r? @eddyb
2015-03-12 09:14:44 +05:30
Manish Goregaokar
e4e5640a6e Rollup merge of #23274 - rprichard:fix-21715, r=pnkfelix
* Consumers of handle_options assume the unstable options are defined in
   the getopts::Matches value if -Z unstable-options is set, but that's not
   the case if there weren't any actual unstable options. Fix this by
   always reparsing options when -Z unstable-options is set.

 * If both argument parsing attempts fail, print the error from the second
   attempt rather than the first. The error from the first is very poor
   whenever unstable options are present. e.g.:

       $ rustc hello.rs -Z unstable-options --show-span
       error: Unrecognized option: 'show-span'.
       $ rustc hello.rs -Z unstable-options --pretty --pretty
       error: Unrecognized option: 'pretty'.
       $ rustc hello.rs -Z unstable-options --pretty --bad-option
       error: Unrecognized option: 'pretty'.

 * On the second parse, add a separate pass to reject unstable options if
   -Z unstable-options wasn't specified.

Fixes #21715.
r? @pnkfelix
2015-03-12 09:14:38 +05:30
Manish Goregaokar
99dc60dc24 Rollup merge of #23270 - frewsxcv:patch-5, r=alexcrichton
Markdown requires a newline before bullet points, and since there's not one here, they'll get rendered incorrectly
2015-03-12 09:14:31 +05:30
Manish Goregaokar
6290a344a6 Rollup merge of #23263 - alexcrichton:stabilize-from-raw-parts, r=brson
These new APIs have had some time to bake now, and no pressing issues have come
up so they should be ok for stabilizing. Specifically, these two APIs were
stabilized:

* `slice::from_raw_parts`
* `slice::from_raw_parts_mut`
2015-03-12 09:14:26 +05:30
Manish Goregaokar
e4010d1bf6 Rollup merge of #23255 - dhuseby:master, r=alexcrichton
it turns out that jemalloc doesn't behave well on bitrig.  with jemalloc enabled i get some kernel errors related to sbrk failures.  with jemalloc disabled, the errors go away.  i am investigating, but in the mean time, we should just disable jemalloc by default on bitrig.
2015-03-12 09:14:16 +05:30
Manish Goregaokar
7a9ef60e60 Rollup merge of #23247 - tbu-:pr_core_iter_rm_isize, r=huonw 2015-03-12 09:14:08 +05:30
Manish Goregaokar
9e2cf11c89 Rollup merge of #23238 - mahkoh:nativecpu, r=dotdash 2015-03-12 09:14:03 +05:30
Manish Goregaokar
497f6b77c3 Rollup merge of #23234 - Ms2ger:doc-dynamic-dispatch, r=steveklabnik 2015-03-12 09:13:58 +05:30
Manish Goregaokar
21b024ae27 Rollup merge of #22769 - :rustdocfix, r=brson
Fixes #22325
2015-03-12 09:13:53 +05:30
Manish Goregaokar
0a74387b64 Rollup merge of #23297 - steveklabnik:examples, r=huonw
This brings comments in line with https://github.com/rust-lang/rfcs/blob/master/text/0505-api-comment-conventions.md#using-markdown
2015-03-12 09:13:47 +05:30
Manish Goregaokar
2c251fa846 Rollup merge of #23294 - dotdash:coob, r=alexcrichton
Fixes #23291
2015-03-12 09:13:42 +05:30
John Zhang
e3b717c7ce Cargo build now builds to /target/debug/, changed the docs to reflect that.
Deleted trailing space in hello-cargo.md

Added note about build --release in hello-cargo

thanks to steven klabnik for pointing it out for me

edited out redundant wording
2015-03-11 19:46:55 -07:00
Steve Klabnik
64ab111b53 Example -> Examples
This brings comments in line with https://github.com/rust-lang/rfcs/blob/master/text/0505-api-comment-conventions.md#using-markdown
2015-03-11 21:11:40 -04:00
Jake Goulding
ac6cd90af1 Explain why immediately dropping a JoinGuard is not what you want to do 2015-03-11 20:10:52 -04:00
bors
425297a930 Auto merge of #23156 - GuillaumeGomez:remove-proc, r=alexcrichton
This is the implementation of the [RFC 584](https://github.com/rust-lang/rfcs/pull/584).
2015-03-11 23:51:30 +00:00
Björn Steinbrink
de67c3a5bb Fix LLVM assertion when out-of-bounds indexing in a constant
Fixes #23291
2015-03-12 00:38:22 +01:00
Joseph Crail
62be565811 Add docs for saturating integer arithmetic.
This was added for #23241.
2015-03-11 19:12:07 -04:00
Eduard Burtescu
9da918548d syntax: move MethMac to MacImplItem and combine {Provided,Required}Method into MethodTraitItem. 2015-03-11 23:39:16 +02:00
Eduard Burtescu
ce10fa8d12 syntax: rename TypeMethod to MethodSig and use it in MethDecl. 2015-03-11 23:39:16 +02:00
Eduard Burtescu
f98b176314 syntax: gather common fields of impl & trait items into their respective types. 2015-03-11 23:39:16 +02:00
Eduard Burtescu
98491827b9 syntax: move indirection around {Trait,Impl}Item, from within. 2015-03-11 23:39:15 +02:00
Ms2ger
3ac89d372f Rewrite the dynamic dispatch section to focus on usage rather than implementation. 2015-03-11 21:37:01 +01:00
Adolfo Ochagavía
a83db81238 Update tests 2015-03-11 21:17:27 +01:00
Adolfo Ochagavía
47f1d6747c First-class struct and tuple constants
Fixes #23260
2015-03-11 21:17:25 +01:00
Steven Fackler
905a611b94 Switch to a specific feature 2015-03-11 12:58:01 -07:00
Guillaume Gomez
db726faf32 Change comment in parse-fail test 2015-03-11 19:46:19 +01:00
Steve Klabnik
8934c9b560 Add note about local documentation installation
Fixes #23244
2015-03-11 13:45:55 -04:00
Ryan Prichard
61004f88d1 Improve -Z unstable-options diagnostics and avoid an ICE
* Consumers of handle_options assume the unstable options are defined in
   the getopts::Matches value if -Z unstable-options is set, but that's not
   the case if there weren't any actual unstable options. Fix this by
   always reparsing options when -Z unstable-options is set.

 * If both argument parsing attempts fail, print the error from the second
   attempt rather than the first. The error from the first is very poor
   whenever unstable options are present. e.g.:

       $ rustc hello.rs -Z unstable-options --show-span
       error: Unrecognized option: 'show-span'.
       $ rustc hello.rs -Z unstable-options --pretty --pretty
       error: Unrecognized option: 'pretty'.
       $ rustc hello.rs -Z unstable-options --pretty --bad-option
       error: Unrecognized option: 'pretty'.

 * On the second parse, add a separate pass to reject unstable options if
   -Z unstable-options wasn't specified.

Fixes #21715.
r? @pnkfelix
2015-03-11 01:42:00 -07:00
Dave Huseby
33751ff8a7 adding latest bitrig snapshot manually 2015-03-10 23:39:50 -07:00
Ryan Prichard
9c0057df58 Remove core::panicking::panic's dependence on str's Display::fmt impl
Display::fmt for str calls into Formatter::pad, which is modest in size
and also pulls in string-related functions for its truncation and padding
abilities.  For size-critical programs (e.g. embedded), this call site
may be the only reason Formatter::pad is linked into the output.
2015-03-10 22:21:30 -07:00
Steven Fackler
4181d43c4b Remove inline silliness from debug builders
Turns out it's basically a wash, codegen wise.
2015-03-10 21:33:04 -07:00
bors
ae4812b613 Auto merge of #23256 - apasel422:bound, r=alexcrichton 2015-03-11 04:07:16 +00:00
Steven Fackler
3181213f91 Fix unstable span checks 2015-03-10 19:47:57 -07:00
Corey Farwell
d6492e2469 Fix markdown bullet points in function docs
Markdown requires a newline before bullet points, and since there's not one here, they'll get rendered incorrectly
2015-03-10 22:47:08 -04:00
bors
f899513a30 Auto merge of #23251 - tbu-:pr_rm_core_str_checked_add, r=alexcrichton 2015-03-11 01:39:49 +00:00
Guillaume Gomez
a07945d663 Remove ProcType and ProcExp 2015-03-11 00:09:42 +01:00
bors
cfea8ec416 Auto merge of #23126 - alexcrichton:char-third-pass, r=aturon
This commit performs another pass over the `std::char` module for stabilization.
Some minor cleanup is performed such as migrating documentation from libcore to
libunicode (where the `std`-facing trait resides) as well as a slight
reorganiation in libunicode itself. Otherwise, the stability modifications made
are:

* `char::from_digit` is now stable
* `CharExt::is_digit` is now stable
* `CharExt::to_digit` is now stable
* `CharExt::to_{lower,upper}case` are now stable after being modified to return
  an iterator over characters. While the implementation today has not changed
  this should allow us to implement the full set of case conversions in unicode
  where some characters can map to multiple when doing an upper or lower case
  mapping.
* `StrExt::to_{lower,upper}case` was added as unstable for a convenience of not
  having to worry about characters expanding to more characters when you just
  want the whole string to get into upper or lower case.

This is a breaking change due to the change in the signatures of the
`CharExt::to_{upper,lower}case` methods. Code can be updated to use functions
like `flat_map` or `collect` to handle the difference.

[breaking-change]

Closes #20333
2015-03-10 22:45:10 +00:00
Alex Crichton
0f6a0b58f9 std: Stabilize more of the char module
This commit performs another pass over the `std::char` module for stabilization.
Some minor cleanup is performed such as migrating documentation from libcore to
libunicode (where the `std`-facing trait resides) as well as a slight
reorganiation in libunicode itself. Otherwise, the stability modifications made
are:

* `char::from_digit` is now stable
* `CharExt::is_digit` is now stable
* `CharExt::to_digit` is now stable
* `CharExt::to_{lower,upper}case` are now stable after being modified to return
  an iterator over characters. While the implementation today has not changed
  this should allow us to implement the full set of case conversions in unicode
  where some characters can map to multiple when doing an upper or lower case
  mapping.
* `StrExt::to_{lower,upper}case` was added as unstable for a convenience of not
  having to worry about characters expanding to more characters when you just
  want the whole string to get into upper or lower case.

This is a breaking change due to the change in the signatures of the
`CharExt::to_{upper,lower}case` methods. Code can be updated to use functions
like `flat_map` or `collect` to handle the difference.

[breaking-change]
2015-03-10 15:08:31 -07:00
Guillaume Gomez
4e877adddf Remove proc keyword 2015-03-10 22:02:47 +01:00
Alex Crichton
0ad874111e std: Stabilize slice::from_raw_parts
These new APIs have had some time to bake now, and no pressing issues have come
up so they should be ok for stabilizing. Specifically, these two APIs were
stabilized:

* `slice::from_raw_parts`
* `slice::from_raw_parts_mut`
2015-03-10 13:45:08 -07:00
bors
6048ba8a55 Auto merge of #23249 - tbu-:pr_rm_core_str_macros, r=alexcrichton 2015-03-10 20:20:15 +00:00
Andrew Paseltiner
f58a65374b derive common traits for collections::Bound 2015-03-10 13:50:35 -04:00
bors
d193233230 Auto merge of #23250 - liigo:plain-summary-line, r=alexcrichton
this feature was broken by mistake some days ago: @2b11a80
(line 2201: https://github.com/rust-lang/rust/commit/2b11a80#diff-05c3c8b7c08a25764218b8c18d8204b7L2201)

r? @alexcrichton
2015-03-10 17:20:43 +00:00
bors
698c1008d6 Auto merge of #23028 - Munksgaard:get_attrs_opt, r=eddyb
This is more flexible and less error-prone. `get_attrs` and
`get_attrs_opt` can be used on many more items than the old `get_attrs`
could.

This is all courtesy of @huonw, and directly taken from here:
https://github.com/rust-lang/rust/pull/22348/files#diff-0f85fcb07fb739876892e633fa0e2be6R5575

Also thanks to @Manishearth for pointing it out to me.
2015-03-10 14:50:40 +00:00
Philip Munksgaard
caf6f17c0f get_attrs: use tcx.map.attrs
This is more flexible and less error-prone. `get_attrs` can now be used
on many more types of items.
2015-03-10 14:19:49 +01:00
Philip Munksgaard
298d1578f0 with_attrs -> attrs
We don't need to take a closure, instead just return the list of attributes.
2015-03-10 14:18:58 +01:00
Tobias Bucher
5199a7060b Remove unneeded saturating_add 2015-03-10 14:18:24 +01:00
Liigo Zhuang
29ff77f74b rustdoc: get back 'plain summary line' in sidebar
this feature was broken by mistake some days ago: @2b11a80
2015-03-10 20:55:09 +08:00
Tobias Bucher
fb297d1027 Remove unneeded macro witchery 2015-03-10 12:57:05 +01:00
Tobias Bucher
fcae449b39 Purge isize from core::iter 2015-03-10 11:36:11 +01:00
Manish Goregaokar
b0357ac2c2 Rollup merge of #23231 - killercup:patch-7, r=Manishearth
Fixes #23230.

I think these are the only places I need to update.

r? @steveklabnik
2015-03-10 16:04:23 +05:30
Manish Goregaokar
436a874db2 Rollup merge of #23226 - pnkfelix:add-tests-for-some-feature-gates, r=alexcrichton
Add tests checking that a number of feature gates are gating their features

Namely:

 * `quote`
 * `link_args`
 * `link_llvm_intrinsics`
 * `thread_local`
 * `unsafe_destructor`

Also updates test for `plugin_registrar` to make it clear that
it is only testing the `plugin_registrar` feature gate.

Cc #22820.  (Latter is not fixed, since there are still a bunch more feature-gates that need tests. But I wanted to stop here and move on to something else.)
2015-03-10 14:59:53 +05:30
Manish Goregaokar
3e5f3b2350 Rollup merge of #23195 - steveklabnik:gh19808, r=alexcrichton
Fixes #19808
2015-03-10 14:59:46 +05:30
Manish Goregaokar
fa8c6d94d0 Rollup merge of #23185 - steveklabnik:gh20051, r=alexcrichton
Fixes #20051
2015-03-10 14:59:39 +05:30
Manish Goregaokar
d034bc3e3a Rollup merge of #23125 - danburkert:master, r=brson 2015-03-10 14:59:31 +05:30
Manish Goregaokar
7206fec9c3 Rollup merge of #23105 - alexcrichton:rand-wrapping, r=brson
There was a buildbot failure recently of an arithmetic overflow in the isaac
module of the rand crate, so I've imported the isaac implementation from
out-of-tree which makes somewhat more liberal usage of the wrapping primitives.
Hopefull this quelches any future overflow!
2015-03-10 14:59:13 +05:30
Manish Goregaokar
a49b6f8bd3 Rollup merge of #23201 - pnkfelix:fsk-struct-ooe-23112, r=nikomatsakis
For FRU, eval field exprs (into scratch temps) before base expr

Fix #23112.
2015-03-10 14:59:07 +05:30
Steven Fackler
bd6ed22fdf Switch derive(Debug) to use the debug builders 2015-03-09 23:24:34 -07:00
Steven Fackler
8121cf077c Restructure debug builders to minimize codegen
Switching from generic bounds to trait objects and having un-inlined
inner methods should cut down on the size of Debug impls, since we care
about the speed of a Debug implementation way less than binary bloat.
2015-03-09 23:24:34 -07:00
Steven Fackler
e3656bd81b Implement RFC 640 2015-03-09 23:24:34 -07:00
Alex Crichton
ee7a72c608 rand: Use wrapping operations everywhere
There was a buildbot failure recently of an arithmetic overflow in the isaac
module of the rand crate, so I've imported the isaac implementation from
out-of-tree which makes somewhat more liberal usage of the wrapping primitives.
Hopefull this quelches any future overflow!
2015-03-09 22:16:46 -07:00
bors
621ccf58c4 Auto merge of #23186 - steveklabnik:gh14686, r=alexcrichton
Fixes #14686
2015-03-10 03:03:17 +00:00
Julian Orth
660b48fae5 Add support for target-cpu=native 2015-03-10 01:56:51 +01:00
bors
12b846ab80 Auto merge of #23038 - nikomatsakis:issue-22978-defaulted-coherence, r=flaper87
Fixes #22978.

r? @FlaPer87
2015-03-09 23:27:14 +00:00
bors
b83b26bacb Auto merge of #22561 - richo:as_slice-as_str, r=Manishearth
This may not be quite ready to go out, I fixed some docs but suspect I missed a bunch.

I also wound up fixing a bunch of redundant `[]` suffixes, but on closer inspection I don't believe that can land until after a snapshot.
2015-03-09 21:02:50 +00:00
Steve Klabnik
7a86bfc5df Shrink table in the reference
Fixes #20051
2015-03-09 16:51:21 -04:00
Steve Klabnik
a60089903a Add note about pre/post increment to the design FAQ.
Fixes #14686
2015-03-09 16:49:19 -04:00
Steve Klabnik
bc927a69b2 Explain super in the crates guide.
Fixes #19808
2015-03-09 16:48:05 -04:00
Pascal Hertleif
c2fe7c4a03 Rustdoc: Add Headline Style for tymethod
Fixes #23230
2015-03-09 20:34:20 +01:00
Niko Matsakis
17358d1d21 Address nit by @flaper87 2015-03-09 14:39:31 -04:00
bors
638832e64c Auto merge of #21824 - sfackler:should_panic, r=alexcrichton 2015-03-09 18:32:16 +00:00
Felix S. Klock II
5c3a0b191e Add tests checking that a number of feature gates are gating their features.
Namely:

 * `quote`
 * `link_args`
 * `link_llvm_intrinsics`
 * `thread_local`
 * `unsafe_destructor`

Also updates test for `plugin_registrar` to make it clear that
it is only testing the `plugin_registrar` feature gate.

Cc #22820.
2015-03-09 19:18:43 +01:00
Steven Fackler
e2605b42c7 Rename #[should_fail] to #[should_panic] 2015-03-09 10:14:21 -07:00
bors
777f5d9599 Auto merge of #23219 - Manishearth:rollup, r=Manishearth 2015-03-09 16:02:29 +00:00
Manish Goregaokar
646830076a fix rmake 2015-03-09 21:04:13 +05:30
Richo Healey
7981aa6ac9 doc: Fix extraneous as_slice()'s in docstrings 2015-03-09 07:54:19 -07:00
Richo Healey
061d84399e remove uses of as_slice where deref coercions can be used 2015-03-09 07:54:19 -07:00
Felix S. Klock II
3dbf969103 For FRU, evaluate field expressions (into scratch temps) before base expression.
Fix #23112.
2015-03-09 14:50:36 +01:00
bors
2574009af0 Auto merge of #23209 - richo:normalize-test-names, r=alexcrichton
Motivated by the test output not lining up when it could, I normalized all of the issue-* tests.

While doing it, I found some lexer tests that could be unignored and fixed an int -> isize.
2015-03-09 13:36:13 +00:00
Manish Goregaokar
f3c427ca5c Rollup merge of #23203 - eLobato:patch-1, r=Manishearth
A minor change to avoid making the reader think 'where is this'.
2015-03-09 17:59:22 +05:30
Manish Goregaokar
894cd3961a Rollup merge of #23202 - shepmaster:intro-threads-not-concurrent, r=steveklabnik
If we end the `scoped` call with a semicolon, the `JoinGuard` will be
dropped and not returned from the `map`. The thread will start up and
we immediately block, making for a very expensive sequential loop.
2015-03-09 17:59:21 +05:30
Manish Goregaokar
094b6bc831 Rollup merge of #23187 - steveklabnik:gh17481, r=Manishearth
Fixes #17481
2015-03-09 17:59:21 +05:30
Manish Goregaokar
4733190c35 Rollup merge of #23183 - steveklabnik:gh22572, r=Manishearth
They're opt-in now.

Fixes #22572
2015-03-09 17:59:20 +05:30
Manish Goregaokar
811c575b3c Rollup merge of #23144 - FuGangqiang:doc_err, r=alexcrichton
in the [doc page](http://doc.rust-lang.org/std/num/index.html), `FromStrRadix::from_str_radix` is not quoted.
2015-03-09 17:59:20 +05:30
Manish Goregaokar
bfcf53f7ad Rollup merge of #23210 - richo:rust-o, r=alexcrichton
rustc will ICE if you specify an outfile path that is bare without a
directory. As a workaround, before this -o ./foo will work

It wasn't clear to me where I could put a test that actually invokes rustc from a shell, although I think I can add doctests to that machinery in librustc_driver that will arrange for this to be called with arguments that would trigger the ICE
2015-03-09 17:59:20 +05:30
Manish Goregaokar
43984618eb Rollup merge of #23209 - richo:normalize-test-names, r=alexcrichton
Motivated by the test output not lining up when it could, I normalized all of the issue-* tests.

While doing it, I found some lexer tests that could be unignored and fixed an int -> isize.
2015-03-09 17:59:19 +05:30
Richo Healey
103636114d normalize the current directory as Path{""} 2015-03-08 22:21:59 -07:00
Richo Healey
0487ad9119 Add a test for a bare outfile param to rustc 2015-03-08 22:21:59 -07:00
Richo Healey
8ac528bed1 rustc: Fix an ICE when -o bare-path
rustc will ICE if you specify an outfile path that is bare without a
directory. As a workaround, before this -o ./foo will work
2015-03-08 22:21:59 -07:00
Manish Goregaokar
3797827460 Fix doctest (fixup #23188) 2015-03-09 10:16:34 +05:30
Richo Healey
58a288d323 test: Fix depcrecated alias for int 2015-03-08 17:10:32 -07:00
Richo Healey
5b7bfc88c6 test: Test the lexer now that #15879 is closed 2015-03-08 17:10:32 -07:00
Jake Goulding
b426a242e3 Make concurrent examples actually run concurrently
If we end the `scoped` call with a semicolon, the `JoinGuard` will be
dropped and not returned from the `map`. The thread will start up and
we immediately block, making for a very expensive sequential loop.
2015-03-08 16:12:07 -04:00
Jake Goulding
a6ebd26208 Update example that uses deprecated Thread::scoped 2015-03-08 16:12:07 -04:00
Manish Goregaokar
684cd77222 Rollup merge of #23182 - steveklabnik:gh22610, r=Manishearth
Fixes #22610
2015-03-09 00:35:38 +05:30
Manish Goregaokar
9f851a734b Rollup merge of #23190 - steveklabnik:fix_as_slice, r=alexcrichton 2015-03-09 00:13:33 +05:30
Manish Goregaokar
10960d3043 Rollup merge of #23188 - steveklabnik:gh18787, r=alexcrichton
Fixes #18787
2015-03-09 00:11:48 +05:30
Manish Goregaokar
b515b4e28a Rollup merge of #23184 - steveklabnik:gh22553, r=alexcrichton
Fixes #22553
2015-03-09 00:10:06 +05:30
Manish Goregaokar
c7d5354567 Rollup merge of #23181 - steveklabnik:gh22637, r=alexcrichton
Fixes #22637
2015-03-09 00:09:56 +05:30
Manish Goregaokar
d1ac69ce72 Rollup merge of #23180 - steveklabnik:gh23052, r=alexcrichton
Fixes #23052
2015-03-09 00:08:03 +05:30
Manish Goregaokar
ea8434f7ee Rollup merge of #23043 - steveklabnik:doc_default_method, r=nikomatsakis 2015-03-09 00:06:20 +05:30
Manish Goregaokar
1149b4d08d Rollup merge of #22917 - randfur:master, r=steveklabnik
The docs currently define `array_expr`s as:

    array_expr : '[' \"mut\" ? vec_elems? ']' ;
    array_elems : [expr [',' expr]*] | [expr ',' \"..\" expr] ;

`vec_elems` is not defined anywhere else so it is probably a typo for `array_elems`.
2015-03-09 00:06:03 +05:30
Manish Goregaokar
f7c1fce144 Rollup merge of #23153 - Manishearth:snap, r=alexcrichton
Needed so that #21824 can land
2015-03-09 00:04:20 +05:30
Manish Goregaokar
0e0bb8a128 Rollup merge of #23179 - steveklabnik:mini_rollup, r=steveklabnik
I had to fix up some PRs:

* https://github.com/rust-lang/rust/pull/22976
* https://github.com/rust-lang/rust/pull/22945
* https://github.com/rust-lang/rust/pull/22845
2015-03-09 00:02:37 +05:30
Manish Goregaokar
509c6fc9c1 Rollup merge of #22984 - carols10cents:tests-for-float, r=huonw
Building on #22076, I've added some tests for stable methods in f32 and f64 that didn't have any before.

Please let me know if there are any improvements I can make, and I am happy to make them! 📬
2015-03-09 00:02:28 +05:30
bors
b775541aaf Auto merge of #22984 - carols10cents:tests-for-float, r=huonw
Building on #22076, I've added some tests for stable methods in f32 and f64 that didn't have any before.

Please let me know if there are any improvements I can make, and I am happy to make them! 📬
2015-03-08 17:59:20 +00:00
Steve Klabnik
6c6c23f9df Small fixes to example to be more idiomatic 2015-03-08 12:07:58 -04:00
Steve Klabnik
044b3bf2d7 Add examples of all three syntaxes in method syntax chapter of trpl
Fixes #18787
2015-03-08 10:49:13 -04:00
Steve Klabnik
1014b22b31 remove confusing language about casting types
Fixes #17481
2015-03-08 10:35:58 -04:00
Steve Klabnik
d65064da34 Move 'more strings' after ownership
Fixes #22553
2015-03-08 09:34:03 -04:00
Steve Klabnik
9653a521b5 Clean up references to opt-out traits
They're opt-in now.

Fixes #22572
2015-03-08 09:32:18 -04:00
Steve Klabnik
5b0acb5846 remove 'generally' to reduce confusion
Fixes #22610
2015-03-08 09:29:47 -04:00
Steve Klabnik
ce223a62f1 Mention deref coercions in the String guide.
Fixes #22637
2015-03-08 09:25:50 -04:00
Steve Klabnik
e56fcbcd99 Remove reference to NoSend in concurrency chapter of the book
Fixes #23052
2015-03-08 09:15:06 -04:00
Steve Klabnik
de44baac8b Add default methods to trait documentation 2015-03-08 08:55:17 -04:00
Amol Mundayoor
45c397d738 Fix array syntax in comment.
Fixes #22721.
2015-03-08 08:39:47 -04:00
Łukasz Niemier
3ad1c83540 Add description of fold function arguments. 2015-03-08 08:38:27 -04:00
Pyry Kontio
6dcc0e5631 Adds an example for PhantomData<T>. 2015-03-08 08:38:10 -04:00
bors
ead9ab84b8 Auto merge of #23167 - rprichard:fix-plugin-rustbook, r=steveklabnik
* "let mut text" was previously of &String type.  Now it is of &str type.

 * Update the slicing syntax.  Both &text[] and text.slice_from() evaluate
   to a &str.

 * We were passing a u32 to expr_usize.  Call expr_u32 instead.

r? @steveklabnik
Fixes #23166
2015-03-08 12:10:42 +00:00
bors
b2f09c1165 Auto merge of #23127 - alexcrichton:bench-wrapping, r=brson
Right now the rust upgrade in cargo is blocked on fixing this overflow. If a
this benchmark is run it will trigger an overflow error today:

    #[bench]
    fn foo(b: &mut test::Bencher) {}

This commit adds a check on each iteration of the loop that the maximum
multiplier (10) doesn't overflow, and if it does just return the results so far.
2015-03-08 08:34:56 +00:00
Ryan Prichard
52124d7c80 Fix #23166. Get the Compiler Plugins example compiling again.
* "let met text" was previously of &String type.  Now it is of &str type.

 * Update the slicing syntax.  Both &text[] and text.slice_from() evaluate
   to a &str.

 * We were passing a u32 to expr_usize.  Call expr_u32 instead.
2015-03-07 22:58:28 -08:00
bors
d30609ffd7 Auto merge of #23160 - rprichard:fix-numtest-assert, r=brson
The previous code was passing "true" as the panic! error value.
2015-03-08 05:20:17 +00:00
bors
97ca2a1ee9 Auto merge of #23145 - semarie:openbsd-5806, r=alexcrichton
follow freebsd due to last deprecation of `std::old_io::fs`
2015-03-08 01:43:22 +00:00
Ryan Prichard
4a0c7ebc87 Use assert_eq! rather than assert!
The previous code was passing "true" as the panic! error value.
2015-03-07 16:53:01 -08:00
Manish Goregaokar
f81f8d81d3 Register new snapshots (270a677) 2015-03-08 00:36:56 +05:30
bors
668c647408 Auto merge of #23137 - kmcallister:derive-sugar, r=sfackler
This is a hack, but I don't think we can do much better as long as `derive` is running at the syntax expansion phase.

If the `custom_derive` feature gate is enabled, this works with user-defined traits and syntax extensions. Without the gate, you can't use e.g. `#[derive_Clone]` directly, so this does not change the stable language.

To make this effective, we now check gated attributes both before and after macro expansion. This uncovered a number of tests that were missing feature gates.

This PR also cleans up the deriving code somewhat, and forbids some previously-meaningless attribute syntax. For this reason it's technically a

    [breaking-change]

r? @sfackler
2015-03-07 18:39:17 +00:00
Kang Seonghoon
a3e4a1617b rustdoc: Fixed an asynchronous loading of rustdoc sidebars.
We require the *deferred* loading, not just an opportunistic
asynchronous loading. I think `<script defer>` is safe to use,
according to <http://caniuse.com/#feat=script-defer>.
2015-03-07 23:01:31 +09:00
Sébastien Marie
17d5acc4a0 disable test for issue-5806 on openbsd
follow freebsd due to last deprecation of std::old_io::fs
2015-03-07 13:40:35 +01:00
FuGangqiang
ae7dce674e indicate from_str_radix is code 2015-03-07 18:03:38 +08:00
bors
36cd65f786 Auto merge of #22549 - steveklabnik:doc_documentation, r=huonw
This chapter covers writing documentation in depth.

Fixes #4361
Fixes #12862
Fixes #14070
Fixes #14967
2015-03-07 10:01:13 +00:00
bors
098daa1d7f Auto merge of #23132 - alexcrichton:remove-deprecated-unicode-escapes, r=huonw
These have been deprecated for quite some time, so we should be good to remove
them now.
2015-03-07 06:48:45 +00:00
Alex Crichton
aed31ee08e Test fixes and rebase conflicts 2015-03-06 19:27:36 -08:00
Keegan McAllister
491054f08e Make #[derive(Anything)] into sugar for #[derive_Anything]
This is a hack, but I don't think we can do much better as long as `derive` is
running at the syntax expansion phase.

If the custom_derive feature gate is enabled, this works with user-defined
traits and syntax extensions. Without the gate, you can't use e.g. #[derive_Clone]
directly, so this does not change the stable language.

This commit also cleans up the deriving code somewhat, and forbids some
previously-meaningless attribute syntax. For this reason it's technically a

    [breaking-change]
2015-03-06 18:20:16 -08:00
Keegan McAllister
e60e6f0693 Check gated attributes before and after macro expansion
This is important because attributes can affect expansion.
2015-03-06 17:15:19 -08:00
Alex Crichton
11ddfb8af0 rollup merge of #23124: brson/oldtests 2015-03-06 15:38:09 -08:00
Alex Crichton
bc409cbb4c rollup merge of #23117: japaric/default-impl
fixes #23080

r? @nikomatsakis
cc @FlaPer87
2015-03-06 15:38:06 -08:00
Alex Crichton
3c2c516d0c rollup merge of #23097: alexcrichton/issue-23076
The `rsplitn` call was called with 2 instead of 1 so the iterator would yield 3
items in some cases, not the 2 that it should have.

Closes #23076
2015-03-06 15:37:56 -08:00
Alex Crichton
31af63748b rollup merge of #23091: japaric/phantom
r? @nikomatsakis See the cfail test, it compiles without this patch
cc #13231
2015-03-06 15:37:51 -08:00
Alex Crichton
697de42f69 rollup merge of #23087: nagisa/std-undeadlock
Being a person who somehow has taken a liking to premature optimisation, my knee-jerk reaction to
locking in std handles was preamble resembling following snippet:

    let stdout = stdout();
    let lstdout = stdout.lock();
    let stdin = stdin();
    let lstdin = stdin.lock();

and then reading from the locked handle like this:

    let mut letter = [0; 1];
    lstdin.read(&mut letter).unwrap();

As it is now this code will deadlock because the `read` method attempts to lock stdout as well!

r? @alexcrichton

---

Either way, I find flushing stdout when stdin is used debatable. I believe people who write prompts should take care to flush stdout when necessary themselves.

Another idea: Would be cool if locks on std handles would be taken for a thread, rather than a handle, so given preamble (first code snippet)

    stdin.lock()

or more generally

    stdin.read(…)

worked fine. I.e. if more than a single lock are all taken inside the same thread, it would work, though not sure if our synchronisation primitives are expressive enough to make it possible.
2015-03-06 15:37:47 -08:00
Alex Crichton
2bd02ca837 rollup merge of #22975: alexcrichton/stabilize-ffi
Conflicts:
	src/librustc_trans/back/link.rs
	src/librustc_trans/lib.rs
2015-03-06 15:37:14 -08:00
Alex Crichton
fd86a01bb9 rollup merge of #22813: alexcrichton/deprecate-net
The `std::net` primitives should be ready for use now and as a result the old
ones are now deprecated and slated for removal. Most TCP/UDP functionality is
now available through `std::net` but the `std::old_io::net::pipe` module is
removed entirely from the standard library.

Unix socket funtionality can be found in sfackler's [`unix_socket`][unix] crate
and there is currently no replacement for named pipes on Windows.

[unix]: https://crates.io/crates/unix_socket

[breaking-change]
2015-03-06 15:36:08 -08:00
Niko Matsakis
4e789e03be Remove the coherence impls pass that was specialized to builtin bounds,
since there are separate checks that apply to Copy (and Send uses the
generic defaulted trait rules). Also prohibit `Sized` from being
manually implemented for now.
2015-03-06 18:27:50 -05:00
Niko Matsakis
2e216896e4 Add stricter orphan rules for cross-crate impls of default traits. 2015-03-06 18:27:50 -05:00
Niko Matsakis
dbec033e29 Change the data structures for tracking defaulted traits. In the tcx, we
now have a simple set of trait def-ids. During coherence, we use a
separate table to track the default impls for any given trait so that we
can report a nice error. This fixes various bugs in the metadata
encoding that led to `ty::trait_has_default_impl` yielding the wrong
values in the cross-crate case. (In particular, default impl def-ids
were not included in the list of all impl def-ids; I debated fixing just
that, but this approach seemed cleaner overall, since we usually treat
the "defaulted" bit on traits as being a property of the trait, and now
iterating over a list of impls doesn't intermingle default impls with
normal impls.)
2015-03-06 18:27:50 -05:00
Alex Crichton
1a30412ebf Suppress some warnings about features 2015-03-06 15:11:59 -08:00
Keegan McAllister
63ee3fe566 Consolidate ExpansionConfig feature tests 2015-03-06 14:12:28 -08:00
Alex Crichton
39e2c69541 syntax: Remove deprecated unicode escapes
These have been deprecated for quite some time, so we should be good to remove
them now.
2015-03-06 14:11:09 -08:00
Alex Crichton
16ff1401d8 std: Ignore a test on windows
This test is known to fail on windows.
2015-03-06 13:55:06 -08:00
Alex Crichton
946a3963f3 test: Fix an overflow on empty benchmarks
Right now the rust upgrade in cargo is blocked on fixing this overflow. If a
this benchmark is run it will trigger an overflow error today:

    #[bench]
    fn foo(b: &mut test::Bencher) {}

This commit adds a check on each iteration of the loop that the maximum
multiplier (10) doesn't overflow, and if it does just return the results so far.
2015-03-06 12:01:23 -08:00
Alex Crichton
9aea749b83 std: Deprecate the std::old_io::net primitives
The `std::net` primitives should be ready for use now and as a result the old
ones are now deprecated and slated for removal. Most TCP/UDP functionality is
now available through `std::net` but the `std::old_io::net::pipe` module is
removed entirely from the standard library.

Unix socket funtionality can be found in sfackler's [`unix_socket`][unix] crate
and there is currently no replacement for named pipes on Windows.

[unix]: https://crates.io/crates/unix_socket

[breaking-change]
2015-03-06 10:27:28 -08:00
Brian Anderson
f7594e14b8 Remove two green threading tests 2015-03-06 10:10:47 -08:00
Dan Burkert
e8ed2d4150 Implement std::error::Error for std::sync::mpsc error types 2015-03-06 09:50:05 -08:00
Jorge Aparicio
8a391dd8cf move check into wf pass, add a test for assoc types 2015-03-06 12:37:28 -05:00
Manish Goregaokar
61c6b199bc BufferedWriter -> BufWriter (fixup #23060) 2015-03-06 22:22:39 +05:30
Manish Goregaokar
aaaa4310cc Rollup merge of #23100 - wesleywiser:fix_23059, r=brson
Fixes #23059
2015-03-06 22:22:38 +05:30
Manish Goregaokar
ae16afb9e3 Rollup merge of #23096 - posborne:paths-documentation-grammar-fix, r=huonw 2015-03-06 22:22:37 +05:30
Manish Goregaokar
a14d6a9052 Rollup merge of #23082 - killercup:patch-6, r=alexcrichton
This should fix #22615. Previously, the playpen links grabbed the content of all `.rusttest` containers on the same level to build the URL. Now they just select the one before the `pre` they are shown in.

I have only tested this by changing the file in my local build of the docs (not by running rustdoc itself).
2015-03-06 22:22:35 +05:30
Manish Goregaokar
babd41e5e7 Rollup merge of #23067 - oli-obk:doc_examle_fix, r=alexcrichton
The compiler even tells us this won't work.
```
let mut i = s.len();
while i < 0 { ... }
```
2015-03-06 22:22:34 +05:30
Manish Goregaokar
2fcdd824ef Rollup merge of #23056 - awlnx:master, r=nrc 2015-03-06 22:22:33 +05:30
Manish Goregaokar
ce2d04a77a Rollup merge of #23048 - davbo:fix-broken-link-in-old-guide, r=brson
Having come back to rust recently after > 6months I was looking for docs
on tasks and stumbled upon this broken link.
2015-03-06 22:22:32 +05:30
Manish Goregaokar
55087e78fa Rollup merge of #23045 - ctjhoa:master, r=Manishearth
r? @steveklabnik
2015-03-06 22:22:32 +05:30
Manish Goregaokar
417639885c Rollup merge of #23025 - huonw:better-iter-infer, r=Gankro
This concretely improves type inference of some cases (see included
test). I assume the compiler struggles to reason about multiple layers
of generic type parameters (even with associated-type equalities) but
*can* understand pure associated types, since they are always directly
computable from the input types.

Thanks to @shepmaster for noticing the issue with `Cloned` (I took that example as a test case).
2015-03-06 22:22:31 +05:30
Manish Goregaokar
7a2eea5808 Rollup merge of #23101 - laijs:fix-file-perm, r=alexcrichton
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
2015-03-06 22:22:30 +05:30
Manish Goregaokar
56e0229f9a Rollup merge of #23099 - brson:lint-cstack, r=alexcrichton 2015-03-06 22:22:29 +05:30
Manish Goregaokar
f2a1cf2cb4 Rollup merge of #23098 - brson:ignore-fast, r=alexcrichton 2015-03-06 22:22:28 +05:30
Jorge Aparicio
707f7a1617 Check that traits with default impls have no methods
fixes #23080
2015-03-06 08:50:34 -05:00
Simonas Kazlauskas
3f94260b0f Fix an easy to trigger deadlock in std::io::stdio
Being a person who somehow has taken a liking to premature optimisation, my knee-jerk reaction to
locking in std handles was preamble resembling following snippet:

    let stdout = stdout();
    let lstdout = stdout.lock();
    let stdin = stdin();
    let lstdin = stdin.lock();

and then reading from the locked handle like this:

    let mut letter = [0; 1];
    lstdin.read(&mut letter).unwrap();

As it is now this code will deadlock because the `read` method attempts to lock stdout as well!
2015-03-06 11:22:07 +02:00
bors
1fe8f22145 Auto merge of #22899 - huonw:macro-stability, r=alexcrichton
Unstable items used in a macro expansion will now always trigger
stability warnings, *unless* the unstable items are directly inside a
macro marked with `#[allow_internal_unstable]`. IOW, the compiler warns
unless the span of the unstable item is a subspan of the definition of a
macro marked with that attribute.

E.g.

    #[allow_internal_unstable]
    macro_rules! foo {
        ($e: expr) => {{
            $e;
            unstable(); // no warning
            only_called_by_foo!();
        }}
    }

    macro_rules! only_called_by_foo {
        () => { unstable() } // warning
    }

    foo!(unstable()) // warning

The unstable inside `foo` is fine, due to the attribute. But the
`unstable` inside `only_called_by_foo` is not, since that macro doesn't
have the attribute, and the `unstable` passed into `foo` is also not
fine since it isn't contained in the macro itself (that is, even though
it is only used directly in the macro).

In the process this makes the stability tracking much more precise,
e.g. previously `println!("{}", unstable())` got no warning, but now it
does. As such, this is a bug fix that may cause [breaking-change]s.

The attribute is definitely feature gated, since it explicitly allows
side-stepping the feature gating system.

---

This updates `thread_local!` macro to use the attribute, since it uses
unstable features internally (initialising a struct with unstable
fields).
2015-03-06 05:20:11 +00:00
Manish Goregaokar
4993fd0fdc Rollup merge of #23095 - stepancheg:test-bind-fail, r=alexcrichton
Bind on non-local IP address is essentially the same test, and it works
same way on all platforms.

Fixes #11530
2015-03-06 09:02:27 +05:30
Manish Goregaokar
0b7117b7a3 Rollup merge of #23090 - alexcrichton:dep-info, r=pnkfelix
Closes #23089
2015-03-06 09:02:08 +05:30
Manish Goregaokar
fe41c93560 Rollup merge of #23081 - alexcrichton:stabilize-fs, r=aturon
This commit performs a stabilization pass over the `std::fs` module now that
it's had some time to bake. The change was largely just adding `#[stable]` tags,
but there are a few APIs that remain `#[unstable]`.

The following apis are now marked `#[stable]`:

* `std::fs` (the name)
* `File`
* `Metadata`
* `ReadDir`
* `DirEntry`
* `OpenOptions`
* `Permissions`
* `File::{open, create}`
* `File::{sync_all, sync_data}`
* `File::set_len`
* `File::metadata`
* Trait implementations for `File` and `&File`
* `OpenOptions::new`
* `OpenOptions::{read, write, append, truncate, create}`
* `OpenOptions::open` - this function was modified, however, to not attempt to
  reject cross-platform openings of directories. This means that some platforms
  will succeed in opening a directory and others will fail.
* `Metadata::{is_dir, is_file, len, permissions}`
* `Permissions::{readonly, set_readonly}`
* `Iterator for ReadDir`
* `DirEntry::path`
* `remove_file` - like with `OpenOptions::open`, the extra windows code to
  remove a readonly file has been removed. This means that removing a readonly
  file will succeed on some platforms but fail on others.
* `metadata`
* `rename`
* `copy`
* `hard_link`
* `soft_link`
* `read_link`
* `create_dir`
* `create_dir_all`
* `remove_dir`
* `remove_dir_all`
* `read_dir`

The following apis remain `#[unstable]`.

* `WalkDir` and `walk` - there are many methods by which a directory walk can be
  constructed, and it's unclear whether the current semantics are the right
  ones. For example symlinks are not handled super well currently. This is now
  behind a new `fs_walk` feature.
* `File::path` - this is an extra abstraction which the standard library
  provides on top of what the system offers and it's unclear whether we should
  be doing so. This is now behind a new `file_path` feature.
* `Metadata::{accessed, modified}` - we do not currently have a good
  abstraction for a moment in time which is what these APIs should likely be
  returning, so these remain `#[unstable]` for now. These are now behind a new
  `fs_time` feature
* `set_file_times` - like with `Metadata::accessed`, we do not currently have
  the appropriate abstraction for the arguments here so this API remains
  unstable behind the `fs_time` feature gate.
* `PathExt` - the precise set of methods on this trait may change over time and
  some methods may be removed. This API remains unstable behind the `path_ext`
  feature gate.
* `set_permissions` - we may wish to expose a more granular ability to set the
  permissions on a file instead of just a blanket \"set all permissions\" method.
  This function remains behind the `fs` feature.

The following apis are now `#[deprecated]`

* The `TempDir` type is now entirely deprecated and is [located on
  crates.io][tempdir] as the `tempdir` crate with [its source][github] at
  rust-lang/tempdir.

[tempdir]: https://crates.io/crates/tempdir
[github]: https://github.com/rust-lang/tempdir

The stability of some of these APIs has been questioned over the past few weeks
in using these APIs, and it is intentional that the majority of APIs here are
marked `#[stable]`. The `std::fs` module has a lot of room to grow and the
material is [being tracked in a RFC issue][rfc-issue].

[rfc-issue]: rust-lang/rfcs#939

Closes #22879

[breaking-change]
2015-03-06 09:01:50 +05:30
Manish Goregaokar
c9063e0f98 Rollup merge of #23079 - alexcrichton:deprecate-process, r=aturon
This module is now superseded by the `std::process` module. This module still
has some room to expand to get quite back up to parity with the `old_io`
version, and there is a [tracking issue][issue] for feature requests as well as
known room for expansion.

[issue]: https://github.com/rust-lang/rfcs/issues/941
[breaking-change]
2015-03-06 09:01:37 +05:30
Manish Goregaokar
d77fc9fefc Rollup merge of #23074 - michaelwoerister:constants-debug-locs, r=alexcrichton
With this PR in-place constants are handled correctly with respect to debug location assignment.
The PR also adds an (unrelated) test case for debug locations in `extern \"C\"` functions.

Fixes #22432
2015-03-06 09:01:23 +05:30
Manish Goregaokar
c39833ed2d Rollup merge of #23070 - krdln:fix-stat-arm, r=alexcrichton
This separates definitions of struct stat and other typedefs between Android and Linux on ARM (Android has a non-standard one). This makes functions such as `File::metadata()` work correctly and makes one able to check file's size. All tests from std (and also run-pass: stat.rs) now pass on ARM Linux. Fixes #20007.
2015-03-06 09:00:34 +05:30
Manish Goregaokar
7a12c038a5 Rollup merge of #23060 - lifthrasiir:rustdoc-sidebar-in-js, r=alexcrichton
It had been a source of huge bloat in rustdoc outputs. Of course, we can simply disable compiler docs (as `rustc` generates over 90M of HTML) but this approach fares better even after such decision.

Each directory now has `sidebar-items.js`, which immediately calls `initSidebarItems` with a JSON sidebar data. This file is shared throughout every item in the sidebar. The current item is highlighted via a separate JS snippet (`window.sidebarCurrent`). The JS file is designed to be loaded asynchronously, as the sidebar is rendered before the content and slow sidebar loading blocks the entire rendering. For the minimal accessibility without JS, links to the parent items are left in HTML.

In the future, it might also be possible to integrate crates data with the same fashion: `sidebar-items.js` at the root path will do that. (Currently rustdoc skips writing JS in that case.)

This has a huge impact on the size of rustdoc outputs. Originally it was 326MB uncompressed (37.7MB gzipped, 6.1MB xz compressed); it is 169MB uncompressed (11.9MB gzipped, 5.9MB xz compressed) now. The sidebar JS only takes 10MB uncompressed & 0.3MB gzipped.
2015-03-06 08:59:13 +05:30