400 Commits

Author SHA1 Message Date
Patrick Walton
d2e1bfb123 librustc: Long line. rs=burning 2013-01-30 14:30:42 -08:00
Patrick Walton
ae50912875 librustc: De-export rustc. rs=deexporting 2013-01-30 13:44:24 -08:00
Patrick Walton
cc9999c609 librustc: De-record the type context. rs=derecordification 2013-01-30 13:14:58 -08:00
Patrick Walton
684aa2b7fd librustc: De-export ty. rs=deexporting 2013-01-30 12:18:08 -08:00
Patrick Walton
ba11e96289 librustc: De-export trans. rs=deexporting 2013-01-30 11:47:02 -08:00
Brian Anderson
7ad0716275 rustc: Convert to pipes 2013-01-30 01:52:01 -08:00
Patrick Walton
28ed9dc09e librustc: Long lines. rs=burning 2013-01-29 22:40:13 -08:00
Patrick Walton
0c1d9befb3 librustc: Speed up byte copy operations. r=nmatsakis 2013-01-29 22:15:06 -08:00
Patrick Walton
97c593a1ce librustc: Stop zeroing out allocas so much. Cuts 300K off librustc. 2013-01-29 22:14:08 -08:00
Patrick Walton
1b613ff9fc librustc: Strdup unique strings instead of copying in byte by byte. Shaves 2MB off librustc at -O0. 2013-01-29 22:14:08 -08:00
Patrick Walton
a47fa9b32f librustc: De-export some of trans. rs=deexporting 2013-01-29 22:14:08 -08:00
Tim Chevalier
a30ea013f5 Handle supertrait calls in default methods
Add a new method_super origin for supertrait methods. Also make
coherence create a table that maps pairs of trait IDs and self types
to impl IDs, so that it's possible to check a supertrait method
knowing only its index in its trait's methods (without knowing all
supertraits for a given trait).

r=nmatsakis and graydon -- with hope, we'll revamp all of this code as
per #4678, but for now this fixes the bug.

Closes #3979
2013-01-29 20:33:22 -08:00
Patrick Walton
464ec27fd3 librustc: De-export metadata. rs=deexporting 2013-01-29 16:51:16 -08:00
Patrick Walton
bae4821851 librustc: De-export typeck. rs=deexporting 2013-01-29 16:26:16 -08:00
Patrick Walton
c25703ccb8 librustc: De-export front, borrowck, and typeck/check. rs=deexporting 2013-01-29 16:05:13 -08:00
Patrick Walton
2ea2628ca9 librustc: De-export back, lib, and util. rs=deexporting 2013-01-29 15:48:50 -08:00
Patrick Walton
3105bcfdc1 librustc: De-export driver. rs=deexport 2013-01-29 15:16:43 -08:00
Patrick Walton
226cd68f13 librustc: De-implicit-self the visitor. r=graydon 2013-01-29 10:43:12 -08:00
Patrick Walton
6ce74460e6 librustc: Disallow trait bounds in types, enumerations, and structure definitions. r=tjc 2013-01-29 10:42:58 -08:00
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
15871a7458 rustc: Check struct field types when heap memory lint checks are enabled 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
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
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
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
Tim Chevalier
2c78169508 Merge pull request #4644 from martica/camel-case-option
Update more uses of Option, Some and None to camel case
2013-01-25 19:21:16 -08:00
Tim Chevalier
41adf9d8ef rustc: Make build_wrap_ret compile on Windows and unrevert ABI patch
This reverts commit 625405562c278cb2e45bec6805f13d2c1de8049e.
2013-01-25 18:57:01 -08:00
Tyler Bindon
633b40f75d Fix Option camel case in debug messages 2013-01-25 19:42:23 -07:00
Tyler Bindon
3a5d2cdbf3 Fix Option camel case in comments 2013-01-25 19:42:23 -07:00
Tyler Bindon
7ff7489dc6 Fix Option camel case in error message 2013-01-25 19:42:23 -07:00
Tim Chevalier
85a34c2898 Merge pull request #4625 from thestinger/container
more little container improvements
2013-01-25 11:57:51 -08:00
Tim Chevalier
e3daab7051 rustc: Address an XXX in middle::mode 2013-01-24 21:12:44 -08:00
Tim Chevalier
cff4f1476e rustc: Less copy 2013-01-24 20:42:21 -08:00
Daniel Micay
e4337a9def remove remaining is_not_empty functions/methods 2013-01-24 23:24:57 -05:00
Daniel Micay
d95c9cbe38 replace ConstVector trait with the Container trait 2013-01-24 23:02:44 -05:00
Tim Chevalier
c3f4f654eb comments: Convert XXXes to FIXMEs 2013-01-24 18:49:51 -08:00
Tim Chevalier
9898485d4f Merge pull request #4613 from erickt/incoming
convert most of libcore and libstd to structs, work around tzset race
2013-01-24 17:24:45 -08:00
Tim Chevalier
f19e16881e syntax/rustc: Less copy 2013-01-24 16:45:20 -08:00
Erick Tryzelaar
e84576b888 convert most of libstd over to structs 2013-01-24 16:24:31 -08:00
Tim Chevalier
5ff6beed60 rustc: One Less Bad Copy 2013-01-24 15:24:01 -08:00