Commit Graph

16044 Commits

Author SHA1 Message Date
Niko Matsakis
3280e5a33d Improve error messages when illegal lifetimes are used 2013-03-06 15:12:58 -05:00
Niko Matsakis
d26f6eddfd Convert region parameterization to change defaults and handle
methods correctly
2013-03-06 15:12:58 -05:00
Niko Matsakis
824b9e7dbf convert FnCtxt methods from @mut self to &self 2013-03-06 15:12:57 -05:00
Niko Matsakis
4077d7b8b7 Permit either foo/&self or foo<'self> 2013-03-06 15:12:57 -05:00
Niko Matsakis
3168fe06ff Add manual &self/ and &static/ and /&self declarations that
are currently inferred.  New rules are coming that will require
them to be explicit.  All add some explicit self declarations.
2013-03-06 15:12:57 -05:00
bors
02623871ed auto merge of #5246 : brson/rust/demode, r=brson
r?
2013-03-06 11:51:57 -08:00
Brian Anderson
f1a8b58811 rustc: De-mode some bits of trans 2013-03-06 11:18:34 -08:00
bors
876b6ba792 auto merge of #5253 : nikomatsakis/rust/issue-5243, r=graydon
them to be non-monomorphic.  Merely having lifetime parameters
is not enough to qualify for that status.  Fixes #5243.

r?
2013-03-06 10:54:58 -08:00
Daniel Micay
7782aa82d2 bool: make the from_str function a FromStr impl 2013-03-06 13:05:59 -05:00
Niko Matsakis
704cd648ac Fix a bug with region-parameterized enums etc where trans considered
them to be non-monomorphic.  Merely having lifetime parameters
is not enough to qualify for that status.  Fixes #5243.
2013-03-06 13:01:16 -05:00
John Clements
8bb537e68d finish removing parse_value_ident 2013-03-06 09:41:52 -08:00
John Clements
88451878f8 removed unused abstraction over paths and value_paths 2013-03-06 09:41:47 -08:00
bors
4b79a58d9d auto merge of #5252 : nikomatsakis/rust/issue-5087-make-trait-not-impl-self, r=pcwalton
Two changes:

- The first fixes an inconsistency in coherence whereby extension methods were added to the inherent methods table, but only in cross-crate scenarios.  This causes some minor fallout in tests and so forth.  In one case (comm) I added inherent and trait methods so as to avoid the need to import traits like `GenericPort` just to use a port.

- The second makes objects not implement the associated trait, as discussed in #5087.

r? @pcwalton
2013-03-06 09:27:59 -08:00
bors
67100ddb35 auto merge of #5251 : bstrie/rust/deimpselfcore2, r=pcwalton 2013-03-06 08:39:54 -08:00
Niko Matsakis
5653fe666d Remove trailing whitespace. 2013-03-06 11:02:20 -05:00
Niko Matsakis
6d764cc361 Make object types not implement associated trait. Fixes #5087. 2013-03-06 11:02:19 -05:00
Niko Matsakis
6267339d68 Fix bug in coherence that causes all cross-crate impls to be regarded as
inherent impls, not just those of the `impl Type` variety.
2013-03-06 11:02:19 -05:00
Ben Striegel
12f06bb496 Finish de-implicit-selifizng libcore 2013-03-06 04:00:25 -05:00
bors
959e483fb7 auto merge of #5235 : yjh0502/rust/io_float, r=graydon
When parsing bytes from a wire, there is a need to parse floating-point bytes to float values ([u8*4] to f32, [u8*8] to f64). This can be done via cast::transmute, but there is no way to do it safely.

It's quite common, so I think I't better to support it in core library.
2013-03-05 22:00:40 -08:00
bors
165cc9e2c4 auto merge of #5213 : erickt/rust/vec-ref, r=graydon
This patch series changes a handful of vec functions to return references instead of copies. The one downside with making this change is that these functions aren't usable in a couple cases now due to some purity complaints. For example, this [change](c31e81a532 (L1R87)). I couldn't figure out a way to get `last` to work on a `@mut ~[...]` type, so I ended up having to use `*crate_cache[crate_cache.len() - 1].metas`.
2013-03-05 21:12:38 -08:00
Erick Tryzelaar
743cfce703 core: convert vec::{last,last_opt} to return references 2013-03-05 19:39:18 -08:00
Erick Tryzelaar
a18bf8c67d rustc: minor code cleanup 2013-03-05 19:37:50 -08:00
Erick Tryzelaar
8f263dd023 rustc: remove some copies 2013-03-05 19:37:05 -08:00
Erick Tryzelaar
d60747a248 core: convert vec::{init,initn} to return references 2013-03-05 19:37:04 -08:00
Erick Tryzelaar
5ae06ae9de core: convert vec::{tail,tailn} to return references 2013-03-05 19:37:04 -08:00
Erick Tryzelaar
359bb3e10b core: convert vec::{head,head_opt} to return references 2013-03-05 19:37:04 -08:00
Erick Tryzelaar
431e756fd7 rustdoc: change paragraphs fn to take &str 2013-03-05 19:37:04 -08:00
Erick Tryzelaar
ac4016ff99 rustdoc: Remove a unused variable warning 2013-03-05 19:37:04 -08:00
Erick Tryzelaar
d6e583ab10 std: remove an unnecessary copy from workcache 2013-03-05 19:37:04 -08:00
Jihyun Yu
ce23c8c0cf add floating-point read/write to Reader/Writer 2013-03-06 09:07:04 +09:00
bors
7c9b808d46 auto merge of #5245 : thestinger/rust/trie, r=graydon 2013-03-05 15:57:40 -08:00
Daniel Micay
ab5bc5dffe trie: remove the Copy requirement 2013-03-05 18:53:43 -05:00
bors
dec599f652 auto merge of #5234 : pcwalton/rust/equiv, r=pcwalton
r? @nikomatsakis
2013-03-05 12:12:50 -08:00
bors
4c8e12ea97 auto merge of #5232 : bstrie/rust/issue4448, r=nikomatsakis 2013-03-05 11:09:44 -08:00
Patrick Walton
2fa2ad5995 libcore: Implement an Equiv trait and use it on hashmaps.
7.3x speedup in string map search speed on a microbenchmark of pure hashmap
searching against a constant string, due to the lack of allocations.

I ran into a few snags.

1. The way the coherence check is set up, I can't implement `Equiv<@str>` and
   `Equiv<~str>` for `&str` simultaneously.

2. I wanted to implement `Equiv<T>` for all `T:Eq` (i.e. every type can be
   compared to itself if it implements `Eq`), but the coherence check didn't
   like that either.

3. I couldn't add this to the `Map` trait because `LinearMap` needs special
   handling for its `Q` type parameter: it must not only implement `Equiv<T>`
   but also `Hash` and `Eq`.

4. `find_equiv(&&"foo")` doesn't parse, because of the double ampersand. It has
   to be written `find_equiv(& &"foo")`. We can probably just fix this.

Nevertheless, this is a huge win; it should address a major source of
performance problems, including the one here:

http://maniagnosis.crsr.net/2013/02/creating-letterpress-cheating-program.html
2013-03-05 10:18:36 -08:00
Patrick Walton
c4075492ad librustc: Fix silly bug in AST conversion for const vstores. rs=bugfix
Means that we'll need another snapshot to rid the language of `[const T]`.
2013-03-05 10:18:36 -08:00
Patrick Walton
6d4ed5283c libsyntax: Separate multiple inherited traits with + 2013-03-05 10:18:35 -08:00
bors
e94465c053 auto merge of #5231 : jbclements/rust/better-macro-error-message, r=graydon
Macro invocations with path separators (e.g. foo::bar!()) now produce a sensible error message, rather than an assertion failure. Also added compile-fail test case.

Fixes #5218 ?
2013-03-05 10:06:50 -08:00
bors
afd6196d7b auto merge of #5233 : bstrie/rust/deimpselfcore, r=graydon 2013-03-05 08:12:51 -08:00
bors
5f55a07075 auto merge of #5237 : thestinger/rust/iter, r=nikomatsakis 2013-03-05 07:15:53 -08:00
Daniel Micay
17b5a14c4c trie: fix breaking out of the iterators early 2013-03-05 10:10:22 -05:00
Daniel Micay
f7ae9b1759 trie: fix each_reverse 2013-03-05 09:35:45 -05:00
bors
9ec7f3fa22 auto merge of #5225 : nikomatsakis/rust/issue-5224, r=nikomatsakis
Update region inference for traits so that a method with explicit self doesn't incorrectly cause the entire trait to be tagged as being region-parameterized.

Fixes #5224.

r? @pcwalton
2013-03-05 06:03:43 -08:00
Niko Matsakis
cbfd88a486 Update region inference for traits so that a method with
explicit self doesn't incorrectly cause the entire trait to
be tagged as being region-parameterized.

Fixes #5224.
2013-03-05 08:46:23 -05:00
bors
65986ba0c0 auto merge of #5215 : jld/rust/fn-const-env, r=graydon
Fixes #5210; unblocks #5183.
2013-03-05 03:12:43 -08:00
bors
eddefbc893 auto merge of #5212 : thestinger/rust/iter, r=graydon
A small step towards fixing #2827
2013-03-05 02:06:50 -08:00
bors
75c5bc90d2 auto merge of #5179 : alexcrichton/rust/default-warn-unused-import, r=graydon
I've found that unused imports can often start cluttering a project after a long time, and it's very useful to keep them under control. I don't like how Go forces a compiler error by default and it can't be changed, but I certainly want to know about them so I think that a warn is a good default.

Now that the `unused_imports` lint option is a bit smarter, I think it's possible to change the default level to warn. This commit also removes all unused imports throughout the compiler and libraries (500+).

The only odd things that I ran into were that some `use` statements had to have `#[cfg(notest)]` or `#[cfg(test)]` based on where they were. The ones with `notest` were mostly in core for modules like `cmp` whereas `cfg(test)` was for tests that weren't part of a normal `mod test` module.
2013-03-05 00:57:46 -08:00
bors
71f09813c8 auto merge of #5228 : pcwalton/rust/deriving-clone, r=pcwalton
r? @graydon
2013-03-04 23:57:46 -08:00
Graydon Hoare
ab500d8b8d build fixes 2013-03-04 22:40:59 -08:00
Young-il Choi
a35dc95969 mk: --android-cross-path to rustc 2013-03-05 13:12:23 +09:00