Commit Graph

36192 Commits

Author SHA1 Message Date
bors
c6c786671d auto merge of #20490 : japaric/rust/assoc-types, r=aturon
closes #20486 
closes #20474 
closes #20441

[breaking-change]

The `Index[Mut]` traits now have one less input parameter, as the return type of the indexing operation is an associated type. This breaks all existing implementations.

---

binop traits (`Add`, `Sub`, etc) now have an associated type for their return type. Also, the RHS input parameter now defaults to `Self` (except for the `Shl` and `Shr` traits). For example, the `Add` trait now looks like this:

``` rust
trait Add<Rhs=Self> {
    type Output;

    fn add(self, Rhs) -> Self::Output;
}
```

The `Neg` and `Not` traits now also have an associated type for their return type.

This breaks all existing implementations of these traits.

---
Affected traits:

- `Iterator { type Item }`
- `IteratorExt` no input/output types, uses `<Self as Iterator>::Item` in its methods
- `DoubleEndedIterator` no input/output types, uses `<Self as Iterator>::Item` in its methods
- `DoubleEndedIteratorExt` no input/output types, uses `<Self as Iterator>::Item` in its methods
- `RandomAccessIterator` no input/output types
- `ExactSizeIterator` no input/output types, uses `<Self as Iterator>::Item` in its methods

This breaks all the implementations of these traits.
2015-01-04 00:50:59 +00:00
Jorge Aparicio
ce8f748b4c add feature gate to some benchmarks 2015-01-03 17:29:27 -05:00
Jorge Aparicio
9aadbadb93 fix rpass/cfail tests 2015-01-03 16:30:49 -05:00
Jorge Aparicio
6fc92578fe serialize: fix fallout 2015-01-03 16:30:49 -05:00
Jorge Aparicio
4bfaa93978 std: fix fallout 2015-01-03 16:30:49 -05:00
Jorge Aparicio
32dd592d36 collections: fix fallout 2015-01-03 16:30:49 -05:00
Jorge Aparicio
234dc4d4dd core: use assoc types in Index[Mut] 2015-01-03 16:30:48 -05:00
Jorge Aparicio
fc343304af typeck: Index[Mut] traits now have *one* input parameter (not two) 2015-01-03 16:30:48 -05:00
Jorge Aparicio
7d3c5f020e use assoc types in unop traits 2015-01-03 16:29:22 -05:00
Jorge Aparicio
99017f82b6 use assoc types in binop traits 2015-01-03 16:29:19 -05:00
bors
496dc4eae7 auto merge of #19790 : akiss77/rust/aarch64-configure, r=alexcrichton
Preparing AArch64 support, starting work at the build system.
2015-01-03 20:20:48 +00:00
Akos Kiss
6e5fb8bd1b Initial version of AArch64 support.
Adds AArch64 knowledge to:
* configure,
* make files,
* sources,
* tests, and
* documentation.
2015-01-03 15:16:10 +00:00
Jorge Aparicio
7095dd0070 core: merge IteratorPairExt into IteratorExt 2015-01-03 09:34:05 -05:00
Jorge Aparicio
6002c13f9b Register new snapshots 2015-01-03 09:34:05 -05:00
Jorge Aparicio
de1446680c core: merge DoubleEndedIteratorExt into IteratorExt 2015-01-03 09:34:05 -05:00
Jorge Aparicio
6c0ad5b564 bench: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
91eeb641cd coretest: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
4f4ae538ae fix rpass/cfail tests 2015-01-03 09:34:05 -05:00
Jorge Aparicio
3bf24d6b63 test: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
ab6b651403 regex_macros: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
9dd65dd624 rustc_driver: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
964ff83cbc rustc_trans: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
274146d650 rustc_typeck: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
62ee3f1622 rustc: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
6b19a02080 syntax: fix fallout 2015-01-03 09:34:05 -05:00
Jorge Aparicio
6bff9de8ea serialize: fix fallout 2015-01-03 09:34:04 -05:00
Jorge Aparicio
f3333d5e10 regex: fix fallout 2015-01-03 09:34:04 -05:00
Jorge Aparicio
17cf5e8104 fmt_macros: fix fallout 2015-01-03 09:34:04 -05:00
Jorge Aparicio
9d36a2d593 graphviz: fix fallout 2015-01-03 09:34:04 -05:00
Jorge Aparicio
1971a24441 std: fix fallout 2015-01-03 09:34:04 -05:00
Jorge Aparicio
6b116bedaf collections: fix fallout 2015-01-03 09:34:04 -05:00
Jorge Aparicio
8c59ec0488 unicode: fix fallout 2015-01-03 09:34:04 -05:00
Jorge Aparicio
3fdd4b366a rand: fix fallout 2015-01-03 09:34:04 -05:00
Jorge Aparicio
41df05dd0e core: use assoc types in Iterator et al 2015-01-03 09:34:04 -05:00
bors
fe7e285d0c auto merge of #20432 : nikomatsakis/rust/fn-inference-2, r=eddyb
Previously, the borrow mode of each upvar was inferred as part of regionck. This PR moves it into its own separate step. It also employs the `ExprUseVisitor`, further simplifying the code. The eventual goal is to support better inference of `Fn` vs `FnMut` vs `FnOnce` that is not based on the expected type, as well as supporting individual by-move upvars.

r? @eddyb
2015-01-03 14:20:47 +00:00
Niko Matsakis
cbeff8b8b3 "Fallout": Slightly different errors are generated in this edge case. 2015-01-03 07:01:21 -05:00
Niko Matsakis
09a7bc55db Running EUV requires the Copy lang item, so adjust privacy tests. 2015-01-03 07:01:21 -05:00
Niko Matsakis
ecd9c10e1a Move upvar checking into its own pre-pass that occurs before regionck
and which uses EUV. For now, upvar inference is not any smarter than
it ever was, but regionck is simpler because it doesn't have to do as
many things at once.
2015-01-03 07:01:21 -05:00
Niko Matsakis
7474be0660 Make ty::ParameterEnvironment, not ty::ctxt, implement Typer and
`UnboxedClosureTyper`. This requires adding a `tcx` field to
`ParameterEnvironment` but generally simplifies everything since we
only need to pass along an `UnboxedClosureTyper` or `Typer`.
2015-01-03 07:01:21 -05:00
Niko Matsakis
83ef3042de Modify type_known_to_meet_builtin_bound so that it doesn't suppress overflow,
which should always result in an error.

NB. Some of the hunks in this commit rely on a later commit which adds
`tcx` into `param_env` and modifies `ParameterEnvironment` to
implement `Typer`.
2015-01-03 07:01:21 -05:00
Niko Matsakis
429d9cce1b Be more tolerant of errors in EUV so we can run it during typeck. 2015-01-03 07:00:51 -05:00
Niko Matsakis
9c54d862b8 Stop calling bug() in various weird cases and instead generate Err(). 2015-01-03 07:00:51 -05:00
Niko Matsakis
f7abf47058 Re-introduce McResult<> as a way of aborting mem-categorization (and
expr-use-visitor) early.  Turns out I was wrong to remove this; it
causes a lot of pain trying to run EUV etc during typeck without
ICEing on erroneous programs.
2015-01-03 07:00:51 -05:00
bors
fc2ba13939 auto merge of #20456 : brson/rust/packaging2, r=alexcrichton 2015-01-03 05:35:17 +00:00
Brian Anderson
d30353c1d2 Remove .pkg and .exe installers 2015-01-02 20:44:07 -08:00
bors
9c3e6082e7 auto merge of #20154 : P1start/rust/qualified-assoc-type-generics, r=nikomatsakis
This modifies `Parser::eat_lt` to always split up `<<`s, instead of doing so only when a lifetime name followed or the `force` parameter (now removed) was `true`. This is because `Foo<<TYPE` is now a valid start to a type, whereas previously only `Foo<<LIFETIME` was valid.

This is a [breaking-change]. Change code that looks like this:

```rust
let x = foo as bar << 13;
```

to use parentheses, like this:

```rust
let x = (foo as bar) << 13;
```

Closes #17362.
2015-01-03 03:25:21 +00:00
bors
a6b109723a auto merge of #19835 : pythonesque/rust/add-unordered-intrinsic, r=thestinger
This corresponds to the JMM memory model's non-volatile reads and writes to shared variables.  It provides fairly weak guarantees, but prevents UB (specifically, you will never see a value that was not written _at some point_ to the provided location).  It is not part of the C++ memory model and is only legal to provide to LLVM for loads and stores (not fences, atomicrmw, etc.).

Valid uses of this ordering are things like racy counters where you don't care about the operation actually being atomic, just want to avoid UB.  It cannot be used for synchronization without additional memory barriers since unordered loads and stores may be reordered freely by the optimizer (this is the main way it differs from relaxed).

Because it is new to Rust and it provides so few guarantees, for now only the intrinsic is provided--this patch doesn't add it to any of the higher-level atomic wrappers.
2015-01-03 01:10:40 +00:00
bors
c89417130f auto merge of #20436 : alexcrichton/rust/rollup, r=alexcrichton 2015-01-02 21:56:13 +00:00
Alex Crichton
340f3fd7a9 rollup merge of #20410: japaric/assoc-types
Conflicts:
	src/liballoc/lib.rs
	src/libcollections/lib.rs
	src/libcollections/slice.rs
	src/libcore/ops.rs
	src/libcore/prelude.rs
	src/libcore/ptr.rs
	src/librustc/middle/traits/project.rs
	src/libstd/c_str.rs
	src/libstd/io/mem.rs
	src/libstd/io/mod.rs
	src/libstd/lib.rs
	src/libstd/path/posix.rs
	src/libstd/path/windows.rs
	src/libstd/prelude.rs
	src/libstd/rt/exclusive.rs
	src/libsyntax/lib.rs
	src/test/compile-fail/issue-18566.rs
	src/test/run-pass/deref-mut-on-ref.rs
	src/test/run-pass/deref-on-ref.rs
	src/test/run-pass/dst-deref-mut.rs
	src/test/run-pass/dst-deref.rs
	src/test/run-pass/fixup-deref-mut.rs
	src/test/run-pass/issue-13264.rs
	src/test/run-pass/overloaded-autoderef-indexing.rs
2015-01-02 13:51:50 -08:00
Brian Anderson
e95cbb3aca mk: Change package name from 'rust' to 'rustc' 2015-01-02 13:36:51 -08:00