Niko Matsakis
263f4c58a0
add tydescs into shape, rewrite walk_fn_contents()
2012-01-12 13:47:38 -08:00
Niko Matsakis
e55aa6e5ef
free uniq data we encounter on the sweep, walk thru them otherwise
2012-01-12 13:47:38 -08:00
Marijn Haverbeke
efb9df1ebd
Make driver::session::session no longer an object
...
Rather, it is now a struct where properties like opts are accessed
directly, and the error-reporting methods are part of a static impl
(with the same name as the type).
2012-01-12 18:04:02 +01:00
Marijn Haverbeke
56fe4c2681
Implement passing cast-to-vtable values as bounded params
...
Closes #1492
2012-01-12 16:57:58 +01:00
Kevin Atkinson
44352df57c
Cleanups to previous commits for issue #1393 .
2012-01-12 09:55:48 +01:00
Marijn Haverbeke
4c9c1cd199
Fix dependency bug iface-did-of-impl resolving
...
By simply not resolving that def id until the typeck pass.
Closes #1494
2012-01-11 21:40:13 +01:00
Marijn Haverbeke
15744210e7
Implement std::map as an iface/impl instead of an obj
2012-01-11 20:33:44 +01:00
Marijn Haverbeke
f2352f4062
Fix regression in resolving of external impls
2012-01-11 17:12:11 +01:00
Marijn Haverbeke
0145b15f0c
Pass type with params intact as item_type for method callees
...
This prevents trans_args from optimizing out nil return types. The
method might be generic, in which case it *will* write to a nil retptr.
2012-01-11 11:11:45 +01:00
Kevin Atkinson
1dc3debdaf
Add support for casting enum-like tags to scalar values.
2012-01-10 15:59:57 -08:00
Kevin Atkinson
08abf8d37f
Support explicit discriminant numbers on tag variants.
...
Addresses issue #1393 .
For now disallow disr. values unless all variants use nullary
contractors (i.e. "enum-like").
Disr. values are now encoded in the crate metadata, but only when it
will differ from the inferred value based on the order.
2012-01-10 15:59:57 -08:00
Niko Matsakis
1592de0faf
replace lambda with fn@
2012-01-10 13:31:06 -08:00
Niko Matsakis
8b911587df
rename sendfn to fn~, lambda to fn@
2012-01-10 13:31:06 -08:00
Brian Anderson
af086aa8ef
rustc: Remove sret attributes from functions
...
Something about the way we're using it is causing incorrect code generation.
Closes #1343
2012-01-10 13:28:12 -08:00
Austin Seipp
a94b1ccacb
Change all uses of 'when' in alt-patterns to 'if'
...
Issue #1396
2012-01-09 19:27:05 -08:00
Graydon Hoare
8387896dda
Remove proto_sugar and 'lambda' as keyword, commit to fn@.
2012-01-09 16:12:48 -08:00
Marijn Haverbeke
9e2b273221
Iface types are not structural
...
Not sure how they ended up being marked as such.
2012-01-09 16:44:37 +01:00
Marijn Haverbeke
a62bd9abec
Work around recursive type check for iface types
...
They are nominal, and can safely refer to themselves.
2012-01-09 16:25:39 +01:00
Marijn Haverbeke
c13f087454
Properly recognize self as an upvar when closed over
...
Closes #1463
2012-01-09 16:25:39 +01:00
Niko Matsakis
51364b5708
Fix #1474 : check that block args resolved to bare fns do not make use of upvars
2012-01-09 06:50:40 -08:00
Marijn Haverbeke
9fa7491676
Don't resolve upvars in fn() { ... } exprs
...
Closes #1467
2012-01-09 11:32:18 +01:00
Niko Matsakis
91cd57e872
correct long line
2012-01-08 15:32:03 -08:00
Niko Matsakis
7a336f1e7c
modify last use to take into account cap clause, add new test
2012-01-08 14:57:03 -08:00
Marijn Haverbeke
7d3f892f35
First barely-working version of casting to iface
...
Issue #1437
2012-01-08 23:07:15 +01:00
Marijn Haverbeke
a161371d13
Add fall-through case for non-iface bounds typeck::lookup_method
...
Closes #1462
2012-01-08 21:59:37 +01:00
Niko Matsakis
1e674ffe43
choose a new arbitrary value
2012-01-06 22:40:32 -08:00
Niko Matsakis
0595f57186
revert changes to trans_uniq.rs
2012-01-06 22:40:32 -08:00
Niko Matsakis
154f81b0be
revert metrics
2012-01-06 22:40:32 -08:00
Niko Matsakis
6237368cc2
plug leak: free shared type descrs recursively, as we ought to
2012-01-06 22:40:32 -08:00
Niko Matsakis
d1b987d292
hack the tydesc that is registered with a malloc to be what cc expects
2012-01-06 22:40:31 -08:00
Niko Matsakis
8506241f3a
fix how we walk functions to match new closure fmt
2012-01-06 22:40:31 -08:00
Niko Matsakis
8e89df69de
rejigger impl to have an opaque closure ptr rather than
...
opaque closure
2012-01-06 22:40:31 -08:00
Niko Matsakis
7db640e63d
collapse sizeof, alignof into metrics, pass along an instance if avail
2012-01-06 22:40:31 -08:00
Niko Matsakis
4f52e5a5ec
make size_of and align_of take an optional value
2012-01-06 22:40:31 -08:00
Niko Matsakis
2074e06278
emit the take glue for closure tydescs
2012-01-06 22:40:31 -08:00
Niko Matsakis
98f5109cde
simplify task impl
2012-01-06 22:40:31 -08:00
Tim Chevalier
7c7559edaf
Disallow variable names that shadow tags in scope
...
Now, if you have a tag named "foo", a variable declaration like
"let foo..." is illegal. This change makes it possible to eliminate
the '.' after a nullary tag pattern in an alt (but I'll be doing
that in a future commit) -- as now it's always obvious whether a
name refers to a tag or a new declared variable.
resolve implements this change -- all the other changes are just to
get rid of existing code that declares variables that shadow tag
names.
2012-01-06 14:44:43 -08:00
Tim Chevalier
da519c8587
Eliminate a use of map::get in freevars
...
map::get is evil -- just say no!
2012-01-06 14:44:43 -08:00
Marijn Haverbeke
7b00bac540
Add some basic comments to trans_imp.rs
2012-01-06 17:50:55 +01:00
Marijn Haverbeke
822acdd170
Make binding of fns with bounded type parameters work
...
Interns non-static dicts to heap-allocated equivalents so that they no
longer have stack scope.
Closes #1436
2012-01-06 17:40:05 +01:00
Marijn Haverbeke
d23e2052e0
Support interface casting in the typechecker
...
Issue #1437
2012-01-06 17:40:05 +01:00
Marijn Haverbeke
cf5c877fc0
Statically allocate static dicts
...
Issue #1436
2012-01-06 17:40:05 +01:00
Marijn Haverbeke
7c1f683c6d
Fix bug in method type parameter passing
...
It would occasionally pass the wrong type parameter, when calling
a generic method from a generic impl on a bounded param type.
2012-01-06 17:40:05 +01:00
Brian Anderson
51e6df689c
rustc: Allow the test runner to run unexported tests
2012-01-05 18:16:56 -08:00
Marijn Haverbeke
54cf0e9c0d
Use precise return type to allocate retslot in trans_args
...
Using type_of_or_i8 did, predictably, allocate an i8 for a type parameter,
which leads to memory corruption and general confusion.
Closes #1443
2012-01-05 22:45:02 +01:00
Niko Matsakis
f832edc369
require a non-semi expr acting as a stmt to have unit return type
2012-01-05 10:44:38 -08:00
Stefan Plantikow
c8467977c4
Merge branch 'master' into kmath
...
Conflicts:
src/libcore/float.rs
2012-01-05 17:20:13 +01:00
Stefan Plantikow
1f10ee365c
Moved generic float::min, max to core::math and cleaned up some imports
2012-01-05 17:11:34 +01:00
Marijn Haverbeke
60ae1590af
Switch to new param kind bound syntax
...
And remove support for the old syntax
2012-01-05 15:50:02 +01:00
Marijn Haverbeke
1f71a0f48d
Clean up some FIXMEs related to impls
2012-01-05 14:55:23 +01:00