3999 Commits

Author SHA1 Message Date
Steve Klabnik
f7fe249bbc Remove associated_types gate from std::ops docs 2015-01-18 11:28:17 -05:00
Eduard Burtescu
89b80faa8e Register new snapshots. 2015-01-17 16:37:34 -08:00
Steve Klabnik
02968389dc Beef up Copy documentation
Fixes #21249
Fixes #11540
2015-01-17 10:51:07 -05:00
Volker Mische
f12e60a5c8 Make Index trait example clearer
The example of the `Index` and `IndexMut` trait contained too much `Foo`.
It now contains a bit more `Bar` to make things clearer which parts are
defining the type of the index.
2015-01-17 10:51:07 -05:00
Steve Klabnik
078bd498b9 Evaluate # fn in docs
I searched for times when we were hiding functions with # in the documentation,
and fixed them to not use it unless neccesary.

I also made random improvements whenever I changed something. For example,
I changed Example to Examples, for consistency.

Fixes #13423
2015-01-17 10:49:49 -05:00
Flavio Percoco
7cd762a967 Docs fallout 2015-01-16 08:18:57 +01:00
Flavio Percoco
388e30f78e Remove NoSend/NoSync 2015-01-16 08:18:56 +01:00
Alex Crichton
b64de7ea76 rollup merge of #21172: brson/tuple
This outer attribute doesn't actually apply to anything is seems
to be incorrect in what it is saying.
2015-01-15 14:12:03 -08:00
Alex Crichton
7c967afe02 rollup merge of #21170: Diggsey/issue-21058
While it's unstable and will probably be replaced or "reformed" at some point, it's useful in the mean time to be able to introspect the type system when debugging, and not be limited to sized types.

Fixes #21058
2015-01-15 14:12:02 -08:00
Alex Crichton
d7009e6f31 rollup merge of #21105: csouth3/kill-box-import
Closes #21093.
r? @steveklabnik
cc @alexcrichton

I tested with `make check-docs` and this passes that.  Hope that was enough.
2015-01-15 14:11:46 -08:00
Alex Crichton
b555528f0b rollup merge of #21103: nagisa/result-typo
r? @steveklabnik, I think?
2015-01-15 14:11:45 -08:00
Diggory Blake
81c5fd8e1f Allow get_tydesc intrinsic to accept unsized types
Fix tabs

Added missing ty_str cases when generating type descriptions

Reduce code duplication and improve test
2015-01-15 06:54:51 +00:00
Brian Anderson
e5ad89d176 Remove erroneous stability attribute.
This outer attribute doesn't actually apply to anything is seems
to be incorrect in what it is saying.
2015-01-14 18:58:26 -08:00
bors
896cb36eca auto merge of #21082 : brson/rust/finally, r=alexcrichton
No in-tree users. Ugly interface. Closes #14332.

I just happened to notice that this module still lives and has no users. Assuming we don't want it.

r? @aturon cc @alexcrichton
2015-01-14 12:19:58 +00:00
bors
3614e1de6c auto merge of #21061 : japaric/rust/range, r=nick29581 2015-01-14 04:42:01 +00:00
Brian Anderson
f0fe4bb114 Address feedback 2015-01-13 15:44:33 -08:00
Chase Southwood
07f723f19b Remove unneeded box import in examples 2015-01-13 12:56:10 -06:00
Simonas Kazlauskas
1217007c83 Use if-let in std::result documentation
This takes an opportunity to show yet-another-way of dealing with
Results and matching.
2015-01-13 20:25:13 +02:00
Simonas Kazlauskas
064c21efd2 Fix a typo in std::result documentation 2015-01-13 20:24:48 +02:00
Brian Anderson
e46620af45 std: Deprecate finally module
No in-tree users. Ugly interface. Closes #14332.
2015-01-13 00:59:30 -08:00
Jorge Aparicio
c1d48a8508 cleanup: &foo[0..a] -> &foo[..a] 2015-01-12 17:59:37 -05:00
bors
3d0d9bb6fb auto merge of #20896 : sfackler/rust/atomic-rename, r=alexcrichton
Change any use of AtomicInt to AtomicIsize and AtomicUint to AtomicUsize

Closes #20893

[breaking-change]
2015-01-12 22:56:20 +00:00
bors
a6408fa1d8 auto merge of #20942 : nagisa/rust/shrl-impls, r=nikomatsakis
This is only relevant to the code that uses generics such as

    fn magic<T: Shl>(a: T) { a << 10u8; }

r? @nikomatsakis
2015-01-12 11:05:30 +00:00
bors
0aec4db1c0 auto merge of #20889 : Manishearth/rust/trait-error, r=nikomatsakis
fixes #20783

r? @nikomatsakis
2015-01-12 04:45:18 +00:00
Steven Fackler
8b6cda3ce6 Rename AtomicInt and AtomicUint
Change any use of AtomicInt to AtomicIsize and AtomicUint to AtomicUsize

Closes #20893

[breaking-change]
2015-01-11 11:47:44 -08:00
Manish Goregaokar
ad7e33efee Feature gate #[rustc_on_unimplemented] 2015-01-12 00:00:53 +05:30
Manish Goregaokar
dd074ab4ee Rename #[on_unimplemented] -> #[rustc_on_unimplemented] 2015-01-11 20:52:43 +05:30
Simonas Kazlauskas
348d833187 Allow any integral to be used as Shr and Shl RHS
This is only relevant to the code that uses generics such as

    fn magic<T: Shl>(a: T) { a << 10u8; }

Fixes #20288
2015-01-11 15:34:53 +02:00
Manish Goregaokar
4d17fbaf37 Add ability to attach custom #[on_unimplemented] error messages for unimplemented traits (fixes #20783) 2015-01-11 09:49:02 +05:30
bors
a09b139f9c auto merge of #20839 : alexcrichton/rust/missing-stability, r=aturon
Both `Extend::extend` and `DoubleEndedIterator::next_back` were intended to be
stable, but they mistakenly didn't have the `#[stable]` tag.
2015-01-10 12:10:08 +00:00
bors
3975af567a auto merge of #20837 : huonw/rust/remove-unused-lifetime, r=nikomatsakis 2015-01-10 10:05:05 +00:00
bors
d36dc15952 auto merge of #20794 : sfackler/rust/trailing-attrs, r=alexcrichton
Closes #20711
2015-01-10 08:00:09 +00:00
Huon Wilson
719c5d7bde core: rm unused lifetime. 2015-01-10 11:31:53 +11:00
Alex Crichton
ccb1e460dc std: Mark two missing functions as #[stable]
Both `Extend::extend` and `DoubleEndedIterator::next_back` were intended to be
stable, but they mistakenly didn't have the `#[stable]` tag.
2015-01-09 15:49:09 -08:00
Keegan McAllister
128e7ff53b Re-reduce libstd macro duplication
The libstd definitions move to libcore, which causes some minor updates there.
2015-01-09 11:06:17 -08:00
Steven Fackler
cbd962ebb5 Forbid trailing attributes in impl blocks
Closes #20711
2015-01-08 21:36:30 -08:00
Alex Crichton
4281bd1932 rollup merge of #20754: nikomatsakis/int-feature
Conflicts:
	src/test/compile-fail/borrowck-move-out-of-overloaded-auto-deref.rs
	src/test/compile-fail/issue-2590.rs
	src/test/compile-fail/lint-stability.rs
	src/test/compile-fail/slice-mut-2.rs
	src/test/compile-fail/std-uncopyable-atomics.rs
2015-01-08 09:24:08 -08:00
Huon Wilson
4f5a57e80e Remove warning from the libraries.
This adds the int_uint feature to *every* library, whether or not it
needs it.
2015-01-08 11:02:23 -05:00
Brian Anderson
1f70acbf4c Improvements to feature staging
This gets rid of the 'experimental' level, removes the non-staged_api
case (i.e. stability levels for out-of-tree crates), and lets the
staged_api attributes use 'unstable' and 'deprecated' lints.

This makes the transition period to the full feature staging design
a bit nicer.
2015-01-08 03:07:23 -08:00
Aaron Turon
e7d00ebec7 Add missing module stability attributes 2015-01-08 00:26:21 -08:00
Alex Crichton
0dc48b47a8 Test fixes and rebase conflicts 2015-01-07 19:27:27 -08:00
Alex Crichton
d11bfba71b rollup merge of #20720: nick29581/assoc-ice-missing 2015-01-07 17:38:03 -08:00
Nick Cameron
68a783a89f Remove String impls and fix for make tidy 2015-01-08 14:35:53 +13:00
Alex Crichton
6e806bdefd rollup merge of #20721: japaric/snap
Conflicts:
	src/libcollections/vec.rs
	src/libcore/fmt/mod.rs
	src/librustc/lint/builtin.rs
	src/librustc/session/config.rs
	src/librustc_trans/trans/base.rs
	src/librustc_trans/trans/context.rs
	src/librustc_trans/trans/type_.rs
	src/librustc_typeck/check/_match.rs
	src/librustdoc/html/format.rs
	src/libsyntax/std_inject.rs
	src/libsyntax/util/interner.rs
	src/test/compile-fail/mut-pattern-mismatched.rs
2015-01-07 17:26:58 -08:00
Alex Crichton
a204dc56c9 rollup merge of #20722: alexcrichton/audit-show
Conflicts:
	src/libcollections/vec.rs
	src/libcore/fmt/mod.rs
	src/librustdoc/html/format.rs
2015-01-07 17:18:59 -08:00
Alex Crichton
dd38f46d71 rollup merge of #20708: aturon/new-int-modules
Conflicts:
	src/libserialize/lib.rs
2015-01-07 17:18:01 -08:00
Alex Crichton
f257848992 rollup merge of #20696: reem/unsized-typeid
This removes the needlessly constricting bound on `intrinsics::type_Id` and `TypeId::of`. Also fixes an ICE where using bounds on type parameters in extern blocks fails to resolve the used traits.
2015-01-07 17:17:31 -08:00
Alex Crichton
6301c7878e rollup merge of #20680: nick29581/target-word
Closes #20421

[breaking-change]

r? @brson
2015-01-07 17:17:23 -08:00
Alex Crichton
f3b67afcab rollup merge of #20663: brson/feature-staging
This partially implements the feature staging described in the
[release channel RFC][rc]. It does not yet fully conform to the RFC as
written, but does accomplish its goals sufficiently for the 1.0 alpha
release.

It has three primary user-visible effects:

* On the nightly channel, use of unstable APIs generates a warning.
* On the beta channel, use of unstable APIs generates a warning.
* On the beta channel, use of feature gates generates a warning.

Code that does not trigger these warnings is considered 'stable',
modulo pre-1.0 bugs.

Disabling the warnings for unstable APIs continues to be done in the
existing (i.e. old) style, via `#[allow(...)]`, not that specified in
the RFC. I deem this marginally acceptable since any code that must do
this is not using the stable dialect of Rust.

Use of feature gates is itself gated with the new 'unstable_features'
lint, on nightly set to 'allow', and on beta 'warn'.

The attribute scheme used here corresponds to an older version of the
RFC, with the `#[staged_api]` crate attribute toggling the staging
behavior of the stability attributes, but the user impact is only
in-tree so I'm not concerned about having to make design changes later
(and I may ultimately prefer the scheme here after all, with the
`#[staged_api]` crate attribute).

Since the Rust codebase itself makes use of unstable features the
compiler and build system do a midly elaborate dance to allow it to
bootstrap while disobeying these lints (which would otherwise be
errors because Rust builds with `-D warnings`).

This patch includes one significant hack that causes a
regression. Because the `format_args!` macro emits calls to unstable
APIs it would trigger the lint.  I added a hack to the lint to make it
not trigger, but this in turn causes arguments to `println!` not to be
checked for feature gates. I don't presently understand macro
expansion well enough to fix. This is bug #20661.

Closes #16678

[rc]: https://github.com/rust-lang/rfcs/blob/master/text/0507-release-channels.md

Next steps are to disable the existing out-of-tree behavior for stability attributes, and convert the remaining system to be feature-based per the RFC. During the first beta cycle we will set these lints to 'forbid'.
2015-01-07 17:17:22 -08:00
Alex Crichton
8bf3ee7c5c rollup merge of #20654: alexcrichton/stabilize-hash
This commit aims to prepare the `std::hash` module for alpha by formalizing its
current interface whileholding off on adding `#[stable]` to the new APIs.  The
current usage with the `HashMap` and `HashSet` types is also reconciled by
separating out composable parts of the design. The primary goal of this slight
redesign is to separate the concepts of a hasher's state from a hashing
algorithm itself.

The primary change of this commit is to separate the `Hasher` trait into a
`Hasher` and a `HashState` trait. Conceptually the old `Hasher` trait was
actually just a factory for various states, but hashing had very little control
over how these states were used. Additionally the old `Hasher` trait was
actually fairly unrelated to hashing.

This commit redesigns the existing `Hasher` trait to match what the notion of a
`Hasher` normally implies with the following definition:

    trait Hasher {
        type Output;
        fn reset(&mut self);
        fn finish(&self) -> Output;
    }

This `Hasher` trait emphasizes that hashing algorithms may produce outputs other
than a `u64`, so the output type is made generic. Other than that, however, very
little is assumed about a particular hasher. It is left up to implementors to
provide specific methods or trait implementations to feed data into a hasher.

The corresponding `Hash` trait becomes:

    trait Hash<H: Hasher> {
        fn hash(&self, &mut H);
    }

The old default of `SipState` was removed from this trait as it's not something
that we're willing to stabilize until the end of time, but the type parameter is
always required to implement `Hasher`. Note that the type parameter `H` remains
on the trait to enable multidispatch for specialization of hashing for
particular hashers.

Note that `Writer` is not mentioned in either of `Hash` or `Hasher`, it is
simply used as part `derive` and the implementations for all primitive types.

With these definitions, the old `Hasher` trait is realized as a new `HashState`
trait in the `collections::hash_state` module as an unstable addition for
now. The current definition looks like:

    trait HashState {
        type Hasher: Hasher;
        fn hasher(&self) -> Hasher;
    }

The purpose of this trait is to emphasize that the one piece of functionality
for implementors is that new instances of `Hasher` can be created.  This
conceptually represents the two keys from which more instances of a
`SipHasher` can be created, and a `HashState` is what's stored in a
`HashMap`, not a `Hasher`.

Implementors of custom hash algorithms should implement the `Hasher` trait, and
only hash algorithms intended for use in hash maps need to implement or worry
about the `HashState` trait.

The entire module and `HashState` infrastructure remains `#[unstable]` due to it
being recently redesigned, but some other stability decision made for the
`std::hash` module are:

* The `Writer` trait remains `#[experimental]` as it's intended to be replaced
  with an `io::Writer` (more details soon).
* The top-level `hash` function is `#[unstable]` as it is intended to be generic
  over the hashing algorithm instead of hardwired to `SipHasher`
* The inner `sip` module is now private as its one export, `SipHasher` is
  reexported in the `hash` module.

And finally, a few changes were made to the default parameters on `HashMap`.

* The `RandomSipHasher` default type parameter was renamed to `RandomState`.
  This renaming emphasizes that it is not a hasher, but rather just state to
  generate hashers. It also moves away from the name "sip" as it may not always
  be implemented as `SipHasher`. This type lives in the
  `std::collections::hash_map` module as `#[unstable]`

* The associated `Hasher` type of `RandomState` is creatively called...
  `Hasher`! This concrete structure lives next to `RandomState` as an
  implemenation of the "default hashing algorithm" used for a `HashMap`. Under
  the hood this is currently implemented as `SipHasher`, but it draws an
  explicit interface for now and allows us to modify the implementation over
  time if necessary.

There are many breaking changes outlined above, and as a result this commit is
a:

[breaking-change]
2015-01-07 17:17:19 -08:00