Commit Graph

737 Commits

Author SHA1 Message Date
Eric Holk
8b12892ca2 Convert kinds to strings better for more usable error messages. 2012-05-24 15:06:56 -07:00
Eric Holk
4ffe34cace Updating the comments in kind.rs to better reflect the current state of things. 2012-05-24 15:06:56 -07:00
Eric Holk
8b6bfc96cb Const kind checking. The rules are almost certainly incomplete and unsound... 2012-05-24 15:06:56 -07:00
Eric Holk
d993df74c3 Teach parser and related things to understand const kind bounds. 2012-05-24 15:06:56 -07:00
Niko Matsakis
ccd8d5573e remove dead assignments 2012-05-24 13:35:57 -07:00
Niko Matsakis
f5c51b0a9c remove initedness checking from typestate, as best I could 2012-05-24 09:52:16 -07:00
Niko Matsakis
0d3811e275 improve liveness so it reports unused vars / dead assignments
doesn't warn about pattern bindings yet though
2012-05-24 09:52:16 -07:00
Niko Matsakis
30b47649ea new liveness pass to supercede last_use / initedness 2012-05-24 09:52:03 -07:00
Niko Matsakis
a3be0b1054 fix classes and parameterized ifaces; remove needless self check
ref #1726, #2434
2012-05-24 06:49:40 -07:00
Niko Matsakis
bd573becf5 change region scope of call arguments, old one was unsound
improve error message to describe kind of deref'd ptr using sigil
2012-05-24 05:19:44 -07:00
Niko Matsakis
c9eb9ee612 rewrite purity check to search through scope chain 2012-05-24 05:19:44 -07:00
Eric Holk
5f154770e2 Prevent capturing non-copyable things in closures. 2012-05-23 15:46:43 -07:00
Niko Matsakis
9773a22119 shuffle error messages in borrowck, and prevent it from spewing too many
also, fix a few minor issues it complains about
2012-05-23 12:01:27 -07:00
Eric Holk
8678baab12 Resources are once again not copyable. 2012-05-23 10:27:42 -07:00
Niko Matsakis
e0f59e835e modify borrowck to allow arbitrary borrows in pure scopes 2012-05-23 06:30:29 -07:00
Niko Matsakis
00849191ce refactor loan to not return result<> 2012-05-23 06:30:29 -07:00
Niko Matsakis
01a2e99639 prepare for gather to gather up multiple maps 2012-05-23 06:30:29 -07:00
Brian Anderson
d2ec15bcf1 rustc: Eliminate metadata's dependency on util::common 2012-05-23 00:57:07 -07:00
Brian Anderson
f9d0cde19a syntax: Remove one of the two def_id hashers 2012-05-23 00:45:18 -07:00
Brian Anderson
4756556748 rustc: Move new_def_hash to ast_util 2012-05-23 00:43:02 -07:00
Tim Chevalier
ed357af980 Convert more resource tests to use classes with dtors
And monomorphize dtors correctly.
2012-05-22 22:12:18 -04:00
Brian Anderson
c0a36b71be rustc: Eliminate metadata's dependency on session 2012-05-22 18:07:36 -07:00
Brian Anderson
98b93b6c86 rustc: Eliminate some session deps from metadata::loader 2012-05-22 18:07:36 -07:00
Brian Anderson
c90a047016 rustc: Don't fall back to static libraries when shared isn't found
Nothing on Earth depends on this functionality and it is probably unexpected
2012-05-22 18:07:36 -07:00
Brian Anderson
5b4ab93017 rustc: Add cstore to ty::ctxt so csearch can get at it 2012-05-22 18:07:36 -07:00
Brian Anderson
99c1b2953d syntax: Add diagnostic::expect 2012-05-22 18:07:36 -07:00
Brian Anderson
a32392d032 Merge pull request #2427 from msullivan/shifts
Get rid of the >>> operator and make >> logical or arithmetic depending ...
2012-05-22 17:50:04 -07:00
Michael Sullivan
15cef374b9 Get rid of the >>> operator and make >> logical or arithmetic depending on the signedness. Closes #2417. 2012-05-22 14:59:15 -07:00
Eric Holk
0b2f2cabbe Send is no longer a subkind of copy. This allows for sendable, but non-copyable resources. Closes #2420. 2012-05-22 14:10:32 -07:00
Eric Holk
f213c1f3a8 Represent kinds as a bitfield of capabilities. 2012-05-22 12:48:31 -07:00
Michael Sullivan
8d7f3bd1ca Disallow type parameters to self. Closes #2422. 2012-05-22 11:52:22 -07:00
Niko Matsakis
073f90cdc4 introduce some copies so we are not alting into mut state 2012-05-22 05:21:13 -07:00
Brian Anderson
9aa18c2852 rustc: Move ast_map to the syntax crate 2012-05-21 23:39:27 -07:00
Brian Anderson
47bb1185f2 rustc: Move walk_pat to ast_util
This will allow ast_map to move to the syntax crate
2012-05-21 23:22:08 -07:00
Brian Anderson
df532e7f1b rustc: Remove ast_map's session dependency 2012-05-21 23:22:06 -07:00
Brian Anderson
611890013f rustc: Remove unused import 2012-05-21 22:50:10 -07:00
Brian Anderson
85d67723ee rustc: Move path_to_ident to ast_util 2012-05-21 22:41:59 -07:00
Niko Matsakis
2fa5a66310 remove mutable cycle from ast_fold 2012-05-21 20:07:14 -07:00
Niko Matsakis
34b42eeb65 change list so that it must be used in a purely boxed fashion
The old way was inconsistent---the head was unboxed but the
tail was boxed.  This resulted in numerous needless copies and
also made the borrow check unhappy, because the head tended to be
stored in mutable memory.
2012-05-21 09:37:34 -07:00
Niko Matsakis
8e73bb6ea0 detect and report shadows in nested bindings 2012-05-21 09:37:22 -07:00
Brian Anderson
239cf80c73 rustc: Remove dead code in encoder 2012-05-19 19:09:10 -07:00
Niko Matsakis
28d0ce9a8b fix up handling of &x where x is an arg or &self (for now at least). 2012-05-19 10:33:14 -07:00
Niko Matsakis
774ea145ec make more code use dvec 2012-05-18 20:00:51 -07:00
Niko Matsakis
0f969da882 port some code to use dvec 2012-05-18 20:00:50 -07:00
Niko Matsakis
35f6f37453 avoid modifying the variable we are alting over 2012-05-18 20:00:50 -07:00
Niko Matsakis
c9edc0f0a1 introduce a few copies here and there 2012-05-18 20:00:50 -07:00
Niko Matsakis
f9aef928ca purge ufind 2012-05-18 20:00:50 -07:00
Niko Matsakis
44c100c28d try to improve handling of methods 2012-05-18 20:00:50 -07:00
Niko Matsakis
253979236e print ids of patterns when doing --pretty identified 2012-05-18 19:07:20 -07:00
Niko Matsakis
b79d717c91 fix borrowing pats---the id field of cmt was assoc with wrong pat 2012-05-18 19:07:20 -07:00
Niko Matsakis
19ec5a41ed allow region ptrs to be cast to uints 2012-05-18 19:07:19 -07:00
Niko Matsakis
f1a46914c4 add a new debugging aid--tracing 2012-05-18 19:07:19 -07:00
Eric Holk
0eed37da29 Using const vector slices for more vec functions. 2012-05-18 16:55:42 -07:00
Brian Anderson
e546c4820b rustc: Don't copy vecs in seq_preconds. Huge perf win on some tests
Compile time for the included test goes from 5min to 18s.
2012-05-18 15:59:00 -07:00
Niko Matsakis
67ca37ac61 workaround a horribly obscure resolve bug 2012-05-18 14:32:37 -07:00
Niko Matsakis
a559329692 test that we preserve boxes in patterns---still one bug 2012-05-18 14:32:37 -07:00
Brian Anderson
3f283bb168 rustc: Don't recurse in seq_preconds. Consumes too much stack 2012-05-18 14:28:39 -07:00
Niko Matsakis
5be8bf1de7 use -Z to distinguish internal debugging options 2012-05-18 10:38:18 -07:00
Tim Chevalier
cdcce3ed5d Refactoring, annotating FIXMEs in remainder of metadata code 2012-05-17 22:15:07 -07:00
Tim Chevalier
c97b29afd1 Refactor encoder::encode_module_item_paths
to eliminate some repeated code.
2012-05-17 20:39:17 -07:00
Tim Chevalier
cf2fc2c34e Annotate or fix FIXMEs in LLVM bindings and metadata code
Fixed up a few FIXMEs in lib/llvm to use more descriptive data
types. Covered FIXMEs in metadata::{creader, csearch, decoder} and
one in encoder.
2012-05-17 20:39:17 -07:00
Patrick Walton
37abcda42b rustc: Make type_is_pod class-aware 2012-05-17 17:20:58 -07:00
Lindsey Kuper
7f45ba4744 Move inference-related fields/methods from fn_ctxt to infer_ctxt. 2012-05-17 14:34:41 -07:00
Tim Chevalier
9fa4763604 Comments only: annotate FIXMEs in front-end 2012-05-17 11:32:53 -07:00
Tim Chevalier
55c008874d Comments only: annotate FIXMEs in back-end and driver 2012-05-17 11:20:14 -07:00
Tim Chevalier
db8931c876 Minor edits to README 2012-05-17 10:13:30 -07:00
Tim Chevalier
a4f0021f89 Update and copyedit README for rustc
Lindsey pointed out that the location of librustsyntax was out-of-date,
so I fixed that; noticed a lot of other out-of-date info; and updated it.
I also obliterated all passive voice. Yay!

Closes #2382
2012-05-17 10:10:18 -07:00
Brian Anderson
288799786b rustc: Sever the link between metadata and resolve 2012-05-16 22:46:57 -07:00
Brian Anderson
322b20d14d rustc: Break another dependency between metadata and resolve 2012-05-16 22:28:17 -07:00
Brian Anderson
6a41eb0192 rustc: Break a dependency between metadata and resolve 2012-05-16 21:50:34 -07:00
Graydon Hoare
9752523f3a Include intrinsic module in all crates, emit visit glue, fn intrinsic::visit_ty. Not yet working. 2012-05-16 18:24:00 -07:00
Niko Matsakis
69eca26775 pull out id visitor into ast_util from astencode 2012-05-16 13:30:30 -07:00
Lindsey Kuper
9f8d2b97d3 Another typo fix. 2012-05-16 12:34:10 -07:00
Lindsey Kuper
76f49e497e Typo fixes. 2012-05-16 12:09:55 -07:00
Niko Matsakis
fa2ac66462 add a large comment on how infer works 2012-05-16 09:42:38 -07:00
Niko Matsakis
558be3a70f pull method lookup / region manip into their own modules 2012-05-16 08:51:16 -07:00
Niko Matsakis
564aa59a3f further reorganization 2012-05-16 08:02:43 -07:00
Niko Matsakis
63210ecddb correct preservation of explicit borrows like "let x = &*y;" 2012-05-16 07:19:19 -07:00
Niko Matsakis
5c8069d817 break out type checking of alts/patterns (again) 2012-05-16 06:57:13 -07:00
Niko Matsakis
da98e14c94 Revert "break out type checking of alts/patterns"
This reverts commit 8d1c1720e3.
2012-05-16 06:38:23 -07:00
Niko Matsakis
8d1c1720e3 break out type checking of alts/patterns 2012-05-16 06:37:53 -07:00
Niko Matsakis
fc8e1cb646 missing import 2012-05-16 06:16:55 -07:00
Niko Matsakis
7512284a94 further modularization of typeck, add comments 2012-05-16 06:06:42 -07:00
Brian Anderson
0e21a05e6c rustc: Extract loader mod from creader mod
loader is a utility for locating crates and loading their metadata.
creader is a compiler pass that loads metadata for all used libraries.
2012-05-15 21:36:16 -07:00
Niko Matsakis
9c7b74b025 check if the type of a local variable contains illegal region
also, try to suppress some of the duplicate errors---in general
more work is needed to make these error messages comprehensible
to ordinary humans
2012-05-15 21:20:37 -07:00
Tim Chevalier
8448711534 Add classes and class fields to the tcache
They were being added lazily, which prevented class types from being
used as an argument to a variant.
2012-05-15 20:35:57 -07:00
Tim Chevalier
bdef90730e Clarify a comment
...at least I think this is what was meant.
2012-05-15 20:35:57 -07:00
Tim Chevalier
e2d18c9a8a Remove an assertion from trans::base::iter_structural_ty
I had put in an assertion that if the ty is a class, it doesn't have a dtor,
but that doesn't make sense, since this gets used to make take glue and
not just drop glue.
2012-05-15 20:35:57 -07:00
Niko Matsakis
ab735320b4 move regionck into typeck, in the process fixing a bug or two 2012-05-15 19:05:03 -07:00
Tim Chevalier
fa5cc5bcd0 Generate drop glue correctly for classes with destructors 2012-05-15 18:00:41 -07:00
Patrick Walton
8fe0461f06 Remove the unused pairwise.rs 2012-05-15 15:08:52 -07:00
Niko Matsakis
250bbddb90 move infer into typeck module 2012-05-15 14:06:51 -07:00
Niko Matsakis
26dc48d67f break apart typeck a little (more to come) 2012-05-15 13:38:29 -07:00
Niko Matsakis
adb61e3e99 get preservation of boxes working, at least in simple cases 2012-05-15 13:38:16 -07:00
Niko Matsakis
4c7be32606 add node_ids to blocks 2012-05-15 11:49:11 -07:00
Niko Matsakis
e139793313 purge unused loop_cont field 2012-05-15 11:49:11 -07:00
Niko Matsakis
be48cd87dc make poison-on-free work, disable copying if borrowck is enabled 2012-05-15 11:49:08 -07:00
Lindsey Kuper
b8880e3254 Remove be keyword.
Closes #2227.
2012-05-15 10:41:14 -07:00
Brian Anderson
452fc46ffc rustc: Break some of metadata's dependencies on session 2012-05-14 20:41:33 -07:00
Brian Anderson
0f49928c2d rustc: Break metadata's dependency on link 2012-05-14 19:04:32 -07:00
Brian Anderson
f08fe56479 rustc: Break more metadata dependencies 2012-05-14 19:04:32 -07:00
Brian Anderson
fce6a474b1 rustc: Eliminate metadata's dependency on astencode 2012-05-14 19:04:32 -07:00
Brian Anderson
5c864e9de0 rustc: Eliminate encoder's dependency on astencode 2012-05-14 19:04:32 -07:00
Brian Anderson
32c4b6da5b rustc: Move astencode from metadata to middle 2012-05-14 19:04:31 -07:00
Graydon Hoare
e12b16cde7 Instantiate per-type iface-based visit_glue when intrinsic ifaces present. 2012-05-14 17:57:48 -07:00
Graydon Hoare
d899c3a579 More work on reflection, now calls iface visitors back as well. 2012-05-14 15:49:10 -07:00
Tim Chevalier
5428a22b95 First cut at dtors for classes
Classes with dtors should compile now. Haven't yet tested
whether they actually run correctly.

Beginnings of support for #2295, though that won't be done until
there's more test cases and resources are removed.
2012-05-14 14:26:10 -07:00
Tim Chevalier
89cd2f6bd0 Enforce that self doesn't escape from a class
Closes #2294
2012-05-14 14:26:10 -07:00
Brian Anderson
11e9947ff5 rustc: Eliminate a simple dependency from metadata mod 2012-05-13 17:49:27 -07:00
Brian Anderson
1f52652a06 rustc: Eliminate some indirection to the syntax crate 2012-05-13 17:33:29 -07:00
Brian Anderson
a2572fe77e rustc: Eliminate metadata's dependency on trans 2012-05-13 17:08:35 -07:00
Brian Anderson
ecf290d448 rustc: Be explicit about which peer modules the metadata mod can access
This is the first step in eliminating dependencies on rustc so we can extract
the metadata code into its own crate.
2012-05-13 15:58:10 -07:00
Niko Matsakis
63eb8e0e87 move purity checking into borrowck, addresses #1422 2012-05-11 14:05:58 -07:00
Graydon Hoare
2585384c97 First working monomorphic type-reflection. 2012-05-11 13:10:07 -07:00
Niko Matsakis
b4d1f1b2c1 replace mutbl pass with borrowck 2012-05-10 21:14:43 -07:00
Graydon Hoare
c23d6a50d7 Preliminary groundwork for intrinsic module, reflection interface. 2012-05-10 17:18:04 -07:00
Paul Stansifer
13c924c049 Remove do { ... } while ... from the language. 2012-05-10 15:09:33 -07:00
Paul Stansifer
5af58e7926 Removed all 4 uses of do ... while in the codebase. 2012-05-10 14:21:04 -07:00
Brian Anderson
fa6c18e014 rustc: Refactor driver to better understand string sources 2012-05-09 23:40:50 -07:00
Niko Matsakis
50a3dd40ae implement new borrow ck (disabled by default) 2012-05-09 17:00:19 -07:00
Niko Matsakis
5e7229b72c reduce self type to a special type parameter 2012-05-09 07:11:59 -07:00
Brian Anderson
d41af13334 rustc: Extract session::basic_options from rustdoc 2012-05-08 22:33:45 -07:00
Marijn Haverbeke
96a159a6ea Support visibility modifiers and attributes on view items
Issue #1893
Tangentially, issue #2357
2012-05-08 23:14:24 +02:00
Marijn Haverbeke
b619954457 Start parsing pub/priv on regular items
Issue #1893
2012-05-08 16:09:40 +02:00
Brian Anderson
b99038c2bf rustc: Put all boxes into addrspace 1 2012-05-07 15:24:32 -07:00
Tim Chevalier
0e43e8ccc8 That awkward moment when you forget to add your final changes
Fixes build breakage.
2012-05-07 15:15:13 -07:00
Tim Chevalier
4f105e4025 In resolve, visit the path in an iface ref
Necessary to resolve any type arguments in a ref to a parameterized
iface. This meant that, for example:

class A implements B<int> { ...

didn't work before, because the "int" in B's argument wasn't getting
visited, and thus wasn't getting resolved. Now it works.

Partially addresses Issue #2288, but I also want to check that class
ty params can appear as the type arguments to ifaces (for example,

class A<T> implements B<T> {...

should work.)
2012-05-07 14:43:31 -07:00
Niko Matsakis
8a9df5aa38 make it illegal to implicitly capture mutable variables
this is the final part of #1273
2012-05-07 13:22:42 -07:00
Niko Matsakis
50ec6bd2c3 new cap clause syntax 2012-05-04 12:33:08 -07:00
Tim Chevalier
8affc78e8a Turn constants in back::abi into uints, and propagate types
This means GEPi now takes a list of uints. Apologies in advance
if this is hard to rebase against, but it gets rid of many a cast :-)

Also modernized some for loops here and there.
2012-05-03 22:31:38 -07:00
Niko Matsakis
a7e0eb3581 allow enums that ref themselves via unsafe pointers 2012-05-03 17:08:18 -07:00
Tim Chevalier
29b807be2a Removed unused import of std::deque 2012-05-03 15:37:02 -07:00
Niko Matsakis
cfa09d35a3 Revert "allow fn exprs to omit arg types"
This reverts commit 1ba4ca4c4a.
2012-05-03 14:42:34 -07:00
Niko Matsakis
1ba4ca4c4a allow fn exprs to omit arg types
also, avoid using type variables for fn args with omitted types
unless necessary.  This will be important for bound regions in
fn types.

fixes #2093
2012-05-03 14:32:32 -07:00
Graydon Hoare
11a5d10bf2 Implement better shape code for evec, estr. 2012-05-03 13:09:02 -07:00
Tim Chevalier
d8f28be753 Check early on in typeck that types being implemented are actually iface types
Closes #2330.
2012-05-03 12:38:45 -07:00
Brian Anderson
74096a79d8 rustc: Fix comment about ABI in trans::native 2012-05-03 12:07:43 -07:00
Brian Anderson
af263e43c2 rustc: Link to original Clay x86 classification code 2012-05-03 11:42:25 -07:00
Jyun-Yan You
bdebe92400 add forgotten index and fix array type 2012-05-03 09:43:00 -07:00
Marijn Haverbeke
d0d71838cd Mention missing constructor when complaining about inexhaustive top-level pattern
It previously, uselessly, only pointed out the constructor when the
inexhaustive pattern was nested in some other pattern.

Closes #2337
2012-05-03 17:35:12 +02:00
Niko Matsakis
f1129635ee report ambig impl methods 2012-05-02 21:47:14 -07:00
Brian Anderson
11354963b3 rustc: Hack around some FFI bustage. Unbreak servo 2012-05-02 18:35:29 -07:00
Graydon Hoare
b12e27595e Error message reformatting, close #2309. 2012-05-02 14:47:33 -07:00
Tim Chevalier
931514cfb6 Remove commented-out code and old comments that accidentally snuck in 2012-05-02 14:02:22 -07:00
Tim Chevalier
3d4ef74c9b Encode the ifaces a class implements in metadata
This lets you use class A as if it had type B if A implements B,
and A and B are in different crates from your own.

Closes #2285
2012-05-02 13:38:56 -07:00
Graydon Hoare
1c1af99052 Fix symbol mangling in the presence of trailing version numbers. 2012-05-01 17:21:06 -07:00
Graydon Hoare
79ed1f2df4 New lint pass for picking out uses of old-style vecs and str. 2012-05-01 12:58:07 -07:00
Tim Chevalier
46425af8a5 Remove code that was accidentally committed
This was a workaround for the bug that was actually fixed in
164039e867
2012-05-01 08:48:25 -07:00
Tim Chevalier
164039e867 Don't re-export a glob-imported ID when the same ID is defined within
a module

See the test case I added (issue-2316-c) for a concrete example.
issue-2316 also contains the originally reported test case. resolve
was using bitwise or instead of logical or when checking exports,
resulting in excessively eager evaluation. A one-line fix that took
six hours to isolate ;-)
2012-05-01 08:43:17 -07:00
Niko Matsakis
2db4259b35 Stop inferring bot/static when types/regions are unconstrained.
Also, some other changes that came up along the way:
- add a 'blk' region for the current block.
- detect unused type/region variables.
2012-04-30 19:53:02 -07:00
Tim Chevalier
85fbfa25d7 Revert "Eliminate a copy in syntax::parse::new_parser_from_file"
This reverts commit 2bb3b63ec4.

(I was confused.)
2012-04-30 11:52:07 -07:00
Tim Chevalier
2bb3b63ec4 Eliminate a copy in syntax::parse::new_parser_from_file
Fixing a FIXME turned out to be pretty involved. I added an io function
that returns a unique boxed string (for the contents of a file) rather than
a string, and went from there. Also made the src field of codemap a unique
boxed string. This doesn't seem to make that much difference in amount of
allocation according to valgrind (disappointingly), but I also had to introduce
a copy somewhere else pending a new snapshot, so maybe that's it.
2012-04-30 10:44:31 -07:00
Brian Anderson
dc117fecde rustc: Use a slightly more consistent style for unexpected errors 2012-04-28 16:38:06 -07:00
Brian Anderson
0be41ce02b rustc: Remove old align_of intrinsic 2012-04-27 15:40:43 -07:00
Brian Anderson
582c71731d rustc: Clean up some enum code 2012-04-27 11:24:43 -07:00
Brian Anderson
e4277472d2 core: Split sys::align_of into min_align_of, pref_align_of 2012-04-27 00:12:42 -07:00
Brian Anderson
f4f909b8b5 rustc: Add min_align_of, pref_align_of intrinsic, deprecate align_of 2012-04-27 00:12:39 -07:00
Brian Anderson
1c46ee34be rustc: Add llalign_of_min 2012-04-26 21:59:59 -07:00
Brian Anderson
43751e45d9 rustc: Rename llalign_of_real to llalign_of_pref
This alignment is the "preferred" alignment of a type, which is not
necessarily the alignment the compiler will use when packing the
type into structures - that is the "ABI" alignment (in LLVM terms).

On x86, 64-bit ints have 8-byte preferred alignment, but 4-byte
ABI alignment.
2012-04-26 21:44:29 -07:00
Brian Anderson
3c16693760 rustc: Add LLVM bindings for more alignment-related functions 2012-04-26 21:33:38 -07:00
Graydon Hoare
1f92538e38 Add check for path-statements, close #400. 2012-04-26 14:43:43 -07:00
Graydon Hoare
33a296f2fc Lowercase warning message. 2012-04-26 14:43:43 -07:00
Graydon Hoare
61575582ba Describe warnings on command line if user says -W help. 2012-04-26 14:43:43 -07:00
Niko Matsakis
825fd1808e lots of work to make iface/impls parameterized by regions
- paths can now take region parameters, replacing the dirty hack
  I was doing before of abusing vstores.  vstores are now a bit
  of a hack though.

- fix various small bugs:
  - we never checked that iface types were compatible when casting
    to an iface with `as`
  - we allowed nonsense like int<int>
  - and more! (actually that may be it)
2012-04-25 19:26:56 -07:00
Graydon Hoare
458d2ff067 Be a bit more cautious about marking things no-throw. 2012-04-25 18:53:54 -07:00
Graydon Hoare
753b683939 More slice use in vec, io, str, ebml, metadata encoder and decoder. 2012-04-25 17:19:36 -07:00
Graydon Hoare
90c1b4645f Set no-unwind on glue functions that don't drop resources. 2012-04-25 17:19:36 -07:00
Graydon Hoare
fa6c68a025 Set no-unwind attribute on all upcalls other than fail. 2012-04-25 17:19:36 -07:00
Brian Anderson
3a3a7fc426 rustc: Cache normalized types 2012-04-25 15:49:27 -07:00
Brian Anderson
df0ef528b9 rustc: Use LLVM named structs for enum types 2012-04-25 15:49:25 -07:00
Marijn Haverbeke
10120cce0f typeck: Take more care to pass down expected types
This helps with prototype inference and avoids some 'must be known
in this context' errors.
2012-04-25 17:45:29 +02:00
Marijn Haverbeke
9f99c3263b Rewrite exhaustiveness checker
Issue #2111
2012-04-25 09:15:17 +02:00
Brian Anderson
5a0c564817 Revert "rustc: Use LLVM named structs for enum types"
This reverts commit 6e909e387d.
2012-04-24 20:47:06 -07:00
Brian Anderson
b88ecec08c Revert "rustc: Cache normalized types"
This reverts commit 06afe21c03.
2012-04-24 20:47:00 -07:00
Brian Anderson
06afe21c03 rustc: Cache normalized types 2012-04-24 18:24:35 -07:00
Brian Anderson
6e909e387d rustc: Use LLVM named structs for enum types 2012-04-24 18:24:35 -07:00
Graydon Hoare
929c3dd710 Workarounds for bug #2280: add some temporaries for borrowing. 2012-04-24 15:19:01 -07:00
Brian Anderson
e7dbf42214 rustc: Fix type_need_unwind_cleanup. Closes #2272 2012-04-24 14:55:16 -07:00
Brian Anderson
5437a045fc rustc: Remove a bitcast. Issue #2276 2012-04-24 14:00:50 -07:00
Brian Anderson
b4a3d525d8 rustc: Eliminate trans dependency from metadata::tyencode 2012-04-23 23:41:18 -07:00
Tim Chevalier
f7641286b2 Allow classes to be cast to ifaces that are in the same crate
I had to xfail one existing test case (class-implements-int) because,
I think, of the same bug described in #2272.
2012-04-23 21:15:03 -07:00
Tim Chevalier
1c39fda0ea Rename option::get_or_default to get_default, for consistency 2012-04-23 20:52:50 -07:00
Niko Matsakis
b04b415e0d encode the borrowing table, add a simple cross-crate borrowing test 2012-04-23 16:41:11 -07:00
Tim Chevalier
7d05bea7b9 Fix bug with * patterns in trans_alt
enter_opt was handling the (*) case wrong and causing a bounds check
    failure. Fixed it (the test case is one of the extracted ones from
    the reference manual)
2012-04-23 15:50:51 -07:00
Niko Matsakis
71128e75b0 moderate comment, remove some dead regions code 2012-04-23 08:02:59 -07:00
Niko Matsakis
7113a2c30b remove dead code 2012-04-23 08:02:59 -07:00
Niko Matsakis
4eb71c07c6 remove outdated comment 2012-04-23 08:02:59 -07:00
Niko Matsakis
30d563839e Various regions fixes. 2012-04-23 08:02:59 -07:00
Niko Matsakis
0d3658bb43 rewrite the resolution infrastructure; but it's still grody 2012-04-23 08:02:58 -07:00
Marijn Haverbeke
68f8812511 Guard against infinitely expanding generic/inline functions
Closes #2220

Test case disabled until a memory-leak issue is resolved.
2012-04-23 16:44:52 +02:00
Marijn Haverbeke
2782cfb783 Emit a more useful error when using an unsuitable function for a loop
Closes #2255
2012-04-23 15:43:29 +02:00
Marijn Haverbeke
9053f54498 Move map iface over to more for-friendly iteration methods 2012-04-23 15:18:19 +02:00
Marijn Haverbeke
a872a99bfe Simplify representation of ast::path 2012-04-23 13:04:46 +02:00
Marijn Haverbeke
587d8a5d4f Misc code cleanups using list::each for list iteration 2012-04-23 12:13:59 +02:00
Marijn Haverbeke
dfdca5d538 Fix broken determination of external method type param count
Closes #2185
2012-04-23 09:25:14 +02:00
Brian Anderson
734494a04d rustc: Cache constant C strings. Closes #2264 2012-04-21 14:26:13 -07:00
Tim Chevalier
734166f41c Print out return type correctly in typestate error message
In the "not all paths return" error message, typestate was printing
the AST type from the fn decl, not the ty::t type. This ended in tears
when the AST return type was "ty_infer". Now it looks up the function node
ID's type and uses util::ppaux::ty_to_str instead.

Closes #2163.
2012-04-20 18:48:08 -07:00
Graydon Hoare
14d0509691 Log decoded inline_items when debug is active. 2012-04-20 17:18:42 -07:00
Graydon Hoare
355422ddbd Implement tydecode::parse_vstore. 2012-04-20 17:18:42 -07:00
Graydon Hoare
90f82e171d Get borrowing working on fixed evecs. 2012-04-20 12:11:55 -07:00