Commit Graph

14944 Commits

Author SHA1 Message Date
Patrick Walton
eb4d39e1fe libstd: Remove "dual impls" from the language and enforce coherence rules. r=brson
"Dual impls" are impls that are both type implementations and trait
implementations. They can lead to ambiguity and so this patch removes them
from the language.

This also enforces coherence rules. Without this patch, records can implement
traits not defined in the current crate. This patch fixes this, and updates
all of rustc to adhere to the new enforcement. Most of this patch is fixing
rustc to obey the coherence rules, which involves converting a bunch of records
to structs.
2013-01-29 10:42:45 -08:00
Tim Chevalier
f1e78c6dd7 Merge pull request #4672 from alexcrichton/linearmap-len-fix
Fix the len() method on LinearMap during popping
2013-01-29 10:38:41 -08:00
Alex Crichton
810eeef444 Fix the len() method on LinearMap during popping 2013-01-29 11:16:39 -05:00
William Ting
bb51a8442f Add support for Ubuntu named clang packages.
Ubuntu's clang packages have additional information appended to the end of
the version.

- Building Rust v0.5 with clang v3.0-6ubuntu3 fails.
- Building Rust v0.5 and incoming with clang v3.1-5ppa (backported from Debian)
works.

Closes #4441.
2013-01-28 21:54:11 -08:00
Tim Chevalier
fc9650b146 testsuite: De-record most bench tests 2013-01-28 19:41:56 -08:00
Tim Chevalier
3b36708ca7 testsuite: De-record pretty tests 2013-01-28 19:41:56 -08:00
Tim Chevalier
58ec84a098 testsuite: Remove structural records from remaining compile-fail tests 2013-01-28 19:41:56 -08:00
Tim Chevalier
15871a7458 rustc: Check struct field types when heap memory lint checks are enabled 2013-01-28 19:41:56 -08:00
Tim Chevalier
91676f3fa6 syntax: Don't add an extra space before the last comma...
...when printing struct update expressions.
2013-01-28 19:41:56 -08:00
Tim Chevalier
9f11485357 testsuite: Allow structural records in two tests that use pipes 2013-01-28 19:41:56 -08:00
Tim Chevalier
93043baab4 testsuite: Add #[allow(structural_records)] to pipes tests
These will require a snapshot.
2013-01-28 19:41:56 -08:00
Tim Chevalier
dd38af240b compiletest: Allow legacy records
But also remove most uses of structural records.
2013-01-28 19:41:56 -08:00
Tim Chevalier
c5461e46ae core: Allow legacy records in in a few modules
Because of macros, #[allow(structural_records]] in
extfmt, gc, os, pipes, and run. Will need a snapshot.
2013-01-28 19:41:56 -08:00
Tim Chevalier
31d78b2f07 Add #[legacy_records] crate attribute
In rustc, rustdoc, rusti, syntax, and std.
2013-01-28 19:41:56 -08:00
Tim Chevalier
6cbccc92b7 rustc: In lint, forbid structural records unless legacy_records is on 2013-01-28 19:41:55 -08:00
Tim Chevalier
db6af50d53 rustc: Add legacy_records field to the type context 2013-01-28 19:41:55 -08:00
Brian Anderson
a72aeef9f7 Revert readline optimization and add test 2013-01-28 19:32:02 -08:00
Tim Chevalier
3a6849f36b Revert "Revert "Merge pull request #4633 from thestinger/treemap""
This reverts commit d73077f82d.
2013-01-28 17:20:29 -08:00
Brian Anderson
ab0b7b2784 Add Michael Neumann to AUTHORS 2013-01-28 14:42:46 -08:00
Brian Anderson
d9170e14b1 Tidy 2013-01-28 14:41:20 -08:00
Michael Neumann
d38939c7e8 Slightly optimize read_line()
No need to allocate an additional vector. Instead directly push into the
string.
2013-01-28 14:40:11 -08:00
Michael Neumann
1ecdf3abc1 Greatly improve performance for TcpSocketBuf.read
For every call to the read() function the internal buffer was copied
into a new buffer (minus the bytes copied into the result buffer). When
the internal buffer is large enough, this severely affects performance,
especially when read_line() is used which calls read_byte() (which calls
read()) for each read byte.

For line oriented I/O this wasn't all that bad, because the internal
buffers usually never were very big. The effect is much more visible
once the buffer grows larger.

Now we always first look into the internal buffer and copy as many bytes
as possible (and desired) into the result buffer. If we need more, we
call the socket read function and use the result as the new internal
buffer, then continue to copy from the (new) internal buffer, and so on.
2013-01-28 14:40:11 -08:00
Michael Neumann
0c3ef3cc6b Convert log(debug, ...) to debug!(...) 2013-01-28 14:40:11 -08:00
Michael Neumann
02de11c1e7 Fix example code 2013-01-28 14:40:11 -08:00
Brian Anderson
2a48aef0a8 Merge remote-tracking branch 'thestinger/hashmap' into deriving 2013-01-28 14:28:59 -08:00
Brian Anderson
c75cc0aa10 Merge remote-tracking branch 'codeblack08/treemap-ord' into deriving 2013-01-28 14:15:58 -08:00
Daniel Micay
8eaf0737b7 get rid of LinearMap's find_copy method 2013-01-28 16:06:09 -05:00
Niko Matsakis
e8f3690123 Change "// WARN" in tidy to "// NOTE" as requested by @catamorphism 2013-01-28 10:01:59 -08:00
Niko Matsakis
ef4c060594 Address @catamorphism's comments regarding docs 2013-01-28 10:01:59 -08:00
Niko Matsakis
4b15bfde81 loan: Track whether or not the current path owns the data being
lent.  We can be more liberal with respect to the scope of the loan
if we do not own the data being lent, which used to be impossible
but can now occur with `&mut`.

r=pcwalton
2013-01-28 10:01:59 -08:00
Niko Matsakis
b4acde3bf7 remove unused variable 2013-01-28 10:01:59 -08:00
Niko Matsakis
e6cadc4c03 remove hacks now that #3148 is fixed
r=brson
2013-01-28 10:01:59 -08:00
Niko Matsakis
2b67d88809 Rewrite the coercion code to be more readable, more sound, and to reborrow when
needed.

Regarding soundness: there was a subtle bug in how it was done before; see the
compile-fail test for an example.

Regarding reborrowing: reborrowing allows mut and const
slices/borrowed-pointers to be used with pure fns that expect immutable data.

r=brson
2013-01-28 10:01:59 -08:00
Niko Matsakis
c07ae16de1 rename assign to coerce, remove some bad copies
r=brson
2013-01-28 10:01:59 -08:00
Niko Matsakis
05b6df49b8 Refactor to make inference code around unification more readable
r=brson
2013-01-28 10:01:59 -08:00
Niko Matsakis
923b3154c6 Do not try to encode/decode inference types, should not be necessary
r=brson
2013-01-28 10:01:59 -08:00
Niko Matsakis
19e015c44a Add to_str() definitions for some AST types
r=brson
2013-01-28 10:01:59 -08:00
Niko Matsakis
08bc19cbcd Remove bounds from type decl of smallintmap
r=brson
2013-01-28 10:01:55 -08:00
Niko Matsakis
a4ba11189d Extend region guarantor logic to handle autoref, which will
be necessary for reborrowing.

r=catamorphism
2013-01-28 10:00:41 -08:00
Niko Matsakis
8f14d43206 Make tidy actually work
r=catamorphism
2013-01-28 10:00:39 -08:00
Niko Matsakis
0004be9eca Detect "// WARN" in tidy and print out, well, a warning! Useful
for notating FIXME-style-situations that you want to be reminded
of before you commit.

r=catamorphism
2013-01-28 10:00:35 -08:00
Niko Matsakis
2e10ea58c3 Integrate vec patterns into borrow checker.
The tail portion of the pattern effectively borrows a vector,
but the borrow checker knew nothing about this.

r=catamorphism
2013-01-28 10:00:32 -08:00
Niko Matsakis
d4fd30c6ac Link the lifetimes of regions resulting from borrows of the
contents of other borrowed pointers to the lifetimes of the
borrowed value.  Fixes #3148.

r=catamorphism
2013-01-28 10:00:23 -08:00
Cody Schroeder
6a4d1855bf std: implement lexicographical Ord for TreeMap/TreeSet 2013-01-26 16:39:17 -08:00
Brian Anderson
83ca034d2e Merge remote-tracking branch 'brson/nocommupstream2' 2013-01-26 14:57:58 -08:00
Graydon Hoare
2372d2c6a8 register more-conservative linux snap 2013-01-26 14:11:34 -08:00
Tim Chevalier
bb183b93ea testsuite: Eliminate structural records from run-fail tests 2013-01-26 11:38:00 -08:00
Tim Chevalier
72b669df43 fuzzer: Remove structural records 2013-01-26 11:35:17 -08:00
Tim Chevalier
e910e601a6 cargo: remove structural records 2013-01-26 11:35:17 -08:00
Tim Chevalier
0743cec023 core: Remove structural records in library tests 2013-01-26 11:35:17 -08:00