Commit Graph

32670 Commits

Author SHA1 Message Date
Alex Crichton
b7c002aac1 rollup merge of #17586 : Sawyer47/test-16465 2014-09-29 08:14:19 -07:00
Alex Crichton
735d16b1b0 rollup merge of #17585 : sfackler/string-slice 2014-09-29 08:14:16 -07:00
Alex Crichton
e44393a953 rollup merge of #17582 : kmcallister/gc-box 2014-09-29 08:14:12 -07:00
Alex Crichton
55754ed893 rollup merge of #17577 : squeaky-pl/patch-1 2014-09-29 08:12:54 -07:00
Alex Crichton
792e32bcfc rollup merge of #17576 : kmcallister/hide-quotes 2014-09-29 08:12:51 -07:00
Alex Crichton
757fa6ffba rollup merge of #17573 : iliekturtles/17570-windows-installer-path 2014-09-29 08:12:48 -07:00
Alex Crichton
00009f9789 rollup merge of #17565 : akavel/patch-1 2014-09-29 08:12:45 -07:00
Alex Crichton
bb84afeba1 rollup merge of #17564 : japaric/fix-slicemut-docs 2014-09-29 08:12:42 -07:00
Alex Crichton
e786891d41 rollup merge of #17557 : sfackler/fuse-example 2014-09-29 08:12:37 -07:00
Alex Crichton
94c1b1f30c rollup merge of #17544 : eklitzke/master 2014-09-29 08:12:32 -07:00
Alex Crichton
5fae40c33a rollup merge of #17548 : cgaebel/master 2014-09-29 08:12:14 -07:00
Alex Crichton
01c25e6c7b rollup merge of #17542 : brson/devchannel 2014-09-29 08:12:09 -07:00
Alex Crichton
6c23789ad1 rollup merge of #17531 : tomjakubowski/rustdoc-where-clauses 2014-09-29 08:10:47 -07:00
Alex Crichton
655b7269c8 rollup merge of #17519 : pcwalton/unboxed-closure-move-syntax 2014-09-29 08:10:44 -07:00
Alex Crichton
1ebf456fb0 rollup merge of #17510 : MatejLach/find_fix 2014-09-29 08:10:32 -07:00
Tom Jakubowski
54831f128f rustdoc: Render where clauses as appropriate
Fix #16546
2014-09-29 06:38:47 -07:00
bors
5079a10b1e auto merge of #17538 : brson/rust/winmk, r=alexcrichton 2014-09-29 12:43:13 +00:00
bors
40b86baca0 auto merge of #17409 : farcaller/rust/patch-1, r=huonw
Parser.parse_method now has a second argument, I assume ast::Inherited is the correct visibility in this case.
2014-09-29 10:08:04 +00:00
Vladimir Pouzanov
75d49c8203 Fixed quote_method!() implementation
Parser.parse_method now has a second argument, I assume ast::Inherited is the correct visibility in this case.
2014-09-29 09:45:36 +01:00
bors
eb816eee0f auto merge of #17535 : Manishearth/rust/patch-2, r=steveklabnik
It's a rather useful syntax, and non-obvious.

A friend of mine is learning Rust and was trying to find a way to easily do such an initialization — he couldn't find it in the guide and was pretty surprised when I showed him. Looks like something that should be mentioned.

r? @steveklabnik
2014-09-29 07:43:07 +00:00
bors
b9478ee251 auto merge of #17321 : apoelstra/rust/error-on-unknown-impl, r=alexcrichton
Followup to RFC 57.

Fixes #7607
Fixes #8767
Fixes #12729
Fixes #15060
2014-09-29 05:13:08 +00:00
bors
496b68d485 auto merge of #17533 : michaelwoerister/rust/function-call-locs, r=luqmana
This PR makes rustc emit debug locations for *all* call and invoke statements in LLVM IR, if they are contained within a function that debuginfo is enabled for. This is important because LLVM does not handle the case where a function body containing debuginfo is inlined into another function with debuginfo, but the inlined call statement does not have a debug location. In this case, LLVM will not know where (in terms of source code coordinates) the function was inlined to and we end up with some statements still linked to the source locations in there original, non-inlined function without any indication that they are indeed an inline-copy. Later, when generating DWARF from the IR, LLVM will interpret this as corrupt IR and abort.

Unfortunately, the undesirable case described above can still occur when using LTO. If there is a crate compiled without debuginfo calling into a crate compiled with debuginfo, we again end up with the conditions triggering the error. This is why some LTO tests still fail with the dreaded assertion, if the standard library was built with debuginfo enabled. That is, `RUSTFLAGS_STAGE2=-g make rustc-stage2` will succeed but `RUSTFLAGS_STAGE2=-g make check` will still fail after this PR has been merged. I will open a separate issue for this problem.
2014-09-29 01:03:06 +00:00
Andrew Poelstra
bb5807919a Cleanup error messages for anonymous impl for types not declared in the current module
Followup to RFC 57.

Fixes #7607
Fixes #8767
Fixes #12729
Fixes #15060
2014-09-28 12:58:10 -05:00
bors
b7aa03a3ca auto merge of #17532 : ahmedcharles/rust/typo, r=alexcrichton 2014-09-28 11:38:01 +00:00
bors
7eb9337dac auto merge of #17527 : sfackler/rust/cfg-syntax, r=alexcrichton
We'll need a snapshot before we can convert the codebase over and turn on the deprecation warnings.

cc #17490

This is sitting on top of #17506
2014-09-28 08:57:57 +00:00
Steven Fackler
9519abecfb Convert cfg syntax to new system
This removes the ability to use `foo(bar)` style cfgs. Switch them to
`foo_bar` or `foo="bar"` instead.

[breaking-change]
2014-09-27 22:59:26 -07:00
bors
e079ed76c8 auto merge of #17529 : nodakai/rust/rustdoc-div-in-h1, r=alexcrichton
W3C HTML5 spec states that H1 must enclose "phrasing content" which
doesn't include DIV.  But SPAN is OK.
http://www.w3.org/TR/html5/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements
2014-09-28 05:58:04 +00:00
bors
94b0aace1a auto merge of #17523 : TeXitoi/rust/relicense-shootout-fasta-redux, r=brson
Everyone agreed.

Fix #17078 

#14248 seems completed, as every src/test/bench/shootout-*.rs are relicensed after acceptation of this PR except:
- shootout-ackermann.rs: obsolete shootout bench
- shootout-fibo.rs:  obsolete shootout bench
- shootout-k-nucleotide-pipes.rs: slower that shootout-k-nucleotide-pipes.rs (and not so interesting as a benchmark)
- shootout-pfib.rs: does not seems related to the shootout

@brson OK?
2014-09-27 23:12:54 +00:00
bors
9a68da7401 auto merge of #17517 : pczarn/rust/hashmap-lifetimes, r=alexcrichton
Fixes #17500
2014-09-27 18:57:46 +00:00
bors
ef112fe185 auto merge of #17334 : Gankro/rust/btree-vec, r=huonw
Replaces BTree with BTreeMap and BTreeSet, which are completely new implementations.
BTreeMap's internal Node representation is particularly inefficient at the moment to
make this first implementation easy to reason about and fairly safe. Both collections
are also currently missing some of the tooling specific to sorted collections, which
is planned as future work pending reform of these APIs. General implementation issues
are discussed with TODOs internally

[breaking-change]

Still waiting on compilation/test/bench stuff locally, but the edit-distance on any errors should be very small at this point. This is ready to be reviewed.
2014-09-27 16:17:50 +00:00
Alexis Beingessner
b6edc59413 complete btree rewrite
Replaces BTree with BTreeMap and BTreeSet, which are completely new implementations.
BTreeMap's internal Node representation is particularly inefficient at the moment to
make this first implementation easy to reason about and fairly safe. Both collections
are also currently missing some of the tooling specific to sorted collections, which
is planned as future work pending reform of these APIs. General implementation issues
are discussed with TODOs internally

Perf results on x86_64 Linux:

test treemap::bench::find_rand_100                         ... bench:        76 ns/iter (+/- 4)
test treemap::bench::find_rand_10_000                      ... bench:       163 ns/iter (+/- 6)
test treemap::bench::find_seq_100                          ... bench:        77 ns/iter (+/- 3)
test treemap::bench::find_seq_10_000                       ... bench:       115 ns/iter (+/- 1)
test treemap::bench::insert_rand_100                       ... bench:       111 ns/iter (+/- 1)
test treemap::bench::insert_rand_10_000                    ... bench:       996 ns/iter (+/- 18)
test treemap::bench::insert_seq_100                        ... bench:       486 ns/iter (+/- 20)
test treemap::bench::insert_seq_10_000                     ... bench:       800 ns/iter (+/- 15)

test btree::map::bench::find_rand_100                      ... bench:        74 ns/iter (+/- 4)
test btree::map::bench::find_rand_10_000                   ... bench:       153 ns/iter (+/- 5)
test btree::map::bench::find_seq_100                       ... bench:        82 ns/iter (+/- 1)
test btree::map::bench::find_seq_10_000                    ... bench:       108 ns/iter (+/- 0)
test btree::map::bench::insert_rand_100                    ... bench:       220 ns/iter (+/- 1)
test btree::map::bench::insert_rand_10_000                 ... bench:       620 ns/iter (+/- 16)
test btree::map::bench::insert_seq_100                     ... bench:       411 ns/iter (+/- 12)
test btree::map::bench::insert_seq_10_000                  ... bench:       534 ns/iter (+/- 14)

BTreeMap still has a lot of room for optimization, but it's already beating out TreeMap on most access patterns.

[breaking-change]
2014-09-27 10:25:46 -04:00
bors
34dfa45718 auto merge of #17511 : MatejLach/rust/iter_guide_typo, r=alexcrichton
The sentence "The new iterator `filter()` produces returns only the elements that that closure returned `true` for:"  can be structured as:

"The new iterator `filter()` produces only the elements that that closure returned `true` for:"

or as:

"The new iterator `filter()` returns only the elements that that closure returned `true` for:"

however, not both. 

I went with "produces", since it then talks about returning true and having "return" so close together doesn't sound nice. 
r @steveklabnik ?
2014-09-27 13:52:54 +00:00
bors
e04e081fa7 auto merge of #17515 : mbrubeck/rust/patch-1, r=alexcrichton
r? @steveklabnik
2014-09-27 10:07:54 +00:00
bors
6cde5c340d auto merge of #17512 : nodakai/rust/fix-ptr-guide, r=alexcrichton
Fix rust-lang/rust#17255

This is such a trivial change.  Devs: perhaps you might want to omit to run `make check` on Travis.
2014-09-27 07:43:24 +00:00
Piotr Jawniak
b39921c49e Add test for #16465
Closes #16465
2014-09-27 09:17:04 +02:00
Steven Fackler
aa2814fd4e Implement Slice for String and str
Closes #17502
2014-09-26 21:48:49 -07:00
bors
606bf110bc auto merge of #17469 : sfackler/rust/into-result, r=aturon
This is the inverse of `Result::ok` and helps to bridge `Option` and
`Result` based APIs.
2014-09-27 04:02:58 +00:00
Keegan McAllister
f8a180b36e Rename raw::Box to raw::GcBox
Fixes #17470.
2014-09-26 19:54:27 -07:00
bors
43d7d7c15e auto merge of #17506 : sfackler/rust/cfg-attr, r=alexcrichton
cc #17490 

Reopening of #16230
2014-09-27 01:37:53 +00:00
Squeaky
070ba14a71 Correct stability marker in string.rs 2014-09-27 02:37:28 +02:00
Keegan McAllister
fc1b908322 Hide the quote_*! macros when the feature gate is off
This makes it easier to experiment with improved quasiquoting as an ordinary
plugin library.

The list of quote macros in feature_gate.rs was already out of sync;
this commit also prevents that problem in the future.
2014-09-26 17:17:14 -07:00
Mike Boutin
35f5a674d4 dist: Make Windows installer modify system %PATH%
Modify the system %PATH% environment variable instead of the current
user's %PATH% environment. The current user will be an admin user
that may not be the same user who originally started the installer.
Closes #17570.
2014-09-26 18:04:48 -04:00
bors
d64b4103d6 auto merge of #17464 : pcwalton/rust/inherent-methods-on-equal-footing, r=nikomatsakis
over inherent methods accessible via more autoderefs.

This simplifies the trait matching algorithm. It breaks code like:

    impl Foo {
        fn foo(self) {
            // before this change, this will be called
        }
    }

    impl<'a,'b,'c> Trait for &'a &'b &'c Foo {
        fn foo(self) {
            // after this change, this will be called
        }
    }

    fn main() {
        let x = &(&(&Foo));
        x.foo();
    }

To explicitly indicate that you wish to call the inherent method, perform
explicit dereferences. For example:

    fn main() {
        let x = &(&(&Foo));
        (***x).foo();
    }

Part of #17282.

[breaking-change]

r? @nikomatsakis
2014-09-26 21:47:47 +00:00
Patrick Walton
21df9c805f librustc: Give trait methods accessible via fewer autoderefs priority
over inherent methods accessible via more autoderefs.

This simplifies the trait matching algorithm. It breaks code like:

    impl Foo {
        fn foo(self) {
            // before this change, this will be called
        }
    }

    impl<'a,'b,'c> Trait for &'a &'b &'c Foo {
        fn foo(self) {
            // after this change, this will be called
        }
    }

    fn main() {
        let x = &(&(&Foo));
        x.foo();
    }

To explicitly indicate that you wish to call the inherent method, perform
explicit dereferences. For example:

    fn main() {
        let x = &(&(&Foo));
        (***x).foo();
    }

Part of #17282.

[breaking-change]
2014-09-26 13:02:47 -07:00
Mateusz Czapliński
8a561266b1 tiny linguistic correction in docs: s/its'/its/
See e.g.: http://dictionary.reference.com/browse/its
2014-09-26 19:51:33 +02:00
Jorge Aparicio
f57e9d0cc8 Fix SliceMut documentation
The syntax sugar is `[mut from..to]` not `[from..to]`
2014-09-26 11:53:47 -05:00
Steven Fackler
0c8878d042 Add Option::{ok_or, ok_or_else}
These are the inverses of `Result::ok` and help to bridge `Option` and
`Result` based APIs.
2014-09-26 09:11:53 -07:00
Patrick Walton
2257e231a7 librustc: Eliminate the ref syntax for unboxed closure capture clauses
in favor of `move`.

This breaks code that used `move` as an identifier, because it is now a
keyword. Change such identifiers to not use the keyword `move`.
Additionally, this breaks code that was counting on by-value or
by-reference capture semantics for unboxed closures (behind the feature
gate). Change `ref |:|` to `|:|` and `|:|` to `move |:|`.

Part of RFC #63; part of issue #12831.

[breaking-change]
2014-09-26 09:03:19 -07:00
bors
5d653c17a6 auto merge of #17494 : aturon/rust/stabilize-mutable-slices, r=alexcrichton
This commit is another in the series of vector slice API stabilization. The focus here is the *mutable* slice API.

Largely, this API inherits the stability attributes [previously assigned](rust-lang#16332) to the analogous methods on immutable slides. It also adds comments to a few `unstable` attributes that were previously missing them.

In addition, the commit adds several `_mut` variants of APIs that were missing:

- `init_mut`
- `head_mut`
- `tail_mut`
- `splitn_mut`
- `rsplitn_mut`

Some of the unsafe APIs -- `unsafe_set`, `init_elem`, and `copy_memory` -- were deprecated in favor of working through `as_mut_ptr`, to simplify the API surface.

Due to deprecations, this is a:

[breaking-change]
2014-09-26 11:44:01 +00:00
Steven Fackler
a4844a65e2 Fix Iterator::fuse example
The for loop would *always* exaust the iterator previously, which seems
like behavior that was not intended. It's still kind of a weird
function.
2014-09-25 23:06:34 -07:00