Commit Graph

2605 Commits

Author SHA1 Message Date
Josh Matthews
bdf3a6ba88 Undo over-enthusiastic obj system removal in debuginfo. 2012-01-13 17:28:23 -05:00
Brian Anderson
bb1e79768c llvm: Switch back to LLVM trunk 2012-01-13 11:05:59 -08:00
Niko Matsakis
8685a1f7c4 distinguish "any closure" and "stack closure" (block) 2012-01-13 09:31:40 -08:00
Niko Matsakis
47a534c197 make blocks fn& and fn stand for "any closure" 2012-01-13 06:36:31 -08:00
Niko Matsakis
455f8b0d45 deprecate fn exprs and the fn() type, preferring fn@ and native fn 2012-01-13 06:27:34 -08:00
Marijn Haverbeke
24102d50ad Obj system? What obj system?
Removes the obj system from the compiler.

Closes #1484
2012-01-13 11:51:29 +01:00
Marijn Haverbeke
eb07fa4d3b Remove all remaining uses of objs from the compiler 2012-01-13 11:51:17 +01:00
Tim Chevalier
565ea068ca Add type parameters when checking wildcard patterns
For some reason, wildcard patterns were never getting type parameter
substitutions attached. This would cause an assertion failure when
checking a wildcard pattern that matches against a tag with
polymorphic type (not sure why this didn't come up before). Fixed it.
(The diff and test case may be easier to understand than this note
:P)

Closes #1503.
2012-01-12 16:51:07 -08:00
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