Commit Graph

14875 Commits

Author SHA1 Message Date
Luqman Aden
09255dbe2d libsyntax: error on struct Foo {}. 2013-03-27 18:17:58 -07:00
bors
f7f6013a62 auto merge of #5574 : thestinger/rust/docstring, r=sanxiyn 2013-03-27 17:48:56 -07:00
Tim Chevalier
b0d1643fa6 core/std: Remove uses of ++ mode
from stackwalk::frame_address and net_tcp::on_tcp_read_cb
As per #4425
2013-03-27 17:14:10 -07:00
Tim Chevalier
31f8093037 core: Remove unused import 2013-03-27 17:14:06 -07:00
Luqman Aden
63df1e9085 librustc: remove already addressed XXX 2013-03-27 16:29:32 -07:00
Luqman Aden
778f84524b librustc: add default per arch clobbers for asm. 2013-03-27 15:41:58 -07:00
Luqman Aden
b867fe41de libsyntax: Allow selecting intel style asm. 2013-03-27 15:41:58 -07:00
Luqman Aden
203d691a6b libsyntax: use a struct for inline asm in ast. 2013-03-27 15:41:58 -07:00
Luqman Aden
727a565f1e librustc: Move inline asm stuff to different mod. 2013-03-27 15:41:58 -07:00
Patrick Walton
58338dd3d0 librustc: Fix ICE with cross-crate extern statics. rs=bugfix 2013-03-27 15:41:43 -07:00
bors
30b1957cd4 auto merge of #5569 : thestinger/rust/map, r=catamorphism 2013-03-27 14:31:03 -07:00
Daniel Micay
d2b267bcb5 add a TotalEq trait 2013-03-27 17:29:10 -04:00
Patrick Walton
70b56fa5e9 librustc: Allow expr_repeat to be used with any vstore 2013-03-27 14:13:07 -07:00
Patrick Walton
e5dda811a9 librustc: Allow expr_repeat to be used with any vstore 2013-03-27 13:53:03 -07:00
bors
995425badb auto merge of #5558 : nikomatsakis/rust/issue-4920-autoref-index-operator, r=nikomatsakis
Per discussion on IRC.

r? @pcwalton
2013-03-27 13:27:58 -07:00
Niko Matsakis
2a74fda316 Fix pretty-printer test failure by carrying the bound lifetime names through
the types.  Initially I thought it would be necessary to thread this data
through not only the AST but the types themselves, but then I remembered that
the pretty printer only cares about the AST.  Regardless, I have elected to
leave the changes to the types intact since they will eventually be needed.  I
left a few FIXMEs where it didn't seem worth finishing up since the code wasn't
crucial yet.
2013-03-27 11:35:04 -07:00
Graydon Hoare
83aa70d7e3 another pub fn for check-fast 2013-03-27 11:30:38 -07:00
Daniel Micay
91cb6687a8 cmp: rm TotalOrd impl code duplication 2013-03-27 14:17:16 -04:00
Tim Chevalier
fad05591e5 testsuite: more pub fn main 2013-03-27 10:09:03 -07:00
Tim Chevalier
e23fad0e6a Oh, cool, I xfailed the wrong test, neat 2013-03-27 10:09:02 -07:00
Tim Chevalier
e01cf3caf5 testsuite: Add various test cases
Some are xfailed, some not, some existing ones get un-xfailed.
2013-03-27 10:09:02 -07:00
Niko Matsakis
069529bc5c Autoref the argument to the index operator (#4920) 2013-03-27 13:04:03 -04:00
Huon Wilson
ab5346d119 librustc: Limit the typo suggestions to reasonable suggests.
Impose a limit so that the typo suggester only shows reasonable
suggestions (i.e. don't suggest `args` when the error is `foobar`).
2013-03-28 02:19:40 +11:00
Patrick Walton
b93393e907 test: xfail-pretty one of the run-pass tests. rs=burningtree 2013-03-27 07:35:49 -07:00
Erick Tryzelaar
c317d3f6fa std: add some better failure msgs to json 2013-03-27 07:04:17 -07:00
Erick Tryzelaar
83e831bc22 syntax: Remove deprecated expr_vstore_fixed 2013-03-27 07:04:16 -07:00
Erick Tryzelaar
7a199d41a9 syntax: fix pretty printing __log stmts 2013-03-27 07:04:15 -07:00
Erick Tryzelaar
2e0b363a7f syntax: Remove dead code from the parser 2013-03-27 07:04:15 -07:00
Erick Tryzelaar
b26ae289d0 syntax: Fix parsing global generics (Closes #5572) 2013-03-27 07:04:14 -07:00
Erick Tryzelaar
4e9a63ff91 std: add tests for decoding json enums 2013-03-27 07:04:14 -07:00
Erick Tryzelaar
4d6dcefcbb std: Decode::read_enum_variant should pass in the variant names
Because the json::Decoder uses the string variant name, we need a
way to correlate the string to the enum index. This passes in a
static &[&str] to read_enum_variant, which allows the json::Decoder
to know which branch it's trying to process.
2013-03-27 07:04:13 -07:00
Erick Tryzelaar
478e4498b7 std: add option type directly to serialize::{En,De}code 2013-03-27 07:04:12 -07:00
Erick Tryzelaar
4d995e66a2 std: change default json enum encoder to use strings or a flat vec 2013-03-27 07:04:12 -07:00
Erick Tryzelaar
b10b8c3ee4 std: Add tests for json decoding options 2013-03-27 07:04:11 -07:00
Erick Tryzelaar
c9188c8301 std: fix json PrettyEncoder and add tests 2013-03-27 07:04:10 -07:00
Erick Tryzelaar
6cf99fa54a std: change fail_unless to assert_eq in json.rs 2013-03-27 07:04:09 -07:00
Erick Tryzelaar
89fc95885f std: serializing Options should use the right case 2013-03-27 07:02:59 -07:00
Erick Tryzelaar
b290863be6 std: clean json test imports 2013-03-27 07:01:50 -07:00
Erick Tryzelaar
bd77e9433f syntax: pass some values around by reference 2013-03-27 07:01:45 -07:00
Erick Tryzelaar
2f1ab3a7fa syntax: Add new values that can be used with the quasiquoter 2013-03-27 06:49:39 -07:00
Niko Matsakis
2c17ff7dbc Simplify and remove unnecessary use of ast_map 2013-03-27 07:10:04 -04:00
Niko Matsakis
aa67deff33 remove sty_by_ref, though traces still remain due to dtors 2013-03-27 07:09:16 -04:00
Daniel Micay
1c6272a267 base64: add docstring 2013-03-27 03:42:03 -04:00
Daniel Micay
9c1bbc586c ops: add a docstring 2013-03-27 03:42:03 -04:00
Daniel Micay
4d3b0a1529 hashmap: improve docstring 2013-03-27 03:42:00 -04:00
Patrick Walton
2888563510 test: Fix botched error message in compile-fail test 2013-03-26 23:31:56 -07:00
Patrick Walton
b07b36bbf3 test: Fix tests 2013-03-26 22:45:22 -07:00
Patrick Walton
f41a510631 librustc: Remove obsolete syntax 2013-03-26 21:30:18 -07:00
Patrick Walton
0a4d0f37ca librustc: Enforce that extern mod directives come first, then use directives, then items.
Resolve them in this order as well.
2013-03-26 21:30:17 -07:00
Patrick Walton
8b56a8380b librustc: Modify all code to use new lifetime binder syntax 2013-03-26 21:30:17 -07:00
Patrick Walton
15688eaf28 librustc: Require explicit lifetime binders 2013-03-26 21:29:35 -07:00
Patrick Walton
3b2fcf9f59 librustc: Fix bug with newtype structs containing dtors 2013-03-26 21:29:35 -07:00
Patrick Walton
a376f46862 librustc: Stop parsing [T * N]. 2013-03-26 21:29:35 -07:00
Patrick Walton
142dbd65da librustc: Remove all uses of the old [T * N] fixed-length vector syntax 2013-03-26 21:29:34 -07:00
Patrick Walton
46d4cc12d1 libsyntax: Stop parsing [const T]. 2013-03-26 21:29:34 -07:00
Patrick Walton
0d52b22e7b libcore: Change [const T] to const [T] everywhere 2013-03-26 21:29:33 -07:00
bors
5df1aaab98 auto merge of #5414 : thestinger/rust/option, r=catamorphism 2013-03-26 20:18:54 -07:00
Daniel Micay
34c5a09ce3 option: rm functions that duplicate methods 2013-03-26 22:44:40 -04:00
bors
4cb5854d88 auto merge of #5560 : brson/rust/relnotes, r=brson
r?
2013-03-26 19:24:53 -07:00
Daniel Micay
05fba8c8f4 fix the core-map benchmark's descending range 2013-03-26 21:12:49 -04:00
bors
5011d05db2 auto merge of #5547 : catamorphism/rust/issue-4898, r=catamorphism 2013-03-26 17:54:53 -07:00
Alex Crichton
d69108d8f7 std: Remove the oldmap module 2013-03-26 19:21:05 -04:00
Alex Crichton
dbe1354321 Move ast_map::map to LinearMap 2013-03-26 19:21:05 -04:00
Alex Crichton
b53057f49d test: Remove uses of oldmap::HashMap 2013-03-26 19:21:04 -04:00
Alex Crichton
17459d0bd3 rustc: Purge of HashMap, fixing segfaulting cases
Various FIXME comments added around to denote copies which when removed cause
the compiler to segfault at some point before stage2. None of these copies
should even be necessary.
2013-03-26 19:21:04 -04:00
Alex Crichton
6f812fef1b rustc: Remove uses of oldmap::HashMap 2013-03-26 19:21:04 -04:00
Alex Crichton
e4c3d805a4 syntax: Removing uses of HashMap 2013-03-26 19:20:02 -04:00
Alex Crichton
fa7772893a Remove unused imports throughout 2013-03-26 19:20:02 -04:00
Tim Chevalier
3ba7e041f1 core: As per #4898, finish impls for one-tuples 2013-03-26 16:08:05 -07:00
bors
3d588c5286 auto merge of #5555 : Kimundi/rust/str-dealloc-3, r=catamorphism
- Most functions that used to return `~[~str]` for a list of substrings got turned into iterators over `&str` slices
- Some cleanup of apis, docs and code layout
2013-03-26 15:07:07 -07:00
bors
3f7c74d022 auto merge of #5467 : nikomatsakis/rust/issues-3888-4036-4492-cannot-encode-region-variables, r=nikomatsakis
The basic problem was that vtables were not being resolved.  The fix uncovered another issue, which was that the syntax extensions were not creating method calls properly and were relying on outdated code in typeck, so I fixed that too.  

Resolves issues #3888, #4036, #4492.

r? @catamorphism
2013-03-26 13:22:11 -07:00
Niko Matsakis
3ca7c225e5 Stop writing directly to the final type/method/vtable sidetables from astconv
and from typeck, which is verboten.  We are supposed to write inference results
into the FnCtxt and then these get copied over in writeback.  Add assertions
that no inference by-products are added to this table.

Fixes #3888
Fixes #4036
Fixes #4492
2013-03-26 15:39:12 -04:00
Brian Anderson
f792d177a4 core: Hide GC docs 2013-03-26 12:27:47 -07:00
Niko Matsakis
6f2783d515 Add various debug statements to trans that I used to help track down the
problem and which seem like they could be useful in the future.
2013-03-26 15:16:58 -04:00
Niko Matsakis
e11d13f3de Rip out old code that still structured method calls as a
expr_call(expr_field(...)) rather than an expr_method_call.
There is probably more such code in trans that should be removed.
2013-03-26 15:16:58 -04:00
bors
bbc4ca1349 auto merge of #5532 : brson/rust/coredocs, r=brson
r?
2013-03-26 12:16:19 -07:00
Brian Anderson
e5f8026eba core: Make sure every module at least has a one-line description 2013-03-26 11:48:22 -07:00
Brian Anderson
113fbfc795 core: Clarify prelude docs. #4556 2013-03-26 11:47:52 -07:00
Niko Matsakis
0dc6c414af Check for null in return_to_mut. Fixes #4904. 2013-03-26 14:12:13 -04:00
Niko Matsakis
5f52669296 Fix #4855: handle bot in regionck 2013-03-26 14:12:13 -04:00
Marvin Löbel
de468c8cd2 Added more missing lifetime annotations 2013-03-26 19:07:14 +01:00
bors
7f5d7e1c2e auto merge of #5549 : brson/rust/rustdoc, r=brson
r?
2013-03-26 09:52:14 -07:00
Brian Anderson
4d745c288a rustdoc: Tweak list style 2013-03-26 09:31:44 -07:00
Brian Anderson
34392ad5b4 rustdoc: Add type bounds to impls 2013-03-26 09:20:40 -07:00
Brian Anderson
0a0d3c7bd9 rustdoc: Handle impl method visibility correctly. #5533 2013-03-26 09:20:40 -07:00
Brian Anderson
a346def8b2 rustdoc: Build the crate config correctly. Fixes #5011 2013-03-26 09:20:40 -07:00
Brian Anderson
043150b9ab rustdoc: Sanitize links harder 2013-03-26 09:20:37 -07:00
bors
de7d558944 auto merge of #5553 : pnkfelix/rust/doc-fixes-for-0.6-incoming, r=sanxiyn 2013-03-26 08:58:20 -07:00
Marvin Löbel
c88a20d171 Added missing lifetime annotations, doc and whitespace cleanups 2013-03-26 16:24:15 +01:00
Marvin Löbel
06c371605b Fixed all use sites and tests 2013-03-26 14:59:17 +01:00
Marvin Löbel
c99488b3a4 Isolated bug, static vector seems to behave differently than fixed sized one 2013-03-26 14:59:17 +01:00
Marvin Löbel
b9de2b5787 Switched over a bunch of splitting funktions to non-allocating iterators 2013-03-26 14:59:17 +01:00
Marvin Löbel
d74606ead6 pre-rebase commit 2013-03-26 14:59:17 +01:00
Marvin Löbel
624a685283 Moved float str buffer constants to the strconv module 2013-03-26 14:59:17 +01:00
bors
74fb263f7a auto merge of #5546 : nikomatsakis/rust/ty_region-useful-span, r=catamorphism
r? @catamorphism
2013-03-26 06:58:10 -07:00
Felix S. Klock II
7b6e90630e Cleanup wording around the awkward "and so on is . ." in the README.txt. 2013-03-26 14:18:48 +01:00
Felix S. Klock II
afaa48cfb5 Spelling fixes; replaced size with capacity in few places. 2013-03-26 14:18:48 +01:00
Felix S. Klock II
a266bda393 Fixes mozilla/rust#3612. 2013-03-26 14:18:48 +01:00
bors
125cdf52cd auto merge of #5542 : catamorphism/rust/issue-4983, r=catamorphism 2013-03-26 04:42:57 -07:00
bors
dfedcc39da auto merge of #5539 : apasel422/rust/kate, r=brson 2013-03-26 02:27:59 -07:00
bors
5591d347cf auto merge of #5536 : sanxiyn/rust/doc-purity, r=brson
Fix #3804.
2013-03-26 00:18:57 -07:00
bors
7481524978 auto merge of #5528 : thestinger/rust/find_mut, r=brson
This currently requires workarounds for the borrow checker not being flow-sensitive for `LinearMap` and `TrieMap`, but it can already be expressed for `TreeMap` and `SmallIntMap` without that.
2013-03-25 22:24:57 -07:00
bors
47ddb59b80 auto merge of #5525 : dbaupp/rust/minor_fixups, r=graydon
Kills some warnings, and implements str::each_char_reverse so that it actually iterates. The test case wasn't detecting a failure, since the loop body was never executed.
2013-03-25 21:18:57 -07:00
bors
02d5f090dc auto merge of #5524 : luqmana/rust/repeat-loop, r=pcwalton
`let v = [24, ..1000];` now more or less emits the same IR as:

```Rust
let mut i = 0;
while i < 1000 {
    v[i] = 24;
    i += 1;
}
```

LLVM will still turn it into a memset if possible with optimization on.
2013-03-25 20:16:01 -07:00
bors
00605d58de auto merge of #5513 : apasel422/rust/deriving, r=luqmana
This removes some explicit implementations of `Eq` in favor of `#[deriving(Eq)]` and derives `Clone` for a few core types.
2013-03-25 19:01:00 -07:00
bors
b48e6998d7 auto merge of #5509 : thestinger/rust/oldmap, r=brson
The reasoning for doing it this way is that it's much easier to transition method-by-method to the `Map` API than trying to do the migration all at once.

I found an issue unrelated to my changes in one of the run-fail tests - if it uses `LinearMap`, it still fails but exits with 0. I xfailed it for now and opened [an issue](https://github.com/mozilla/rust/issues/5512), because it's not caused by these changes.
2013-03-25 18:01:04 -07:00
Luqman Aden
e7f42f140b Expand on cleanups in trans for expr_repeat and add to tests. 2013-03-25 15:46:10 -07:00
Niko Matsakis
057c40d5bd make ty_region give a useful span when it fails 2013-03-25 17:39:15 -04:00
bors
ef282dbe2a auto merge of #5409 : brson/rust/rt, r=brson
r?

There are a lot of commits here, but not all that much substance. Mostly just refactoring.

I started sketching out the beginnings of a very simple I/O API in `core::rt::io` that represents I/O streams as a single `Stream` trait instead of `Reader` / `Writer` pairs. This seems to be the more common pattern (at least this is how the .NET BCL does it) and it seems to me that separate readers and writers would make duplex streams very awkward. Regardless, I don't intend to go very far down the I/O API design road without some mailing list discussion.

I've also started on the uv bindings for file I/O but haven't gotten very far.

Also hooked up the new scheduler to `rust_start` and the compiletest driver. 70% of run-pass test cases already pass, but I wouldn't read too much into that.

I also split the direct, low-level uv bindings in two so that the scheduler can have its own set, leaving `std::net` on its own.
2013-03-25 13:01:11 -07:00
Brian Anderson
30d4124a37 Merge remote-tracking branch 'brson/rt'
Conflicts:
	src/libcore/rt/context.rs
	src/libcore/rt/sched.rs
	src/libcore/rt/thread.rs
	src/libcore/rt/uv.rs
2013-03-25 12:28:54 -07:00
bors
6d4499ce4d auto merge of #5424 : luqmana/rust/inline-rt, r=brson
As per #2521. Inlining seems to improve performance slightly:

                 Inlined          Not Inlined
    x86:         13.5482            14.4112
    x86_64:      17.4712            18.0696

(Average of 5 runs timed with `time`)

```Rust

fn foo() -> int {
    int::from_str(~"28098").unwrap()
}

fn main() {
    for 1000000.times {
        foo();
        foo();
        foo();
        foo();
        foo();
    }
}
```

All run on:

    Linux 3.2.0-0.bpo.4-amd64 #1 SMP Debian 3.2.35-2~bpo60+1 x86_64 GNU/Linux

The MIPS and ARM bits I didn't inline since I'm not as familiar with them and I also can't test them. All green on try.
2013-03-25 12:04:11 -07:00
Tim Chevalier
6647150657 core: Fix doc comment error, as per #4983 2013-03-25 11:12:14 -07:00
Andrew Paseltiner
8604165871 kate: remove const, log, and pure keywords, add super keyword 2013-03-25 08:25:19 -04:00
Seo Sanghyeon
585c57234f rustdoc: Show purity 2013-03-25 15:02:42 +09:00
Daniel Micay
e8bf0a4a49 trie: improve docstring 2013-03-25 00:22:23 -04:00
Daniel Micay
38f39ac540 expose find_mut in the Map trait 2013-03-24 21:40:16 -04:00
Daniel Micay
f0f4a00e88 smallintmap: add find_mut method 2013-03-24 21:40:13 -04:00
Daniel Micay
89e2578a9d trie: add find_mut method 2013-03-24 20:30:35 -04:00
Daniel Micay
d77433386b hashmap: add find_mut method 2013-03-24 19:19:38 -04:00
Huon Wilson
89a7407c99 librustc: clean-up expr_repeat loop generation: use native integers 2013-03-24 14:19:31 -07:00
Daniel Micay
7948149456 treemap: add a find_mut method 2013-03-24 16:58:52 -04:00
Huon Wilson
29e8b6ea9b libcore: implement str::each_char_reverse correctly.
Previously, `each_char_reverse` was not iterating at all, so the
testcase never ran properly.
2013-03-25 01:17:40 +11:00
Huon Wilson
12df65470f Kill some warnings: unused imports and old #[deny(..)]s. 2013-03-25 01:17:23 +11:00
Luqman Aden
441313fc0c librustc: emit loop for expr_repeat instead of 2n instructions in [x, ..n] 2013-03-24 00:59:44 -07:00
Daniel Micay
a919e5ede5 make crates with the same name sort consistently 2013-03-23 21:15:26 -03:00
bors
a56ec8c134 auto merge of #5515 : nikomatsakis/rust/issue-5514-flexible-coherence-rules, r=pcwalton
See issue #5514

r? @pcwalton
2013-03-23 12:36:53 -07:00
Patrick Walton
8aee0a6a29 libsyntax: Fix static in pretty printer. rs=burningtree 2013-03-23 10:28:24 -07:00
Niko Matsakis
a1b4afe067 Update coherence rules to be more flexible for impl Trait for Type 2013-03-23 09:49:47 -04:00
Andrew Paseltiner
45677eebf2 replace impls with deriving where applicable 2013-03-23 06:57:30 -04:00
Andrew Paseltiner
2b83defa4a core: derive Clone for core types 2013-03-23 06:54:13 -04:00
Daniel Micay
11ca2efce1 turn std::oldmap into a wrapper around LinearMap 2013-03-23 02:16:14 -04:00
Patrick Walton
28efc234f4 libcore: Fix obsolete syntax in extfmt 2013-03-22 23:09:15 -07:00
Patrick Walton
e2fde83ce4 libsyntax: Stop parsing old lifetime syntax 2013-03-22 22:24:36 -07:00
Patrick Walton
66770d20b3 test: Add lifetime binders and new-style lifetime parameters to the test suite 2013-03-22 22:24:36 -07:00
Patrick Walton
6d81307a9b librustc: Add explicit lifetime binders and new lifetime notation in core/std/syntax/rustc 2013-03-22 22:24:35 -07:00
Patrick Walton
68cb53672b libsyntax: Stop parsing const. 2013-03-22 22:24:35 -07:00
Patrick Walton
85c9fc6f8f librustc: Remove the const declaration form everywhere 2013-03-22 22:24:35 -07:00
Patrick Walton
eba3367404 libsyntax: Introduce the new assert! macro; make assert no longer a keyword 2013-03-22 22:24:34 -07:00
Patrick Walton
fa70709e07 libsyntax: Stop parsing pure and static 2013-03-22 22:24:33 -07:00
Daniel Micay
705c796ffa remove obsolete purity workarounds 2013-03-22 18:08:56 -04:00
Daniel Micay
0c8c3b4232 trie: make the TrieSet impl public 2013-03-22 18:04:35 -04:00
Daniel Micay
55fbb9518b trie: inline the other TrieSet wrapper methods 2013-03-22 18:04:35 -04:00
Daniel Micay
04e367b353 trie: rm workaround for issue #3469 2013-03-22 18:03:55 -04:00
bors
e9b077c0e9 auto merge of #5488 : pcwalton/rust/depure, r=pcwalton 2013-03-22 13:00:56 -07:00
Patrick Walton
3eda11a4f7 test: Remove pure from the test suite 2013-03-22 12:57:28 -07:00
Patrick Walton
fbe22afdbe librustdoc: Remove pure from fuzzer and rustdoc. 2013-03-22 12:57:28 -07:00
Patrick Walton
e7c60c141b librustc: Remove pure from libsyntax and librustc. 2013-03-22 12:57:27 -07:00
Patrick Walton
ec59ce5796 test: Fix test. rs=test 2013-03-22 12:57:27 -07:00
bors
b6f9aa1fd7 auto merge of #5483 : pcwalton/rust/static-syntax, r=graydon
r? @nikomatsakis
2013-03-22 11:21:48 -07:00
Patrick Walton
c1084091d4 libstd: Remove all uses of pure from libstd. rs=depure 2013-03-22 10:29:17 -07:00
Patrick Walton
be9bddd463 libcore: Remove pure from libcore. rs=depure 2013-03-22 10:29:17 -07:00
Patrick Walton
4634f7edae librustc: Remove all uses of static from functions. rs=destatic 2013-03-22 10:27:39 -07:00
bors
f011f928dd auto merge of #5463 : alexcrichton/rust/faster-fmt, r=graydon
This is a minor step towards #3571, although I'm sure there's still more work to be done. Previously, `fmt!` collected a bunch of strings in a vector and then called `str::concat`. This changes the behavior by maintaining only one buffer and appending directly into that buffer. This avoids doubly-allocating memory, and it has the added bonus of reducing some allocations in `core::unstable::extfmt`

One of the unfortunate side effects of this is that the `rt` module in `extfmt.rs` had to be duplicated to avoid `stage0` errors. Dealing with the change in conversion functions may require a bit of a dance when a snapshot happens, but I think it's doable.

If the second speedup commit isn't deemed necessary, I got about a 15% speedup with just the first patch which doesn't require any modification of `extfmt.rs`, so no snapshot weirdness.

Here's some other things I ran into when looking at `fmt!`:
* I don't think that #2249 is relevant any more except for maybe removing one of `%i` or `%d`
* I'm not sure what was in mind for using traits with #3571, but I thought that formatters like `%u` could invoke the `to_uint()` method on the `NumCast` trait, but I ran into some problems like those in #5462

I'm having trouble thinking of other wins for `fmt!`, but if there's some suggestions I'd be more than willing to look into if they'd work out or not.
2013-03-22 10:18:53 -07:00
bors
1616ffd0c2 auto merge of #5398 : dbaupp/rust/core-readlines, r=graydon
The `each_line` function in `ReaderUtil` acts very differently to equivalent functions in Python, Ruby, Clojure etc. E.g. given a file `t` with contents `trailing\nnew line\n` and `n` containing `no trailing\nnew line`:

Rust:
```Rust
t: ~[~"trailing", ~"new line", ~""]
n: ~[~"no trailing", ~"new line"]
```

Python:
```Python
>>> open('t').readlines()
['trailing\n', 'new line\n']
>>> open('n').readlines()
['no trailing\n', 'new line']
```

Ruby:
```Ruby
irb(main):001:0> File.readlines('t')
=> ["trailing\n", "new line\n"]
irb(main):002:0> File.readlines('n')
=> ["no trailing\n", "new line"]
```

Clojure
```Clojure
user=> (read-lines "t")
("trailing" "new line")
user=> (read-lines "n")
("no trailing" "new line")
```

The extra string that rust includes at the end is inconsistent, and means that it is impossible to distinguish between the "real" empty line a file that ends `...\n\n`, and the "fake" one after the last `\n`.

The code attached makes Rust's `each_line` act like Clojure (and PHP, i.e. not including the `\n`), as well as adjusting `str::lines` to fix the trailing empty line problem.

Also, add a convenience `read_lines` method to read all the lines in a file into a vector.
2013-03-22 09:24:53 -07:00
Alex Crichton
e93654c96d Pass the fmt! buffer to each conversion method
Achieves a little more speedup and avoids allocations around some strings in
conv_str
2013-03-22 11:49:45 -04:00
Alex Crichton
c0bbc6242f Removing some unused imports 2013-03-22 11:49:45 -04:00
Alex Crichton
1a0d212dd9 Build up the result of fmt! in a buffer instead of a vector 2013-03-22 11:49:45 -04:00
bors
d700500d0c auto merge of #5471 : erickt/rust/incoming, r=bstrie
I made a typo in `str::levdistance` in my str pull request. This fixes it.
2013-03-22 06:21:51 -07:00
Huon Wilson
f8323397aa compiletest: Use lines_each instead of lines(..).each, or split(.., n).each 2013-03-23 00:15:06 +11:00
Huon Wilson
429b8a9b9e libcore: handle trailing newlines more like other languages.
Specifically, `lines` and `each_line` will not emit a trailing empty string
when given "...\n". Also, add `read_lines`, which just collects all of
`each_line` into a vector, and `split_*_no_trailing` which will is the
generalised version of `lines`.
2013-03-23 00:15:05 +11:00
Andrew Paseltiner
999e7ef9a9 syntax: make old #[deriving_foo] attribute obsolete 2013-03-22 07:15:13 -04:00
Andrew Paseltiner
e2abecd3ab syntax: replace uses of old deriving attribute with new one 2013-03-22 06:30:59 -04:00
Andrew Paseltiner
6e883c730e compiletest: replace uses of old deriving attribute with new one 2013-03-22 06:30:59 -04:00
Andrew Paseltiner
ec960963c1 test: replace uses of old deriving attribute with new one 2013-03-22 06:30:53 -04:00
Andrew Paseltiner
9966eaaba4 rustc: replace uses of old deriving attribute with new one 2013-03-22 06:24:19 -04:00
Andrew Paseltiner
72d7d60155 fuzzer: replace uses of old deriving attribute with new one 2013-03-22 06:24:19 -04:00
Andrew Paseltiner
baf6a6373f rustdoc: replace uses of old deriving attribute with new one 2013-03-22 06:24:19 -04:00
Andrew Paseltiner
4055fe83f6 std: replace uses of old deriving attribute with new one 2013-03-22 06:24:19 -04:00
Andrew Paseltiner
98e8fe12d2 core: replace uses of old deriving attribute with new one 2013-03-22 06:24:19 -04:00
bors
9584c60871 auto merge of #5484 : pcwalton/rust/snapshots, r=pcwalton 2013-03-22 00:00:50 -07:00
bors
334e921421 auto merge of #5481 : thestinger/rust/deque, r=z0w0 2013-03-21 21:57:52 -07:00
Erick Tryzelaar
557b8cce8e core: fix a typo in levdistance 2013-03-21 20:45:37 -07:00
bors
d52408d46a auto merge of #5480 : pcwalton/rust/at-const, r=pcwalton
r? @catamorphism
2013-03-21 20:39:51 -07:00
bors
5f2d4102c5 auto merge of #5479 : Kimundi/rust/str-dealloc, r=z0w0
This makes the `trim` and `substr` functions return a slice instead of an `~str`, and removes the unnecessary `Trimmable` trait (`StrSlice` already contains the same functionality).

Also moves the `ToStr` implementations for the three str types into the str module in anticipation of further untangling.
2013-03-21 19:39:53 -07:00
Patrick Walton
e7dbe6cd6f librustc: Register new snapshots 2013-03-21 18:10:20 -07:00
Patrick Walton
94327d00c6 librustc: Replace the &static bound with 'static 2013-03-21 17:31:35 -07:00
Patrick Walton
02c49b32ca libsyntax: Remove @const from the language 2013-03-21 17:31:35 -07:00
Patrick Walton
d4fee24c7c librustc: Forbid destructors from being attached to any structs that might contain non-Owned fields. r=nmatsakis 2013-03-21 17:31:34 -07:00
bors
80d47fd11f auto merge of #5476 : thestinger/rust/bench, r=graydon
The old string benchmarks weren't very useful because the strings weren't long enough, so I just threw those out for now. I left out benchmarks of `oldmap` because it's clear that it's 30-40% slower and it doesn't implement the `Map` trait.

This also cleanly divides up `insert`, `search` and `remove`.
2013-03-21 17:00:57 -07:00
Daniel Micay
b2060174d4 deque: add a module docstring 2013-03-21 19:14:02 -04:00
bors
ec8345b18a auto merge of #5407 : jbclements/rust/add-assert-eq-macro, r=jbclements
Adds an assert_eq! macro that asserts that its two arguments are equal. Error messages can therefore be somewhat more informative than a simple assert, because the error message includes "expected" and "given" values.
2013-03-21 15:24:54 -07:00
Marvin Löbel
0a47cd5ef1 Un-renamed trim and substr functions. 2013-03-21 23:06:05 +01:00
Marvin Löbel
ee2f3d9673 Switched over substr and trim functions in str to be non-allocating, temporary renamed them to better track use-sites 2013-03-21 23:06:04 +01:00
Daniel Micay
5acfe3d537 replace the core-map benchmark
* Closes #4603
2013-03-21 17:50:12 -04:00
Daniel Micay
5d4063083b trie: make impl pub 2013-03-21 17:50:12 -04:00
bors
ed25a674ac auto merge of #5468 : z0w0/rust/iluvdatjit, r=pcwalton 2013-03-21 12:55:01 -07:00
bors
6aa612a909 auto merge of #5461 : catamorphism/rust/flagless, r=nikomatsakis
r? @nikomatsakis The typechecker previously passed around a boolean return flag to
indicate whether it saw something with type _|_ (that is, something
it knows at compile-time will definitely diverge) and also had some
manual checks for the `ty_err` pseudo-type that represents a previous
type error. This was because the typing rules implemented by the
typechecker didn't properly propagate _|_ and ty_err. I fixed it.

This also required changing expected error messages in a few tests,
as now we're printing out fewer derived errors -- in fact, at this
point we should print out no derived errors, so report any that
you see (ones that include "[type error]") as bugs.
2013-03-21 11:46:00 -07:00
Tim Chevalier
f36f9fc91c rustc: Comments only - explain the invariant about ty_err and ty_bot a little 2013-03-21 11:32:57 -07:00
Patrick Walton
5726fd4526 librustc: Forbid access to cross-crate private static methods 2013-03-21 09:47:17 -07:00
bors
56d288d0dc auto merge of #5464 : luqmana/rust/const-pat, r=pcwalton
r? @pcwalton
2013-03-21 08:49:13 -07:00
Patrick Walton
efb5f8734a libcore: Remove a few possibly-cyclic imports in an effort to unbreak the tree on Linux 2013-03-21 08:06:20 -07:00
bors
b8899138f8 auto merge of #5466 : Kimundi/rust/view-slice-rename, r=bstrie
A slice now always refers to something that returns an borrowed pointer, views don't exist anymore. If you want to have an explictit copy of a slice, use `to_owned()`
2013-03-21 07:06:54 -07:00
bors
0b4f2687ce auto merge of #5470 : sanxiyn/rust/remove-oldmap-2, r=sanxiyn
Referencing #4986.
2013-03-21 06:15:58 -07:00
Seo Sanghyeon
e2b9cddbbb Switch impls_seen from oldmap 2013-03-21 22:11:30 +09:00
Marvin Löbel
9d9a209e9a back-renamed slice_DBG_BRWD, slice_V_DBG_BRWD -> slice, slice_DBG_UNIQ -> slice_unique 2013-03-21 14:05:57 +01:00
Seo Sanghyeon
f0beb8c059 Switch CoherenceInfo from oldmap 2013-03-21 20:55:28 +09:00
Marvin Löbel
8f4448837b removed str::slice_DBG_UNIQ 2013-03-21 11:59:25 +01:00
Patrick Walton
1fa2b9980f test: XFAIL test issue-4120 due to Valgrind complaints. 2013-03-21 03:55:25 -07:00
Seo Sanghyeon
dad5c3029d Time type checking passes separately 2013-03-21 19:28:58 +09:00
Seo Sanghyeon
64d923f7dd Move the function to time passes to util 2013-03-21 18:50:02 +09:00