3539 Commits

Author SHA1 Message Date
Jorge Aparicio
1384a43db3 DSTify Hash
- The signature of the `*_equiv` methods of `HashMap` and similar structures
have changed, and now require one less level of indirection. Change your code
from:

```
hashmap.find_equiv(&"Hello");
hashmap.find_equiv(&&[0u8, 1, 2]);
```

to:

```
hashmap.find_equiv("Hello");
hashmap.find_equiv(&[0u8, 1, 2]);
```

- The generic parameter `T` of the `Hasher::hash<T>` method have become
`Sized?`. Downstream code must add `Sized?` to that method in their
implementations. For example:

```
impl Hasher<FnvState> for FnvHasher {
    fn hash<T: Hash<FnvState>>(&self, t: &T) -> u64 { /* .. */ }
}
```

must be changed to:

```
impl Hasher<FnvState> for FnvHasher {
    fn hash<Sized? T: Hash<FnvState>>(&self, t: &T) -> u64 { /* .. */ }
    //      ^^^^^^
}
```

[breaking-change]
2014-10-31 07:25:34 -05:00
bors
065caf34f5 auto merge of #18431 : japaric/rust/show, r=alexcrichton
r? @aturon 
cc #16918
2014-10-31 06:01:41 +00:00
Jorge Aparicio
eef7e97017 DSTify Show and all the other formatting traits 2014-10-30 23:28:11 -05:00
Alex Crichton
6fcba8826f Test fixes and rebase conflicts 2014-10-30 17:37:56 -07:00
Alex Crichton
c10c163377 rollup merge of #18445 : alexcrichton/index-mut
Conflicts:
	src/libcollections/vec.rs
2014-10-30 17:37:55 -07:00
Alex Crichton
00975e041d rollup merge of #18398 : aturon/lint-conventions-2
Conflicts:
	src/libcollections/slice.rs
	src/libcore/failure.rs
	src/libsyntax/parse/token.rs
	src/test/debuginfo/basic-types-mut-globals.rs
	src/test/debuginfo/simple-struct.rs
	src/test/debuginfo/trait-pointers.rs
2014-10-30 17:37:22 -07:00
Jakub Bukaj
696f72e84e Add a repeat function to the prelude
Implements a part of RFC 235.

[breaking-change]
2014-10-30 23:55:53 +01:00
gamazeps
bd9c18125f Doc: Clears up trim_char doc
Closes #18451
2014-10-30 19:00:47 +01:00
Alex Crichton
dfefe9a152 rollup merge of #18421 : tbu-/pr_checkeddiv1 2014-10-30 09:29:24 -07:00
Alex Crichton
cda554aaf9 rollup merge of #18392 : cakebaker/remove_double_negation 2014-10-30 09:29:23 -07:00
Alex Crichton
1d356624a1 collections: Enable IndexMut for some collections
This commit enables implementations of IndexMut for a number of collections,
including Vec, RingBuf, SmallIntMap, TrieMap, TreeMap, and HashMap. At the same
time this deprecates the `get_mut` methods on vectors in favor of using the
indexing notation.

cc #18424
2014-10-30 08:54:30 -07:00
bors
ad4557ce76 auto merge of #18367 : pcwalton/rust/inline-atomic-constructors, r=thestinger
Servo really wants this.

r? @brson
2014-10-30 11:12:04 +00:00
Steve Klabnik
6ac7fc73f5 Update infrastructure for fail -> panic
This includes updating the language items and marking what needs to
change after a snapshot.

If you do not use the standard library, the language items you need to
implement have changed. For example:

```rust
 #[lang = "fail_fmt"] fn fail_fmt() -> ! { loop {} }
```

is now

```rust
 #[lang = "panic_fmt"] fn panic_fmt() -> ! { loop {} }
```

Related, lesser-implemented language items `fail` and
`fail_bounds_check` have become `panic` and `panic_bounds_check`, as
well. These are implemented by `libcore`, so it is unlikely (though
possible!) that these two renamings will affect you.

[breaking-change]

Fix test suite
2014-10-29 16:06:13 -04:00
Steve Klabnik
7828c3dd28 Rename fail! to panic!
https://github.com/rust-lang/rfcs/pull/221

The current terminology of "task failure" often causes problems when
writing or speaking about code. You often want to talk about the
possibility of an operation that returns a Result "failing", but cannot
because of the ambiguity with task failure. Instead, you have to speak
of "the failing case" or "when the operation does not succeed" or other
circumlocutions.

Likewise, we use a "Failure" header in rustdoc to describe when
operations may fail the task, but it would often be helpful to separate
out a section describing the "Err-producing" case.

We have been steadily moving away from task failure and toward Result as
an error-handling mechanism, so we should optimize our terminology
accordingly: Result-producing functions should be easy to describe.

To update your code, rename any call to `fail!` to `panic!` instead.
Assuming you have not created your own macro named `panic!`, this
will work on UNIX based systems:

    grep -lZR 'fail!' . | xargs -0 -l sed -i -e 's/fail!/panic!/g'

You can of course also do this by hand.

[breaking-change]
2014-10-29 11:43:07 -04:00
Tobias Bucher
793a733152 Fix core::num::CheckedDiv::checked_div documentation
The "/" was probably generated by a `gq` in vim.
2014-10-29 10:08:36 +01:00
bors
1652a1f2c6 auto merge of #17603 : jakub-/rust/ty_bot, r=nikomatsakis
We now instead use a fresh variable for expressions that diverge.

Closes #14973.
Closes #13847.

[Work in progress]

cc @nikomatsakis
2014-10-28 22:11:56 +00:00
Jakub Bukaj
cca84e9e21 Remove ty_bot from the type system
We now instead use a fresh variable for expressions that diverge.
2014-10-28 17:54:16 +01:00
Aaron Turon
e0ad0fcb95 Update code with new lint names 2014-10-28 08:54:21 -07:00
Daniel Hofstetter
348a46f9c1 Remove double negation from sqrt's doc comment 2014-10-28 15:07:22 +01:00
Jorge Aparicio
94ddb51c9c DSTify [T]/str extension traits
This PR changes the signature of several methods from `foo(self, ...)` to
`foo(&self, ...)`/`foo(&mut self, ...)`, but there is no breakage of the usage
of these methods due to the autoref nature of `method.call()`s. This PR also
removes the lifetime parameter from some traits (`Trait<'a>` -> `Trait`). These
changes break any use of the extension traits for generic programming, but
those traits are not meant to be used for generic programming in the first
place. In the whole rust distribution there was only one misuse of a extension
trait as a bound, which got corrected (the bound was unnecessary and got
removed) as part of this PR.

[breaking-change]
2014-10-27 20:20:08 -05:00
Alex Crichton
9dc9eccf3d rollup merge of #18316 : thestinger/raw 2014-10-27 15:12:29 -07:00
Patrick Walton
aa242e721a libcore: Inline atomic constructors.
Servo really wants this.
2014-10-27 09:14:57 -07:00
bors
cb943b7d2b auto merge of #18212 : kmcallister/rust/unsafecell, r=thestinger
Fixes #18131.
2014-10-26 06:37:23 +00:00
Daniel Micay
3942ab92f0 make the core::raw struct representation defined
Closes #18313
2014-10-25 13:28:17 -04:00
bors
172b59abe5 auto merge of #18080 : veddan/rust/assume, r=thestinger
Adds an `assume` intrinsic that gets translated to llvm.assume. It is
used on a boolean expression and allows the optimizer to assume that
the expression is true.

This implements #18051.
2014-10-25 00:32:07 +00:00
Keegan McAllister
7317ef5c36 Add as_unsafe_cell() for Cell and RefCell
Fixes #18131.
2014-10-24 14:15:50 -07:00
bors
c53f8a920e auto merge of #17960 : mahkoh/rust/clone_from_slice, r=pcwalton
Old vs. New vs. Vec::push_all

```
test slice     ... bench:   3091942 ns/iter (+/- 54460)
test slice_new ... bench:   1800065 ns/iter (+/- 69513)
test vec       ... bench:   1804805 ns/iter (+/- 75609)
```
2014-10-24 01:02:21 +00:00
bors
3d2cf60631 auto merge of #18121 : nikomatsakis/rust/method-call-use-trait-matching-infrastructure-2, r=pcwalton
Convert trait method dispatch to use new trait matching machinery.

This fixes about 90% of #17918. What remains to be done is to make inherent dispatch work with conditional dispatch as well. I plan to do this in a future patch by generalizing the "method match" code slightly to work for inherent impls as well (the basic algorithm is precisely the same).

Fixes #17178.

This is a [breaking-change] for two reasons:

1. The old code was a bit broken. I found various minor cases, particularly around operators, where the old code incorrectly matched, but an extra `*` or other change is now required. (See commit e8cef25 ("Correct case where the old version of method lookup...") for examples.)
2. The old code didn't type check calls against the method signature from the *trait* but rather the *impl*. The two can be different in subtle ways. This makes the new method dispatch both more liberal and more conservative than the original. (See commit 8308332 ("The new method lookup mechanism typechecks...") for examples.)

r? @pcwalton since he's been reviewing most of this series of changes
f? @nick29581 for commit 39df55f ("Permit DST types to unify like other types")
cc @aturon as this relates to library stabilization
2014-10-22 00:22:04 +00:00
Niko Matsakis
b066d09be8 Patch up broken error messages 2014-10-21 17:36:15 -04:00
Niko Matsakis
98e237a681 Correct case where the old version of method lookup was incorrectly matching,
as far as I can tell.
2014-10-21 12:32:36 -04:00
bors
4764c16011 auto merge of #18201 : Gankro/rust/option-what, r=alexcrichton
🐳
2014-10-21 14:52:11 +00:00
Alexis Beingessner
01e8ad6c38 Fix crazy-pants match in Option docs 2014-10-20 21:18:59 -04:00
bors
7d0cc44f87 auto merge of #18070 : alexcrichton/rust/spring-cleaning, r=aturon
This is a large spring-cleaning commit now that the 0.12.0 release has passed removing an amount of deprecated functionality. This removes a number of deprecated crates (all still available as cargo packages in the rust-lang organization) as well as a slew of deprecated functions. All `#[crate_id]` support has also been removed.

I tried to avoid anything that was recently deprecated, but I may have missed something! The major pain points of this commit is the fact that rustc/syntax have `#[allow(deprecated)]`, but I've removed that annotation so moving forward they should be cleaned up as we go.
2014-10-20 16:07:43 +00:00
bors
ddfe24d641 auto merge of #18174 : huonw/rust/fix-sqrt, r=alexcrichton
Closes #9987.
2014-10-20 10:17:09 +00:00
Huon Wilson
a1d5cd204d Handle negative numbers in sqrt properly.
Closes #9987.
2014-10-20 21:10:13 +11:00
Alex Crichton
9d5d97b55d Remove a large amount of deprecated functionality
Spring cleaning is here! In the Fall! This commit removes quite a large amount
of deprecated functionality from the standard libraries. I tried to ensure that
only old deprecated functionality was removed.

This is removing lots and lots of deprecated features, so this is a breaking
change. Please consult the deprecation messages of the deleted code to see how
to migrate code forward if it still needs migration.

[breaking-change]
2014-10-19 12:59:40 -07:00
Ray Clanan
1b7163358f Mark lt as inline in PartialOrd 2014-10-18 11:49:33 -04:00
bors
4480caf2a4 auto merge of #18024 : phungleson/rust/fix-var-name-in-doc, r=brson
Make the doc more consistent & runnable.

* Use `_index` instead of `_rhs` when appropriate.
* Use `_from` and `_to` to avoid warning.
* Remove unnecessary `::core::ops`
2014-10-18 06:22:15 +00:00
Luqman Aden
3410c52eec librustc: Remove trans::reflect and the opaque and ty_visitor lang items. 2014-10-16 11:15:36 -04:00
Luqman Aden
7210a5af87 librustc: Stop generating visit glue and remove from TyDesc. 2014-10-16 11:15:36 -04:00
Luqman Aden
7a4122ac67 librustc: Remove visit_tydesc intrinsic. 2014-10-16 11:15:35 -04:00
Viktor Dahl
0c18da503c Improve documentation of assume intrinsic. 2014-10-16 14:20:54 +02:00
Viktor Dahl
0525bb7669 Add assume intrinsic
Adds an `assume` intrinsic that gets translated to llvm.assume. It is
used on a boolean expression and allows the optimizer to assume that
the expression is true.

This implements #18051.
2014-10-16 01:44:44 +02:00
bors
5e1e2456ed auto merge of #18029 : Ms2ger/rust/patch-1, r=huonw 2014-10-14 19:22:22 +00:00
Ms2ger
0e1e9cbb13 Fix the formatting of the documentation for OrdIterator.min_max. 2014-10-14 12:11:07 +02:00
Son
d9da3471e8 Change from and to to _from and _to
This to avoid warning: unused variable: `from`,
#[warn(unused_variable)] on by default.
2014-10-14 09:21:39 +08:00
Son
62b48bd815 Remove unnecessary ::core::ops::
It shows error: failed to resolve. Maybe a missing `extern crate core`
anyway.
2014-10-14 09:20:11 +08:00
Son
8f717ffe60 Change _rhs to _index.
Because var is provided as an index not a right hand side.
2014-10-14 09:11:37 +08:00
Stefan Bucur
39749a3adc Fix typo in char's from_digit error message 2014-10-13 22:17:48 +02:00
Julian Orth
cea171b0ae improve clone_from_slice performance 2014-10-12 01:24:47 +02:00