]> git.lizzy.rs Git - rust.git/log
rust.git
9 years agoReference the correct issue
Tamir Duberstein [Wed, 29 Apr 2015 21:22:54 +0000 (14:22 -0700)]
Reference the correct issue

The problem here is that this test doesn't even compile for Android.

See #24958.

9 years agoAuto merge of #24932 - pnkfelix:fix-issue-24687, r=huonw
bors [Wed, 29 Apr 2015 10:40:03 +0000 (10:40 +0000)]
Auto merge of #24932 - pnkfelix:fix-issue-24687, r=huonw

metdata: Fix zero-normalization of the pos of a `MultiByteChar`

Fix #24687

The source byte/character mappings for every crate track the collection of multi-characters from its source files specially.  When we import the source information for another file into the current compilation unit, we assign its byte-positions unique values by shifting them all by a fixed adjustment, tracked in the `start_pos` field.  But when we pull out the source span information for one function from one crate and into our own crate, we need to re-normalize the byte positions: subtracting the old `start_pos` and adding the new `start_pos`. The `new_imported_filemap(..)` method handles adding the new `start_pos`, so all `creader` needs to do is re-normalize each `pos` to zero.

It seems like it was indeed trying to do this, but it mistakenly added the old `start_pos` instead of subtracting it.

9 years agoRegression test for issue 24687.
Felix S. Klock II [Wed, 29 Apr 2015 08:21:47 +0000 (10:21 +0200)]
Regression test for issue 24687.

use visible characters for the multibyte character filler.

9 years agoFix zero-normalization of the pos of a `MultiByteChar`.
Felix S. Klock II [Wed, 29 Apr 2015 08:21:29 +0000 (10:21 +0200)]
Fix zero-normalization of the pos of a `MultiByteChar`.

Fix #24687

9 years agoAuto merge of #24893 - robinst:issue-24407-E0013, r=nrc
bors [Wed, 29 Apr 2015 07:37:58 +0000 (07:37 +0000)]
Auto merge of #24893 - robinst:issue-24407-E0013, r=nrc

Part of #24407.

9 years agoAuto merge of #24681 - tamird:unignore-android, r=alexcrichton
bors [Wed, 29 Apr 2015 04:09:45 +0000 (04:09 +0000)]
Auto merge of #24681 - tamird:unignore-android, r=alexcrichton

There are still quite a few ignored Android tests kicking around, most of which were added in 445faca8441aae34c91318b6ad9e2049885af8dc, which has a pretty unfortunate commit message.

r? @alexcrichton

9 years agoAuto merge of #24888 - tamird:snapshot, r=alexcrichton
bors [Wed, 29 Apr 2015 02:16:01 +0000 (02:16 +0000)]
Auto merge of #24888 - tamird:snapshot, r=alexcrichton

r? @alexcrichton cc @brson

9 years agoReference the correct issue
Tamir Duberstein [Wed, 22 Apr 2015 05:10:47 +0000 (22:10 -0700)]
Reference the correct issue

9 years ago#10356: Warnings
Tamir Duberstein [Wed, 22 Apr 2015 05:10:22 +0000 (22:10 -0700)]
#10356: Warnings

9 years ago#10381: Warnings
Tamir Duberstein [Wed, 22 Apr 2015 04:53:07 +0000 (21:53 -0700)]
#10381: Warnings

9 years agoReference the correct issue and clarify failure
Tamir Duberstein [Wed, 22 Apr 2015 04:28:46 +0000 (21:28 -0700)]
Reference the correct issue and clarify failure

9 years ago#10393 & #13206: Warnings
Tamir Duberstein [Wed, 22 Apr 2015 04:27:29 +0000 (21:27 -0700)]
#10393 & #13206: Warnings

9 years agoRegister new snapshots
Tamir Duberstein [Mon, 27 Apr 2015 21:10:49 +0000 (14:10 -0700)]
Register new snapshots

9 years agoAuto merge of #24865 - bluss:range-size, r=alexcrichton
bors [Wed, 29 Apr 2015 00:15:22 +0000 (00:15 +0000)]
Auto merge of #24865 - bluss:range-size, r=alexcrichton

core: Fix size_hint for signed integer `Range<T>` iterators

There was an overflow bug in .size_hint() for signed iterators, which
produced an hilariously incorrect size or an overflow panic.

Incorrect size is a serious bug since the iterators are marked
ExactSizeIterator. (And leads to abort() on (-1i8..127).collect() when
the collection tries to preallocate too much).

> (-1i8..127).size_hint()
(18446744073709551488, Some(18446744073709551488))

Bug found using quickcheck.

Fixes #24851

9 years agoAuto merge of #24781 - bluss:vec-drain-range, r=alexcrichton
bors [Tue, 28 Apr 2015 22:13:42 +0000 (22:13 +0000)]
Auto merge of #24781 - bluss:vec-drain-range, r=alexcrichton

Implement Vec::drain(\<range type\>) from rust-lang/rfcs#574, tracking issue #23055.

This is a big step forward for vector usability. This is an introduction of an API for removing a range of *m* consecutive elements from a vector, as efficently as possible.

New features:

- Introduce trait `std::collections::range::RangeArgument` implemented by all four built-in range types.
- Change `Vec::drain()` to use `Vec::drain<R: RangeArgument>(R)`

Implementation notes:

- Use @Gankro's idea for memory safety: Use `set_len` on the source vector when creating the iterator, to make sure that the part of the vector that will be modified is unreachable. Fix up things in Drain's destructor — but even if it doesn't run, we don't expose any moved-out-from slots of the vector.
- This `.drain<R>(R)` very close to how it is specified in the RFC.
- Introduced as unstable
- Drain reuses the slice iterator — copying and pasting the same iterator pointer arithmetic again felt very bad
- The `usize` index as a range argument in the RFC is not included. The ranges trait would have to change to accomodate it.

Please help me with:

- Name and location of the new ranges trait.
- Design of the ranges trait
- Understanding Niko's comments about variance (Note: for a long time I was using a straight up &mut Vec in the iterator, but I changed this to permit reusing the slice iterator).

Previous PR and discussion: #23071

9 years agoAuto merge of #24777 - alexcrichton:musl, r=brson
bors [Tue, 28 Apr 2015 20:12:59 +0000 (20:12 +0000)]
Auto merge of #24777 - alexcrichton:musl, r=brson

These commits build on [some great work on reddit](http://www.reddit.com/r/rust/comments/33boew/weekend_experiment_link_rust_programs_against/) for adding MUSL support to the compiler. This goal of this PR is to enable a `--target x86_64-unknown-linux-musl` argument to the compiler to work A-OK. The outcome here is that there are 0 compile-time dependencies for a MUSL-targeting build *except for a linker*. Currently this also assumes that MUSL is being used for statically linked binaries so there is no support for dynamically linked binaries with MUSL.

MUSL support largely just entailed munging around with the linker and where libs are located, and the major highlights are:

* The entirety of `libc.a` is included in `liblibc.rlib` (statically included as an archive).
* The entirety of `libunwind.a` is included in `libstd.rlib` (like with liblibc).
* The target specification for MUSL passes a number of ... flavorful options! Each option is documented in the relevant commit.
* The entire test suite currently passes with MUSL as a target, except for:
  * Dynamic linking tests are all ignored as it's not supported with MUSL
  * Stack overflow detection is not working MUSL yet (I'm not sure why)
* There is a language change included in this PR to add a `target_env` `#[cfg]` directive. This is used to conditionally build code for only MUSL (or for linux distros not MUSL). I highly suspect that this will also be used by Windows to target MSVC instead of a MinGW-based toolchain.

To build a compiler targeting MUSL you need to follow these steps:

1. Clone the current MUSL repo from `git://git.musl-libc.org/musl`. Build this as usual and install it.
2. Clone and build LLVM's [libcxxabi](http://libcxxabi.llvm.org/) library. Only the `libunwind.a` artifact is needed. I have tried using upstream libunwind's source repo but I have not gotten unwinding to work with it unfortunately. Move `libunwind.a` adjacent to MUSL's `libc.a`
3. Configure a Rust checkout with `--target=x86_64-unknown-linux-musl --musl-root=$MUSL_ROOT` where `MUSL_ROOT` is where you installed MUSL in step 1.

I hope to improve building a copy of libunwind as it's still a little sketchy and difficult to do today, but other than that everything should "just work"! This PR is not intended to include 100% comprehensive support for MUSL, as future modifications will probably be necessary.

9 years agoAuto merge of #24906 - pnkfelix:fsk-fix-24895, r=alexcrichton
bors [Tue, 28 Apr 2015 17:12:36 +0000 (17:12 +0000)]
Auto merge of #24906 - pnkfelix:fsk-fix-24895, r=alexcrichton

dropck: Remove `Copy` from special-cased traits

Fix #24895.

[breaking-change]

What does this break?  Basically, code that implements `Drop` and is
using `T:Copy` for one of its type parameters and is relying on the
Drop Check rule not applying to it.

Here is an example:

```rust
#![allow(dead_code,unused_variables,unused_assignments)]
struct D<T:Copy>(T);
impl<T:Copy> Drop for D<T> { fn drop(&mut self) { } }

trait UserT { fn c(&self) { } }
impl<T:Copy> UserT for T { }
struct E<T:UserT>(T);
impl<T:UserT> Drop for E<T> { fn drop(&mut self) { } }

// This one will start breaking.
fn foo() { let (d2, d1); d1 = D(34); d2 = D(&d1); }

#[cfg(this_one_does_and_should_always_break)]
fn bar() { let (e2, e1); e1 = E(34); e2 = E(&e1); }

fn main() {
    foo();
}
```

9 years agotest: Fix some tests to run with musl
Alex Crichton [Fri, 24 Apr 2015 01:41:37 +0000 (18:41 -0700)]
test: Fix some tests to run with musl

There were a few test cases to fix:

* Dynamic libraries are not supported with MUSL right now, so all of those
  related test which force or require dylibs are ignored.
* Looks like the default stack for MUSL is smaller than glibc, so a few stack
  allocations in benchmarks were boxed up (shouldn't have a perf impact).
* Some small linkage tweaks here and there
* Out-of-stack detection does not currently work with MUSL

9 years agoregression test for Issue 24895.
Felix S. Klock II [Tue, 28 Apr 2015 15:51:08 +0000 (17:51 +0200)]
regression test for Issue 24895.

9 years agoFix #24895.
Felix S. Klock II [Tue, 28 Apr 2015 15:47:16 +0000 (17:47 +0200)]
Fix #24895.

[breaking-change]

What does this break?  Basically, code that implements `Drop` and is
using `T:Copy` for one of its type parameters and is relying on the
Drop Check rule not applying to it.

Here is an example:

```rust
#![allow(dead_code,unused_variables,unused_assignments)]
struct D<T:Copy>(T);
impl<T:Copy> Drop for D<T> { fn drop(&mut self) { } }

trait UserT { fn c(&self) { } }
impl<T:Copy> UserT for T { }
struct E<T:UserT>(T);
impl<T:UserT> Drop for E<T> { fn drop(&mut self) { } }

// This one will start breaking.
fn foo() { let (d2, d1); d1 = D(34); d2 = D(&d1); }

#[cfg(this_one_does_and_should_always_break)]
fn bar() { let (e2, e1); e1 = E(34); e2 = E(&e1); }

fn main() {
    foo();
}
```

9 years agoAuto merge of #24891 - tcard:patch-1, r=steveklabnik
bors [Tue, 28 Apr 2015 14:21:22 +0000 (14:21 +0000)]
Auto merge of #24891 - tcard:patch-1, r=steveklabnik

`Type` should be `Trait` to match the next example line.

r? @steveklabnik

9 years agoAdd error explanation for E0013
Robin Stocker [Tue, 28 Apr 2015 09:49:09 +0000 (19:49 +1000)]
Add error explanation for E0013

9 years agocollections: Implement vec::drain(range) according to RFC 574
Ulrik Sverdrup [Mon, 27 Apr 2015 17:37:13 +0000 (19:37 +0200)]
collections: Implement vec::drain(range) according to RFC 574

Old `.drain()` on vec is performed using `.drain(..)` now.

`.drain(range)` is unstable and under feature(collections_drain)

[breaking-change]

9 years agoTRPL: Tiny incoherence in UFCS example.
Toni Cárdenas [Tue, 28 Apr 2015 09:10:01 +0000 (11:10 +0200)]
TRPL: Tiny incoherence in UFCS example.

`Type` should be `Trait` to match the next example line.

r? @steveklabnik

9 years agoAuto merge of #24835 - rprichard:rfail-full, r=alexcrichton
bors [Tue, 28 Apr 2015 05:37:48 +0000 (05:37 +0000)]
Auto merge of #24835 - rprichard:rfail-full, r=alexcrichton

This commit gets `make check-stage1` working again after #24718.

cc @tamird

r? @alexcrichton

9 years agoAuto merge of #24478 - alexcrichton:issue-24313, r=aturon
bors [Tue, 28 Apr 2015 00:44:56 +0000 (00:44 +0000)]
Auto merge of #24478 - alexcrichton:issue-24313, r=aturon

Inspecting the current thread's info may not always work due to the TLS value
having been destroyed (or is actively being destroyed). The code for printing
a panic message assumed, however, that it could acquire the thread's name
through this method.

Instead this commit propagates the `Option` outwards to allow the
`std::panicking` module to handle the case where the current thread isn't
present.

While it solves the immediate issue of #24313, there is still another underlying
issue of panicking destructors in thread locals will abort the process.

Closes #24313

9 years agostd: Don't assume thread::current() works on panic
Alex Crichton [Wed, 15 Apr 2015 19:27:05 +0000 (12:27 -0700)]
std: Don't assume thread::current() works on panic

Inspecting the current thread's info may not always work due to the TLS value
having been destroyed (or is actively being destroyed). The code for printing
a panic message assumed, however, that it could acquire the thread's name
through this method.

Instead this commit propagates the `Option` outwards to allow the
`std::panicking` module to handle the case where the current thread isn't
present.

While it solves the immediate issue of #24313, there is still another underlying
issue of panicking destructors in thread locals will abort the process.

Closes #24313

9 years agoAuto merge of #24701 - Stebalien:slice, r=alexcrichton
bors [Mon, 27 Apr 2015 22:46:48 +0000 (22:46 +0000)]
Auto merge of #24701 - Stebalien:slice, r=alexcrichton

Instead of using the O(n) defaults, define O(1) shortcuts. I also copied (and slightly modified) the relevant tests from the iter tests into the slice tests just in case someone comes along and changes them in the future.

Partially implements  #24214.

9 years agostd: Clean up some annotations in thread::local
Alex Crichton [Wed, 15 Apr 2015 19:26:27 +0000 (12:26 -0700)]
std: Clean up some annotations in thread::local

Don't need so much manual #[doc(hidden)] and #[unstable] as much of it is
inherited!

9 years agoAuto merge of #24765 - pnkfelix:fsk-enum-swapindrop, r=nikomatsakis
bors [Mon, 27 Apr 2015 20:46:48 +0000 (20:46 +0000)]
Auto merge of #24765 - pnkfelix:fsk-enum-swapindrop, r=nikomatsakis

Inspect enum discriminant *after* calling its destructor

Includes some drive-by cleanup (e.g. changed some field and method names to reflect fill-on-drop; added comments about zero-variant enums being classified as `_match::Single`).

Probably the most invasive change was the expansion of the maps `available_drop_glues` and `drop_glues` to now hold two different kinds of drop glues; there is the (old) normal drop glue, and there is (new) drop-contents glue that jumps straight to dropping the contents of a struct or enum, skipping its destructor.

 * For all types that do not have user-defined Drop implementations, the normal glue is generated as usual (i.e. recursively dropping the fields of the data structure).

  (And this actually is exactly what the newly-added drop-contents glue does as well.)

 * For types that have user-defined Drop implementations, the "normal" drop glue now schedules a cleanup before invoking the `Drop::drop` method that will call the drop-contents glue after that invocation returns.

Fix #23611.

----

Is this a breaking change?  The prior behavior was totally unsound, and it seems unreasonable that anyone was actually relying on it.

Nonetheless, since there is a user-visible change to the language semantics, I guess I will conservatively mark this as a:

[breaking-change]

(To see an example of what sort of user-visible change this causes, see the comments in the regression test.)

9 years agocore: Fix size_hint for signed integer Range<T> iterators
Ulrik Sverdrup [Mon, 27 Apr 2015 11:27:24 +0000 (13:27 +0200)]
core: Fix size_hint for signed integer Range<T> iterators

There was an overflow bug in .size_hint() for signed iterators, which
produced an hilariously incorrect size or an overflow panic.

Incorrect size is a serious bug since the iterators are marked
ExactSizeIterator. (And leads to abort() on (-1i8..127).collect() when
the collection tries to preallocate too much).

All signed range iterators were affected.

> (-1i8..127).size_hint()
(18446744073709551488, Some(18446744073709551488))

Bug found using quickcheck.

Fixes #24851

9 years agocollections: Add trait RangeArgument
Ulrik Sverdrup [Mon, 27 Apr 2015 17:37:13 +0000 (19:37 +0200)]
collections: Add trait RangeArgument

RangeArgument is introduced as unstable under the
feature(collections_range)

9 years agocompiletest: Add support for `// ignore-musl`
Alex Crichton [Fri, 24 Apr 2015 01:40:54 +0000 (18:40 -0700)]
compiletest: Add support for `// ignore-musl`

Add the ability to ignore a test based on the environment of the triple being
used.

9 years agostd: Don't assume dlopen() works on yourself
Alex Crichton [Wed, 22 Apr 2015 03:01:34 +0000 (20:01 -0700)]
std: Don't assume dlopen() works on yourself

Statically linked executables do not succeed (aka MUSL-based executables).

9 years agocompiletest: Don't force dylibs on musl
Alex Crichton [Wed, 22 Apr 2015 03:00:55 +0000 (20:00 -0700)]
compiletest: Don't force dylibs on musl

MUSL support is currently only with static builds, so building a dylib will
always fail.

9 years agostd: Prepare for linking to musl
Alex Crichton [Tue, 21 Apr 2015 22:56:55 +0000 (15:56 -0700)]
std: Prepare for linking to musl

This commit modifies the standard library and its dependencies to link correctly
when built against MUSL. This primarily ensures that the right libraries are
linked against and when they're linked against they're linked against
statically.

9 years agorustc: Add support for linking arbitrary objects
Alex Crichton [Wed, 22 Apr 2015 01:00:16 +0000 (18:00 -0700)]
rustc: Add support for linking arbitrary objects

MUSL for example provides its own start/end objects in place of the standard
ones shipped by gcc.

9 years agorustc_back: Add x86_64-unknown-linux-musl as a target
Alex Crichton [Tue, 21 Apr 2015 22:59:32 +0000 (15:59 -0700)]
rustc_back: Add x86_64-unknown-linux-musl as a target

This commit adds support for x86_64-unknown-linux-musl as a target of the
compiler. There's some comments in the commit about some of the more flavorful
flags passed to the linker as it's not quite as trivial as the normal specs.

9 years agomk: Add support for musl-based builds
Alex Crichton [Tue, 21 Apr 2015 22:42:05 +0000 (15:42 -0700)]
mk: Add support for musl-based builds

This commit adds support to the makefiles, configuration script, and build
system to understand MUSL. This is broken up into a few parts:

* Any target of the form `*-musl` requires the `--musl-root` option to
  `./configure` which will indicate the root of the MUSL installation. It is
  also expected that there is a libunwind build inside of that installation
  built against that MUSL.

* Objects from MUSL are copied into the build tree for Rust to be statically
  linked into the appropriate Rust library.

* Objects for binary startup and shutdown are included in each Rust installation
  by default for MUSL. This requires MUSL to only be installed on the machine
  compiling rust. Only a linker will be necessary for compiling against MUSL on
  a target machine.

Eventually a MUSL and/or libunwind build may be integrated by default into the
build but for now they are just always assumed to exist externally.

9 years agoAuto merge of #23606 - quantheory:associated_const, r=nikomatsakis
bors [Mon, 27 Apr 2015 16:45:21 +0000 (16:45 +0000)]
Auto merge of #23606 - quantheory:associated_const, r=nikomatsakis

Closes #17841.

The majority of the work should be done, e.g. trait and inherent impls, different forms of UFCS syntax, defaults, and cross-crate usage. It's probably enough to replace the constants in `f32`, `i8`, and so on, or close to good enough.

There is still some significant functionality missing from this commit:

 - ~~Associated consts can't be used in match patterns at all. This is simply because I haven't updated the relevant bits in the parser or `resolve`, but it's *probably* not hard to get working.~~
 - Since you can't select an impl for trait-associated consts until partway through type-checking, there are some problems with code that assumes that you can check constants earlier. Associated consts that are not in inherent impls cause ICEs if you try to use them in array sizes or match ranges. For similar reasons, `check_static_recursion` doesn't check them properly, so the stack goes ka-blooey if you use an associated constant that's recursively defined. That's a bit trickier to solve; I'm not entirely sure what the best approach is yet.
 - Dealing with consts associated with type parameters will raise some new issues (e.g. if you have a `T: Int` type parameter and want to use `<T>::ZERO`). See rust-lang/rfcs#865.
 - ~~Unused associated consts don't seem to trigger the `dead_code` lint when they should. Probably easy to fix.~~

Also, this is the first time I've been spelunking in rustc to such a large extent, so I've probably done some silly things in a couple of places.

9 years agorustc: Add target_env for triples by default
Alex Crichton [Tue, 21 Apr 2015 22:53:32 +0000 (15:53 -0700)]
rustc: Add target_env for triples by default

This adds a new `#[cfg]` matcher against the `target_env` property of the
destination target triple. For example all windows triples today end with `-gnu`
but we will also hopefully support non-`gnu` targets for Windows, at which point
we'll need to differentiate between the two. This new `target_env` matches is
provided and filled in with the target's environment name.

Currently the only non-empty value of this name is `gnu`, but `musl` will be
shortly added for the linux triples.

9 years agomk: Remove a bunch of unused directives
Alex Crichton [Tue, 21 Apr 2015 22:38:00 +0000 (15:38 -0700)]
mk: Remove a bunch of unused directives

9 years agoAuto merge of #24869 - steveklabnik:rollup, r=steveklabnik
bors [Mon, 27 Apr 2015 14:45:43 +0000 (14:45 +0000)]
Auto merge of #24869 - steveklabnik:rollup, r=steveklabnik

- Successful merges: #24797, #24804, #24848, #24854, #24855, #24860, #24863, #24866, #24867, #24868
- Failed merges:

9 years agoRollup merge of #24868 - tshepang:fix-vec-remove-doc, r=steveklabnik
Steve Klabnik [Mon, 27 Apr 2015 14:26:20 +0000 (10:26 -0400)]
Rollup merge of #24868 - tshepang:fix-vec-remove-doc, r=steveklabnik

9 years agoRollup merge of #24867 - tshepang:patch-3, r=steveklabnik
Steve Klabnik [Mon, 27 Apr 2015 14:26:20 +0000 (10:26 -0400)]
Rollup merge of #24867 - tshepang:patch-3, r=steveklabnik

9 years agoRollup merge of #24866 - tshepang:vec-intro, r=steveklabnik
Steve Klabnik [Mon, 27 Apr 2015 14:26:20 +0000 (10:26 -0400)]
Rollup merge of #24866 - tshepang:vec-intro, r=steveklabnik

9 years agoRollup merge of #24863 - dhardy:patch-1, r=steveklabnik
Steve Klabnik [Mon, 27 Apr 2015 14:26:19 +0000 (10:26 -0400)]
Rollup merge of #24863 - dhardy:patch-1, r=steveklabnik

Remove the name "multi-line string literal" since the rule appears to affect each line-break individually rather than the whole string literal. Re-word, and remove the stray reference to raw strings.

9 years agoRollup merge of #24860 - Manishearth:cargo-doc, r=steveklabnik
Steve Klabnik [Mon, 27 Apr 2015 14:26:19 +0000 (10:26 -0400)]
Rollup merge of #24860 - Manishearth:cargo-doc, r=steveklabnik

A user in IRC was having trouble because they used `main.rs` when they were trying
to migrate a library. The `[[lib]]` key is not easily found, and the `main.rs`/`lib.rs`
distinction doesn't seem to exist in trpl

r? @steveklabnik

9 years agoRollup merge of #24855 - richo:thread-doc, r=alexcrichton
Steve Klabnik [Mon, 27 Apr 2015 14:26:19 +0000 (10:26 -0400)]
Rollup merge of #24855 - richo:thread-doc, r=alexcrichton

9 years agoRollup merge of #24854 - frewsxcv:patch-19, r=alexcrichton
Steve Klabnik [Mon, 27 Apr 2015 14:26:19 +0000 (10:26 -0400)]
Rollup merge of #24854 - frewsxcv:patch-19, r=alexcrichton

9 years agoRollup merge of #24848 - bluss:deref-string, r=alexcrichton
Steve Klabnik [Mon, 27 Apr 2015 14:26:18 +0000 (10:26 -0400)]
Rollup merge of #24848 - bluss:deref-string, r=alexcrichton

Improve example for as_string and add example for as_vec

Provide a better example of `as_string` / `DerefString`'s unique capabilities.
Use an example where (for an unspecified reason) you need a &String, and
show how `as_string` solves the problem without needing an allocation.

9 years agoRollup merge of #24804 - liigo:new-trait-color, r=steveklabnik
Steve Klabnik [Mon, 27 Apr 2015 14:26:18 +0000 (10:26 -0400)]
Rollup merge of #24804 - liigo:new-trait-color, r=steveklabnik

Fixes #24441

Preview:
![new-trait-color](https://cloud.githubusercontent.com/assets/346530/7331922/d6cbcf72-eb58-11e4-8a1d-4ca5e3683ed2.png)

9 years agoRollup merge of #24797 - roryokane:patch-1, r=nikomatsakis
Steve Klabnik [Mon, 27 Apr 2015 14:26:18 +0000 (10:26 -0400)]
Rollup merge of #24797 - roryokane:patch-1, r=nikomatsakis

The minus sign ‘−’ is the same width as the plus sign ‘+’, so the button’s transition between the two symbols will look slightly smoother.

If you don’t want to use literal Unicode characters, I can change ‘−’ to `\u2212`. I’m not starting with that suggestion because ‘−’ is easier to read and understand, and if I used `\u2212`, it would probably be necessary to also comment the usage on each line to explain what character is being used.

9 years agoBug fix: `Rvalue(ByRef)` will issue a lifetime_end as its post_store, which is wrong.
Felix S. Klock II [Mon, 27 Apr 2015 14:21:51 +0000 (16:21 +0200)]
Bug fix: `Rvalue(ByRef)` will issue a lifetime_end as its post_store, which is wrong.

Kudos to dotdash for tracking down this fix.

Presumably the use of `ByRef` was because this value is a reference to
the drop-flag; but an Lvalue will serve just as well for that. dotdash
argues:

> since the drop_flag is in its "final home", Lvalue seems to be the
> correct choice.

9 years agodoc: it is 'index', not 'i'
Tshepang Lekhonkhobe [Mon, 27 Apr 2015 14:11:46 +0000 (16:11 +0200)]
doc: it is 'index', not 'i'

9 years agodrive-by fix: scheduled drops are executed in reverse order.
Felix S. Klock II [Mon, 27 Apr 2015 14:08:30 +0000 (16:08 +0200)]
drive-by fix: scheduled drops are executed in reverse order.

That is, scheduled drops are executed in reverse order, so for
correctness, we *schedule* the lifetime end before we schedule the
drop, so that when they are executed, the drop will be executed
*before* the lifetime end.

9 years agoreference: block-comment -> block comment
Tshepang Lekhonkhobe [Mon, 27 Apr 2015 13:42:46 +0000 (15:42 +0200)]
reference: block-comment -> block comment

9 years agotrpl: clarify lib.rs vs main.rs
Manish Goregaokar [Mon, 27 Apr 2015 08:52:15 +0000 (14:22 +0530)]
trpl: clarify lib.rs vs main.rs

9 years agoAuto merge of #24834 - shepmaster:default-atomic-ptr, r=alexcrichton
bors [Mon, 27 Apr 2015 12:45:38 +0000 (12:45 +0000)]
Auto merge of #24834 - shepmaster:default-atomic-ptr, r=alexcrichton

Closes #24613

9 years agobook: improve Vec intro
Tshepang Lekhonkhobe [Mon, 27 Apr 2015 12:09:38 +0000 (14:09 +0200)]
book: improve Vec intro

9 years agoUpdate reference.md: floating-point section
Diggory Hardy [Mon, 27 Apr 2015 11:24:47 +0000 (12:24 +0100)]
Update reference.md: floating-point section

Clarify type inference of floating-point literals

9 years agoAuto merge of #24820 - bradking:fix-windows-process-spawn-command-line, r=alexcrichton
bors [Mon, 27 Apr 2015 10:49:11 +0000 (10:49 +0000)]
Auto merge of #24820 - bradking:fix-windows-process-spawn-command-line, r=alexcrichton

Fix `make_command_line` for the case of backslashes at the end of an
argument requiring quotes.  We must encode the command and arguments
such that `CommandLineToArgvW` recovers them in the spawned process.
Simplify the logic by using a running count of backslashes as they
are encountered instead of looking ahead for quotes following them.

Extend `test_make_command_line` to additionally cover:

* a leading quote in an argument that requires quotes,
* a backslash before a quote in an argument that requires quotes,
* a backslash at the end of an argument that requires quotes, and
* a backslash at the end of an argument that does not require quotes.

9 years agoUpdate reference.md: string literals section
Diggory Hardy [Mon, 27 Apr 2015 10:39:42 +0000 (11:39 +0100)]
Update reference.md: string literals section

Remove the name "multi-line string literal" since the rule appears to affect each line-break individually rather than the whole string literal. Re-word, and remove the stray reference to raw strings.

9 years agoChange literal minus ‘−’ to HTML entity ‘&minus;’
Rory O’Kane [Mon, 27 Apr 2015 06:41:45 +0000 (02:41 -0400)]
Change literal minus ‘−’ to HTML entity ‘&minus;’

So that if people accidentally delete the character, they won’t re-type it as a hyphen, which would cause bugs.

I changed ‘&plus;’ too, even though it won’t be re-typed incorrectly, so that it is easier to see when plus is used as a symbol for the button, and when it is used as an operator in code. It also makes it clearer that the use of an entity for minus is on purpose, so people won’t be tempted to replace the entity incorrectly with a hyphen character.

9 years agoChange hyphen to minus in HTML template too
Rory O’Kane [Mon, 27 Apr 2015 06:26:58 +0000 (02:26 -0400)]
Change hyphen to minus in HTML template too

9 years agoAuto merge of #24849 - gareins:master, r=steveklabnik
bors [Mon, 27 Apr 2015 04:35:27 +0000 (04:35 +0000)]
Auto merge of #24849 - gareins:master, r=steveklabnik

Previous borrow() is enough to make borrow_mut() panic, no need to have borrow_mut() twice. [This](http://is.gd/woKKAW)

9 years agothread: right now you can't actually set those printers
Richo Healey [Mon, 27 Apr 2015 04:17:14 +0000 (21:17 -0700)]
thread: right now you can't actually set those printers

9 years agoMake From::from example more idiomatic / simpler
Corey Farwell [Mon, 27 Apr 2015 03:18:19 +0000 (23:18 -0400)]
Make From::from example more idiomatic / simpler

9 years agoAuto merge of #24844 - diwic:patch-1, r=steveklabnik
bors [Mon, 27 Apr 2015 02:35:32 +0000 (02:35 +0000)]
Auto merge of #24844 - diwic:patch-1, r=steveklabnik

I figure I'd start easy with fixing a simple documentation bug. This is also a test to see that I got everything right w r t the fork/pull request process.

9 years agocollections: Improve example for as_string and as_vec
Ulrik Sverdrup [Sun, 26 Apr 2015 20:13:58 +0000 (22:13 +0200)]
collections: Improve example for as_string and as_vec

9 years agoAuto merge of #24850 - frewsxcv:patch-18, r=steveklabnik
bors [Sun, 26 Apr 2015 23:25:37 +0000 (23:25 +0000)]
Auto merge of #24850 - frewsxcv:patch-18, r=steveklabnik

9 years agoIndicate function call is code-like in doc-comment
Corey Farwell [Sun, 26 Apr 2015 21:41:16 +0000 (17:41 -0400)]
Indicate function call is code-like in doc-comment

9 years agoIMO better borrow_mut() documentation on RefCell
gareins [Sun, 26 Apr 2015 21:16:49 +0000 (23:16 +0200)]
IMO better borrow_mut() documentation on RefCell

Previous borrow() is enough to make borrow_mut() panic, no need to have borrow_mut() twice. [This](http://is.gd/woKKAW)

9 years agoAuto merge of #24839 - frewsxcv:patch-17, r=steveklabnik
bors [Sun, 26 Apr 2015 21:07:41 +0000 (21:07 +0000)]
Auto merge of #24839 - frewsxcv:patch-17, r=steveklabnik

9 years agoAuto merge of #24829 - jooert:fix22673, r=pnkfelix
bors [Sun, 26 Apr 2015 19:06:38 +0000 (19:06 +0000)]
Auto merge of #24829 - jooert:fix22673, r=pnkfelix

9 years agobook: Fix broken link to unsafe chapter
diwic [Sun, 26 Apr 2015 18:32:14 +0000 (20:32 +0200)]
book: Fix broken link to unsafe chapter

9 years agoAuto merge of #24828 - jooert:fix23253, r=pnkfelix
bors [Sun, 26 Apr 2015 17:04:24 +0000 (17:04 +0000)]
Auto merge of #24828 - jooert:fix23253, r=pnkfelix

r? @alexcrichton

9 years agoAuto merge of #24679 - tamird:enable-debug, r=pnkfelix
bors [Sun, 26 Apr 2015 15:04:33 +0000 (15:04 +0000)]
Auto merge of #24679 - tamird:enable-debug, r=pnkfelix

r? @alexcrichton

9 years agoUtilize `while let` instead of `loop` with `break` in doc-comment
Corey Farwell [Sun, 26 Apr 2015 14:10:51 +0000 (10:10 -0400)]
Utilize `while let` instead of `loop` with `break` in doc-comment

9 years agoMove qquote.rs from run-fail to run-fail-fulldeps
Ryan Prichard [Sun, 26 Apr 2015 01:31:23 +0000 (18:31 -0700)]
Move qquote.rs from run-fail to run-fail-fulldeps

9 years agoAdd a new test group, rfail-full that runs rfail tests with fulldeps.
Ryan Prichard [Sun, 26 Apr 2015 01:30:47 +0000 (18:30 -0700)]
Add a new test group, rfail-full that runs rfail tests with fulldeps.

In most places in mk/tests.mk, it's positioned after rpass-full and
before cfail-full (because rfail comes before cfail). The order of tests
seems a little inconsistent, but reordering everywhere would obscure this
commit.

9 years agoAuto merge of #24807 - luqmana:nullable-enum-opt-dst-raw-pointers, r=jakub-
bors [Sun, 26 Apr 2015 13:03:31 +0000 (13:03 +0000)]
Auto merge of #24807 - luqmana:nullable-enum-opt-dst-raw-pointers, r=jakub-

Fixes #23433.

9 years agoAuto merge of #23085 - goffrie:interpolating-quote, r=huonw
bors [Sun, 26 Apr 2015 09:52:28 +0000 (09:52 +0000)]
Auto merge of #23085 - goffrie:interpolating-quote, r=huonw

This changes the `ToTokens` implementations for expressions, statements, etc. with almost-trivial ones that produce `Interpolated(*Nt(...))` pseudo-tokens. In this way, quasiquote now works the same way as macros do: already-parsed AST fragments are used as-is, not reparsed.

The `ToSource` trait is removed. Quasiquote no longer involves pretty-printing at all, which removes the need for the `encode_with_hygiene` hack. All associated machinery is removed.

New `Nonterminal`s are added: NtArm, NtImplItem, and NtTraitItem. These are just for quasiquote, not macros.

`ToTokens` is no longer implemented for `Arg` (although this could be added again) and `Generics` (which I don't think makes sense).

This breaks any compiler extensions that relied on the ability of `ToTokens` to turn AST fragments back into inspectable token trees. For this reason, this closes #16987.

As such, this is a [breaking-change].

Fixes #16472.
Fixes #15962.
Fixes #17397.
Fixes #16617.

9 years agoAuto merge of #24367 - ebfull:fix_ice_cat_expr, r=pnkfelix
bors [Sun, 26 Apr 2015 05:32:16 +0000 (05:32 +0000)]
Auto merge of #24367 - ebfull:fix_ice_cat_expr, r=pnkfelix

An actual typeck error is the cause of many failed compilations but an
unrelated bug is being reported instead. It is triggered because a typeck
error is presumably not yet identified during compiler execution, which
would normally bypass an invariant in the presence of other errors. In
this particular situation, we delay the reporting of the bug until
abort_if_errors().

Closes #23827, closes #24356, closes #23041, closes #22897, closes #23966,
closes #24013, and closes #23729

**There is at least one situation where this bug may still be genuinely
triggered (#23437).**

9 years agoRemove FakeExtCtxt from qquote tests.
Geoffry Song [Sun, 26 Apr 2015 05:09:36 +0000 (01:09 -0400)]
Remove FakeExtCtxt from qquote tests.

Instead create an ExtCtxt structure.

9 years agoAuto merge of #24825 - rkruppe:reference-audit, r=steveklabnik
bors [Sun, 26 Apr 2015 03:34:38 +0000 (03:34 +0000)]
Auto merge of #24825 - rkruppe:reference-audit, r=steveklabnik

Transplant the relevant changes (turns out to be all of them) to `grammar.md`, and remove all grammar talk from `reference.md`. Sorry for the chaos.

The second commit, further below, goes over the comments and whitespace sections.

r? @steveklabnik

9 years agoProvide a Default implementation for AtomicPtr
Jake Goulding [Sun, 26 Apr 2015 02:55:15 +0000 (22:55 -0400)]
Provide a Default implementation for AtomicPtr

Closes #24613

9 years agoRemove remaining tests for hygiene-encoded identifiers.
Geoffry Song [Sun, 8 Mar 2015 18:41:08 +0000 (14:41 -0400)]
Remove remaining tests for hygiene-encoded identifiers.

Such things no longer exist.

9 years agoInterpolate AST nodes in quasiquote.
Geoffry Song [Thu, 5 Mar 2015 20:06:49 +0000 (15:06 -0500)]
Interpolate AST nodes in quasiquote.

This changes the `ToTokens` implementations for expressions, statements,
etc. with almost-trivial ones that produce `Interpolated(*Nt(...))`
pseudo-tokens. In this way, quasiquote now works the same way as macros
do: already-parsed AST fragments are used as-is, not reparsed.

The `ToSource` trait is removed. Quasiquote no longer involves
pretty-printing at all, which removes the need for the
`encode_with_hygiene` hack. All associated machinery is removed.

A new `Nonterminal` is added, NtArm, which the parser now interpolates.
This is just for quasiquote, not macros (although it could be in the
future).

`ToTokens` is no longer implemented for `Arg` (although this could be
added again) and `Generics` (which I don't think makes sense).

This breaks any compiler extensions that relied on the ability of
`ToTokens` to turn AST fragments back into inspectable token trees. For
this reason, this closes #16987.

As such, this is a [breaking-change].

Fixes #16472.
Fixes #15962.
Fixes #17397.
Fixes #16617.

9 years agoAuto merge of #24815 - heejongahn:master, r=steveklabnik
bors [Sun, 26 Apr 2015 01:37:58 +0000 (01:37 +0000)]
Auto merge of #24815 - heejongahn:master, r=steveklabnik

At https://doc.rust-lang.org/book/vectors.html, there should be a link to
Generics page but the link address is ommitted and thus link is not functioning
well. So I added a link definition to the vectors.md.

r? @steveklabnik

9 years agoReference audit: comments and whitespace sections
Robin Kruppe [Sat, 25 Apr 2015 22:03:59 +0000 (00:03 +0200)]
Reference audit: comments and whitespace sections

9 years agoAuto merge of #24718 - tamird:fix-quote-tests, r=alexcrichton
bors [Sat, 25 Apr 2015 23:40:10 +0000 (23:40 +0000)]
Auto merge of #24718 - tamird:fix-quote-tests, r=alexcrichton

Sniped from @rprichard's work in #24537. r? @alexcrichton

9 years agoAdd regression test for #22673.
Johannes Oertel [Sat, 25 Apr 2015 23:28:13 +0000 (01:28 +0200)]
Add regression test for #22673.

9 years agoAdd regression test for #23253.
Johannes Oertel [Sat, 25 Apr 2015 22:52:19 +0000 (00:52 +0200)]
Add regression test for #23253.

9 years agoAuto merge of #24547 - bombless:comma, r=pnkfelix
bors [Sat, 25 Apr 2015 21:44:50 +0000 (21:44 +0000)]
Auto merge of #24547 - bombless:comma, r=pnkfelix

Closes #20616
It breaks code such as <https://github.com/rust-lang/rust/blob/c64feb63418fd05bd6e5adc6f9ad763aa6a594b1/src/librustc_typeck/check/method/suggest.rs#L367>, so this is a [breaking-change], you have to add missing comma after the last lifetime arguement now.

9 years ago`qquote-2.rs` -> `run-fail/qquote.rs`
Tamir Duberstein [Thu, 23 Apr 2015 16:33:53 +0000 (09:33 -0700)]
`qquote-2.rs` -> `run-fail/qquote.rs`

Re-enables the test.

9 years ago`qquote-1.rs` -> `compile-fail-fulldeps/qquote.rs`
Tamir Duberstein [Thu, 23 Apr 2015 16:32:51 +0000 (09:32 -0700)]
`qquote-1.rs` -> `compile-fail-fulldeps/qquote.rs`

Re-enables the test.

9 years agoRe-enable test
Tamir Duberstein [Thu, 23 Apr 2015 16:24:55 +0000 (09:24 -0700)]
Re-enable test

9 years agoUnrot and re-enable `run-pass-fulldeps/qquote.rs`
Tamir Duberstein [Thu, 23 Apr 2015 06:08:04 +0000 (23:08 -0700)]
Unrot and re-enable `run-pass-fulldeps/qquote.rs`

9 years agoRedo PR #24811 properly
Robin Kruppe [Sat, 25 Apr 2015 20:56:00 +0000 (22:56 +0200)]
Redo PR #24811 properly

Transplant the grammar-related changes to grammar.md,
and remove all grammar talk from reference.md