- 06 11月, 2014 4 次提交
-
-
由 Niko Matsakis 提交于
Support parenthesized paths `Foo(A,B) -> C` that expand to `Foo<(A,B),C>`. These paths also bind anonymous regions (or will, once HRTB is fully working). Fixes #18423.
-
由 Niko Matsakis 提交于
-
由 Niko Matsakis 提交于
Fixes #18387.
-
由 Niko Matsakis 提交于
Key points are: 1. `a + b` maps directly to `Add<A,B>`, where `A` and `B` are the types of `a` and `b`. 2. Indexing and slicing autoderefs consistently.
-
- 04 11月, 2014 1 次提交
-
-
由 Corey Richardson 提交于
Removes all target-specific knowledge from rustc. Some targets have changed during this, but none of these should be very visible outside of cross-compilation. The changes make our targets more consistent. iX86-unknown-linux-gnu is now only available as i686-unknown-linux-gnu. We used to accept any value of X greater than 1. i686 was released in 1995, and should encompass the bare minimum of what Rust supports on x86 CPUs. The only two windows targets are now i686-pc-windows-gnu and x86_64-pc-windows-gnu. The iOS target has been renamed from arm-apple-ios to arm-apple-darwin. A complete list of the targets we accept now: arm-apple-darwin arm-linux-androideabi arm-unknown-linux-gnueabi arm-unknown-linux-gnueabihf i686-apple-darwin i686-pc-windows-gnu i686-unknown-freebsd i686-unknown-linux-gnu mips-unknown-linux-gnu mipsel-unknown-linux-gnu x86_64-apple-darwin x86_64-unknown-freebsd x86_64-unknown-linux-gnu x86_64-pc-windows-gnu Closes #16093 [breaking-change]
-
- 03 11月, 2014 2 次提交
-
-
由 Brian Koropoff 提交于
If the overloaded method does not have a tuple or unit type as its first non-self parameter, produce a list of error types with the correct length to prevent a later index bound panic. This typically occurs due to propagation of an earlier type error or unconstrained type variable. Closes #18532
-
由 Alexis Beingessner 提交于
* Moves multi-collection files into their own directory, and splits them into seperate files * Changes exports so that each collection has its own module * Adds underscores to public modules and filenames to match standard naming conventions (that is, treemap::{TreeMap, TreeSet} => tree_map::TreeMap, tree_set::TreeSet) * Renames PriorityQueue to BinaryHeap * Renames SmallIntMap to VecMap * Miscellanious fallout fixes [breaking-change]
-
- 02 11月, 2014 1 次提交
-
-
由 P1start 提交于
Closes #18126.
-
- 01 11月, 2014 1 次提交
-
-
由 Nick Cameron 提交于
-
- 30 10月, 2014 3 次提交
-
-
由 Alex Crichton 提交于
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
-
由 Nick Cameron 提交于
-
由 Nick Cameron 提交于
closes #17670 [breaking-change] Traits must be object-safe if they are to be used in trait objects. This might require splitting a trait into object-safe and non-object-safe parts. Some standard library traits in std::io have been split - Reader has new traits BytesReader (for the bytes method) and AsRefReader (for by_ref), Writer has new trait AsRefWriter (for by_ref). All these new traits have blanket impls, so any type which implements Reader or Writer (respectively) will have an implmentation of the new traits. To fix your code, you just need to `use` the new trait.
-
- 29 10月, 2014 1 次提交
-
-
由 Jakub Bukaj 提交于
We now instead use a fresh variable for expressions that diverge.
-
- 28 10月, 2014 2 次提交
-
-
由 Niko Matsakis 提交于
Avoid O(n^2) performance by reconsidering the full set of obligations only when we are about to report an error (#18208). I found it is still important to consider the full set in order to make tests like `let x: Vec<_> = obligations.iter().collect()` work.
-
由 Brian Koropoff 提交于
This adds a `Substs` field to `ty_unboxed_closure` and plumbs basic handling of it throughout the compiler. trans now correctly monomorphizes captured free variables and llvm function defs. This fixes uses of unboxed closures which reference a free type or region parameter from their environment in either their signature or free variables. Closes #16791
-
- 25 10月, 2014 1 次提交
-
-
由 Jakub Bukaj 提交于
Instead of checking patterns in a top-down fashion with a known expected type on entry, this changes makes typeck establish appropriate constraints between a pattern and the expression it destructures, and lets inference compute the final types or produce good error messages if it's impossible.
-
- 24 10月, 2014 2 次提交
-
-
由 P1start 提交于
Closes #17792.
-
由 Nick Cameron 提交于
-
- 23 10月, 2014 1 次提交
-
-
由 Jonathan S 提交于
-
- 22 10月, 2014 1 次提交
-
-
由 Niko Matsakis 提交于
of tracking individual candidates per impl, we just track one candidate for the extension trait itself, and let the trait resolution handle walking the individual impls and so forth. Also change the interface to report back a richer notion of error.
-
- 21 10月, 2014 2 次提交
-
-
由 Niko Matsakis 提交于
over anything that is foldable, not just fn signatures.
-
由 Niko Matsakis 提交于
-
- 20 10月, 2014 2 次提交
-
-
由 Ariel Ben-Yehuda 提交于
While no real rvalue of an unsized type can exist, a diverging function can still "return" a value of such a type, which causes an ICE. Fixes #18107.
-
由 Alex Crichton 提交于
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]
-
- 17 10月, 2014 2 次提交
-
-
由 Brian Koropoff 提交于
When an overloaded call expression has parameters but the function object takes none, construct an array of formal argument types with the arity of the call expression so that we don't fail by indexing out of bounds later. Closes #16939
-
由 Niko Matsakis 提交于
-
- 16 10月, 2014 3 次提交
-
-
由 Luqman Aden 提交于
-
由 Luqman Aden 提交于
-
由 Viktor Dahl 提交于
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.
-
- 15 10月, 2014 3 次提交
-
-
由 Nick Cameron 提交于
-
由 Nick Cameron 提交于
Part of UFCS (#16293)
-
由 Patrick Walton 提交于
`IndexMut` on mutable vectors. This fixes a bug whereby the mutability fixups for method behavior were not kicking in after autoderef failed to happen at any level. It also adds support for `Index` to the fixer-upper. Closes #12825.
-
- 14 10月, 2014 1 次提交
-
-
由 Jakub Wieczorek 提交于
-
- 12 10月, 2014 1 次提交
-
-
由 Jakub Wieczorek 提交于
-
- 11 10月, 2014 1 次提交
-
-
由 John Gallagher 提交于
-
- 10 10月, 2014 1 次提交
-
-
由 Alex Crichton 提交于
This change is an implementation of [RFC 69][rfc] which adds a third kind of global to the language, `const`. This global is most similar to what the old `static` was, and if you're unsure about what to use then you should use a `const`. The semantics of these three kinds of globals are: * A `const` does not represent a memory location, but only a value. Constants are translated as rvalues, which means that their values are directly inlined at usage location (similar to a #define in C/C++). Constant values are, well, constant, and can not be modified. Any "modification" is actually a modification to a local value on the stack rather than the actual constant itself. Almost all values are allowed inside constants, whether they have interior mutability or not. There are a few minor restrictions listed in the RFC, but they should in general not come up too often. * A `static` now always represents a memory location (unconditionally). Any references to the same `static` are actually a reference to the same memory location. Only values whose types ascribe to `Sync` are allowed in a `static`. This restriction is in place because many threads may access a `static` concurrently. Lifting this restriction (and allowing unsafe access) is a future extension not implemented at this time. * A `static mut` continues to always represent a memory location. All references to a `static mut` continue to be `unsafe`. This is a large breaking change, and many programs will need to be updated accordingly. A summary of the breaking changes is: * Statics may no longer be used in patterns. Statics now always represent a memory location, which can sometimes be modified. To fix code, repurpose the matched-on-`static` to a `const`. static FOO: uint = 4; match n { FOO => { /* ... */ } _ => { /* ... */ } } change this code to: const FOO: uint = 4; match n { FOO => { /* ... */ } _ => { /* ... */ } } * Statics may no longer refer to other statics by value. Due to statics being able to change at runtime, allowing them to reference one another could possibly lead to confusing semantics. If you are in this situation, use a constant initializer instead. Note, however, that statics may reference other statics by address, however. * Statics may no longer be used in constant expressions, such as array lengths. This is due to the same restrictions as listed above. Use a `const` instead. [breaking-change] [rfc]: https://github.com/rust-lang/rfcs/pull/246
-
- 07 10月, 2014 2 次提交
-
-
由 Nick Cameron 提交于
-
由 Nick Cameron 提交于
-
- 06 10月, 2014 1 次提交
-
-
由 Jakub Wieczorek 提交于
Fixes #17405. Fixes #17518. Fixes #17800.
-
- 05 10月, 2014 1 次提交
-
-
由 Keegan McAllister 提交于
-