about summary refs log tree commit diff
path: root/src/comp/middle
AgeCommit message (Collapse)AuthorLines
2012-01-16Minor cleanups to custom discriminator code.Kevin Atkinson-4/+4
Mostly updates to the comments and docs from Pull Request #1537.
2012-01-16Remove misguided indirect return in trans_closureMarijn Haverbeke-8/+4
Closes #1528
2012-01-16Store type names in crate metadataMarijn Haverbeke-1/+6
Improves type error messages referring to external types. Issue #1507
2012-01-16Don't evaluate discriminator value constants when parsing.Kevin Atkinson-5/+84
Remove disr_val from ast::variant_ and always use ty::variant_info when the value is needed. Move what was done during parsing into other passes, primary typeck.rs. This move also correctly type checks the disr. value expression; thus, fixing rustc --pretty=typed when disr. values are used.
2012-01-13Undo over-enthusiastic obj system removal in debuginfo.Josh Matthews-0/+3
2012-01-13llvm: Switch back to LLVM trunkBrian Anderson-1/+1
2012-01-13distinguish "any closure" and "stack closure" (block)Niko Matsakis-15/+29
2012-01-13make blocks fn& and fn stand for "any closure"Niko Matsakis-0/+2
2012-01-13deprecate fn exprs and the fn() type, preferring fn@ and native fnNiko Matsakis-47/+49
2012-01-13Obj system? What obj system?Marijn Haverbeke-1690/+128
Removes the obj system from the compiler. Closes #1484
2012-01-13Remove all remaining uses of objs from the compilerMarijn Haverbeke-31/+32
2012-01-12Add type parameters when checking wildcard patternsTim Chevalier-1/+12
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-12add tydescs into shape, rewrite walk_fn_contents()Niko Matsakis-14/+5
2012-01-12free uniq data we encounter on the sweep, walk thru them otherwiseNiko Matsakis-5/+29
2012-01-12Make driver::session::session no longer an objectMarijn Haverbeke-76/+99
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-12Implement passing cast-to-vtable values as bounded paramsMarijn Haverbeke-76/+155
Closes #1492
2012-01-12Cleanups to previous commits for issue #1393.Kevin Atkinson-5/+5
2012-01-11Fix dependency bug iface-did-of-impl resolvingMarijn Haverbeke-9/+10
By simply not resolving that def id until the typeck pass. Closes #1494
2012-01-11Implement std::map as an iface/impl instead of an objMarijn Haverbeke-82/+8
2012-01-11Fix regression in resolving of external implsMarijn Haverbeke-5/+8
2012-01-11Pass type with params intact as item_type for method calleesMarijn Haverbeke-7/+6
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-10Add support for casting enum-like tags to scalar values.Kevin Atkinson-5/+48
2012-01-10Support explicit discriminant numbers on tag variants.Kevin Atkinson-25/+18
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-10replace lambda with fn@Niko Matsakis-15/+10
2012-01-10rename sendfn to fn~, lambda to fn@Niko Matsakis-62/+54
2012-01-10rustc: Remove sret attributes from functionsBrian Anderson-13/+3
Something about the way we're using it is causing incorrect code generation. Closes #1343
2012-01-09Change all uses of 'when' in alt-patterns to 'if'Austin Seipp-6/+6
Issue #1396
2012-01-09Remove proto_sugar and 'lambda' as keyword, commit to fn@.Graydon Hoare-30/+29
2012-01-09Iface types are not structuralMarijn Haverbeke-2/+1
Not sure how they ended up being marked as such.
2012-01-09Work around recursive type check for iface typesMarijn Haverbeke-3/+7
They are nominal, and can safely refer to themselves.
2012-01-09Properly recognize self as an upvar when closed overMarijn Haverbeke-34/+27
Closes #1463
2012-01-09Fix #1474: check that block args resolved to bare fns do not make use of upvarsNiko Matsakis-8/+13
2012-01-09Don't resolve upvars in fn() { ... } exprsMarijn Haverbeke-6/+3
Closes #1467
2012-01-08correct long lineNiko Matsakis-2/+2
2012-01-08modify last use to take into account cap clause, add new testNiko Matsakis-9/+44
2012-01-08First barely-working version of casting to ifaceMarijn Haverbeke-33/+99
Issue #1437
2012-01-08Add fall-through case for non-iface bounds typeck::lookup_methodMarijn Haverbeke-0/+1
Closes #1462
2012-01-06choose a new arbitrary valueNiko Matsakis-2/+2
2012-01-06revert changes to trans_uniq.rsNiko Matsakis-4/+14
2012-01-06revert metricsNiko Matsakis-82/+94
2012-01-06plug leak: free shared type descrs recursively, as we ought toNiko Matsakis-2/+6
2012-01-06hack the tydesc that is registered with a malloc to be what cc expectsNiko Matsakis-22/+47
2012-01-06fix how we walk functions to match new closure fmtNiko Matsakis-3/+8
2012-01-06rejigger impl to have an opaque closure ptr rather thanNiko Matsakis-297/+384
opaque closure
2012-01-06collapse sizeof, alignof into metrics, pass along an instance if availNiko Matsakis-47/+78
2012-01-06make size_of and align_of take an optional valueNiko Matsakis-101/+103
2012-01-06emit the take glue for closure tydescsNiko Matsakis-0/+1
2012-01-06simplify task implNiko Matsakis-1/+1
2012-01-06Disallow variable names that shadow tags in scopeTim Chevalier-64/+151
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-06Eliminate a use of map::get in freevarsTim Chevalier-14/+21
map::get is evil -- just say no!