Commit graph

5403 commits

Author SHA1 Message Date
Andrew Paseltiner
716effa349 support deriving Hash for nullary structs
fixes #16530
2015-01-15 10:16:44 -05:00
Jared Roesch
6a66b32270 Refactor compare_impl_method to use all bounds
Refactor compare_impl_method into its own file. Modify the
code to stop comparing individual parameter bounds.
Instead we now use the predicates list attached to the trait
and implementation generics. This ensures consistency even
when bounds are declared in different places (i.e on
a parameter vs. in a where clause).
2015-01-14 13:43:17 -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
bors
e94a9f033e auto merge of #20997 : nikomatsakis/rust/assoc-types-enum-field-access, r=nick29581
Various fixes to enum field access. Builds on PR #20955.

r? @nick29581
2015-01-13 14:21:39 +00:00
Brian Anderson
e46620af45 std: Deprecate finally module
No in-tree users. Ugly interface. Closes #14332.
2015-01-13 00:59:30 -08:00
bors
4fc9b41238 auto merge of #20955 : nikomatsakis/rust/assoc-types-struct-field-access, r=nick29581
Normalize the types of fields we project out of a struct or tuple struct.
Fixes #20954.

r? @nick29581
2015-01-13 05:01:34 +00: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
Niko Matsakis
47424cda1e Normalize bounds that we extract from where clauses. Fixes #20765. 2015-01-12 09:23:50 -05:00
Niko Matsakis
487a4a174a Fix various oversights in enum field treatment in trans and typeck.
Fixes #20996.
2015-01-12 07:51:35 -05:00
Eduard Burtescu
e73fbc69cd rustc_typeck: unify expected return types with formal return types to propagate coercions through calls of generic functions. 2015-01-11 22:09:46 +02:00
Niko Matsakis
2b8678cf5d Give where clauses priority over builtin rules. Fixes #20959. 2015-01-11 14:52:37 -05: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
Niko Matsakis
06e798a881 Normalize the types of fields we project out of a struct or tuple struct.
Fixes #20954.
2015-01-11 13:54:23 -05:00
Alex Crichton
b8304e5404 test: Use Thread::scoped in two more tests
I saw these hanging on a windows bot, and the previous ones seem to have calmed
down after switching from Thread::spawn to Thread::scoped, so try that here as
well!
2015-01-10 22:56:01 -08:00
bors
c0ca57a6fb Merge pull request #20771 from Kimundi/vec-macro-repeat
Enabled the `vec![]` macro to use the `[a; b]` repeat syntax.

Reviewed-by: alexcrichton
2015-01-10 14:15:09 +00:00
Alex Crichton
9cc847d8c3 syntax: Add #[allow(unstable)] to --test expansion
This will temporarily prevent warnings generated from expanding to code that the
test harness itself uses. This solution will require tweaking around the beta
cycle, but it will prevent spurious warnings for now.

Closes #20823
2015-01-09 13:26:21 -08:00
Jared Roesch
2d2159f5b0 Add test for issue #20414 2015-01-08 23:35:17 -08:00
Marvin Löbel
c163effc2b Enabled the vec![] macro to use the [a; b] repeat syntax.
Closes #15587
2015-01-08 21:53:04 +01:00
Alex Crichton
483fca9fa5 rollup merge of #20757: nikomatsakis/issue-20624-assoc-types-coherence 2015-01-08 09:32:06 -08:00
Niko Matsakis
d548f3eade Remove silly long line. 2015-01-08 12:30:13 -05: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
Alex Crichton
daee409b60 rollup merge of #20740: FlaPer87/remove-opt-out-copy
[breaking-change] code using this feature will break.
2015-01-08 09:22:06 -08:00
Niko Matsakis
cc1776ef1e Add another test using projection types in impls. 2015-01-08 12:02:34 -05:00
Niko Matsakis
0d9a11d6ad Normalize types bottom up. Fixes #20666. 2015-01-08 12:02:23 -05:00
Niko Matsakis
a661bd6575 Adjust tests to be clearer about the type that results from a shift expression. 2015-01-08 11:26:42 -05:00
Niko Matsakis
75919c554a Rename test to fit naming convention. 2015-01-08 11:16:07 -05:00
Niko Matsakis
115a443cee Normalize types in supertraits when checking that impls are valid during wf.
Fixes #20559.
2015-01-08 11:16:07 -05:00
Niko Matsakis
20744c6b85 Allow shift operator to take any integral type (and add a test). 2015-01-08 11:02:24 -05:00
Flavio Percoco
0d0869ad73 Remove the deprecated opt_out_copy feature 2015-01-08 13:39:14 +01: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
Alex Crichton
0dc48b47a8 Test fixes and rebase conflicts 2015-01-07 19:27:27 -08:00
Alex Crichton
11e265c2e0 rollup merge of #20707: nikomatsakis/issue-20582 2015-01-07 17:44:24 -08:00
Alex Crichton
373cbab5b0 rollup merge of #20723: pnkfelix/feature-gate-box-syntax
Conflicts:
	src/compiletest/compiletest.rs
	src/libcollections/lib.rs
	src/libserialize/lib.rs
	src/libsyntax/feature_gate.rs
2015-01-07 17:42:47 -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
bcebec5084 rollup merge of #20706: nikomatsakis/assoc-types-projections-in-structs-issue-20470
Conflicts:
	src/librustc_trans/trans/expr.rs
2015-01-07 17:35:00 -08:00
Alex Crichton
51357e04be rollup merge of #20665: nikomatsakis/assoc-types-method-dispatch-projection
Conflicts:
	src/librustc/middle/ty.rs
2015-01-07 17:33:41 -08:00
Felix S. Klock II
a7a2dd96ec fallout: run-pass tests that use box. (many could be ported to Box::new instead in the future.) 2015-01-08 02:31:37 +01: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
Niko Matsakis
cb98c3d93a Normalize types of fields in struct literals during type-checking.
Fixes #20535.
2015-01-07 20:26:21 -05:00
Niko Matsakis
55c6a68f11 Add rather involved run-pass test case. 2015-01-07 20:26:20 -05: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
b21a0cee19 rollup merge of #20704: alexcrichton/hopefully-make-tests-less-spurious
These tests have all been failing spuroiusly on Windows from time to time, and
one suspicion is that the shilc thread outliving the main thread somehow causes
the problem. Switch all the tests over to using Thread::scoped instead of
Thread::spawn to see if it helps the issue.

cc #19120
2015-01-07 17:17:34 -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
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
Alex Crichton
b1c23f6d25 rollup merge of #20611: simnalamburt/master
This PR fixes the issue #20460, and it doesn't touch any existing behavior except the bug of the SIMD types.

Closes #20460.
2015-01-07 17:17:18 -08:00
Jorge Aparicio
7d72719efc fix the &mut _ patterns 2015-01-07 19:26:36 -05:00