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
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
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
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
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
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
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
a2572fe77e
rustc: Eliminate metadata's dependency on trans
2012-05-13 17:08:35 -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
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
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
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
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
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
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
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
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