about summary refs log tree commit diff
path: root/src/comp/metadata/tydecode.rs
AgeCommit message (Collapse)AuthorLines
2012-03-02Move src/comp to src/rustcGraydon Hoare-426/+0
2012-02-22Make the various from_str functions return optionsMarijn Haverbeke-2/+2
So that they can be used with user input without causing task failures. Closes #1335
2012-02-15make mut a keyword synonymous with mutableNiko Matsakis-5/+5
first step towards issue #1273
2012-02-15Rewrite exhaustiveness checkerMarijn Haverbeke-5/+5
Issue #352 Closes #1720 The old checker would happily accept things like 'alt x { @some(a) { a } }'. It now properly descends into patterns, checks exhaustiveness of booleans, and complains when number/string patterns aren't exhaustive.
2012-02-13Remove some needlessly repetetive casts in metadata codeMarijn Haverbeke-46/+52
2012-02-10use absolute names when pretty-printing typesNiko Matsakis-4/+2
2012-02-09Remove some pointless importsMarijn Haverbeke-2/+0
2012-02-07Reuse monomorphized functions for different box typesMarijn Haverbeke-0/+1
The free glue for opaque boxes will pick the actual tydesc out of the box, and call its glue. Issue #1736
2012-02-06Make ty::t type self-sufficientMarijn Haverbeke-1/+1
It is now no longer needed to have a ty::ctxt to get at the contents of a ty::t. The straight-forward approach of doing this, simply making ty::t a box type, unfortunately killed our compiler performance (~15% slower) through refcounting cost. Thus, this patch now represents ty::t as an unsafe pointer, assuming that the ty::ctxt, which holds these boxes alive, outlives any uses of the ty::t values. In the current compiler this trivially holds, but it is does of course add a new potential pitfall. ty::get takes a ty::t and returns a boxed representation of the type. I've changed calls to ty::struct(X) to do ty::get(X).struct. Type structs are full of vectors, and copying them every time we wanted to access them was a bit of a cost.
2012-02-06Self types for ifacesMarijn Haverbeke-0/+7
This allows a 'Name:' to appear in front of an iface declaration's name, which will cause 'Name' to refer to the self type (with the same number of type parameters as the iface has) in the method signatures of the iface. For example: iface F: functor<A> { fn fmap<B>(f: fn(A) -> B) -> F<B>; } Issue #1718
2012-02-05infer modes rather than overwriting with expected tyNiko Matsakis-1/+1
2012-02-01Remove support for native typesMarijn Haverbeke-1/+0
Issue #1673
2012-01-27Merge remote-tracking branch 'killerswan/fixing_strings_2'Brian Anderson-2/+2
Conflicts: src/comp/driver/driver.rs src/comp/middle/trans/base.rs src/comp/syntax/parse/lexer.rs
2012-01-26Remove ty_native_fnMarijn Haverbeke-4/+0
It was being used as a clumsy synonym of ty_fn.
2012-01-25Rename tag to enum throughout the compilerMarijn Haverbeke-1/+1
This should reduce confusion of people trying to read the code.
2012-01-24Replace uses of str::unsafe_from_byteKevin Cantu-2/+2
2012-01-23s/block()/fn()/gNiko Matsakis-2/+2
2012-01-18Remove '.' after nullary tags in patternsTim Chevalier-1/+1
Does what it says on the tin. The next commit will remove support for this syntax.
2012-01-16Store type names in crate metadataMarijn Haverbeke-0/+7
Improves type error messages referring to external types. Issue #1507
2012-01-13distinguish "any closure" and "stack closure" (block)Niko Matsakis-10/+13
2012-01-13Obj system? What obj system?Marijn Haverbeke-18/+0
Removes the obj system from the compiler. Closes #1484
2012-01-10rename sendfn to fn~, lambda to fn@Niko Matsakis-5/+5
2012-01-09Remove proto_sugar and 'lambda' as keyword, commit to fn@.Graydon Hoare-1/+1
2012-01-06rejigger impl to have an opaque closure ptr rather thanNiko Matsakis-1/+8
opaque closure
2012-01-06Disallow variable names that shadow tags in scopeTim Chevalier-5/+5
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-05Clean up translating of def_ids in metadata readerMarijn Haverbeke-75/+68
Reduces the amount of closure allocation, and makes the code cleaner.
2012-01-05Switch to new param kind bound syntaxMarijn Haverbeke-1/+1
And remove support for the old syntax
2012-01-05Get external interfaces / impls workingMarijn Haverbeke-13/+12
Issue #1227
2012-01-02Box arrays of parameter boundsMarijn Haverbeke-1/+1
2012-01-02Check that type parameter bounds are interface typesMarijn Haverbeke-4/+11
Issue #1227
2011-12-28Change representation of type params to handle interface boundsMarijn Haverbeke-15/+27
Issue #1227
2011-12-23Check impls methods against the type of their iface.Marijn Haverbeke-1/+1
2011-12-23Use the same type of record in ty::ty_fn and ty::methodMarijn Haverbeke-16/+7
Removes some more code duplication.
2011-12-22Register new snapshots, purge log_err and log_full in favour of log(...).Graydon Hoare-1/+1
2011-12-22Register snapshots and switch logging over to use of log_full or #error / ↵Graydon Hoare-5/+5
#debug.
2011-12-16extend with ty_send_type and ty_opaque_closureNiko Matsakis-0/+2
2011-12-14push changes through to get things compiling, if not running.Niko Matsakis-10/+13
2011-12-13Copy first batch of material from libstd to libcore.Graydon Hoare-2/+2
2011-12-07Change literal representation to not truncateMarijn Haverbeke-10/+10
Also shuffles around the organization of numeric literals and types, separating by int/uint/float instead of machine-vs-non-machine types. This simplifies some code. Closes #974 Closes #1252
2011-11-30Box ast::path valuesMarijn Haverbeke-7/+7
It seems inefficient to copy them around. Let's measure whether that's actually > the case
2011-11-23Rollback return-by-referenceMarijn Haverbeke-5/+0
It's proving too inflexible, so I'm ripping out the extra complexity in the hope that regions will, at some point, provide something similar. Closes #918
2011-11-21rustc: Remove abi from ast::native_modHaitao Li-7/+1
2011-11-18Update stdlib, compiler, and tests to new kind systemMarijn Haverbeke-1/+1
This involved adding 'copy' to more generics than I hoped, but an experiment with making it implicit showed that that way lies madness -- unless enforced, you will not remember to mark functions that don't copy as not requiring copyable kind. Issue #1177
2011-11-18Add a pass-by-copy parameter passing conventionMarijn Haverbeke-1/+2
This is intended to solve the problem of how to pass arguments to constructor functions -- you want to move in rvalues, but not have to explicitly copy stuff that is not an rvalue. The by-copy passing convention will ensure the callee gets its own copy of the value. For rvalues, it'll just pass off the value. For lvalues, it'll make a copy. Issue #1177
2011-11-18Preparation for kind system overhaulMarijn Haverbeke-3/+3
This goes before a snapshot, so that subsequenct patches can make the transition without breaking the build. Disables kind checking pass, makes parser accept both new and old-style kind annotation. Issue #1177
2011-11-17remove compile-command from local variable blocksNiko Matsakis-1/+0
2011-11-10Cleanup unused importsHaitao Li-1/+1
2011-11-09rustc: Rename native_abi_c_stack_cdecl to native_abi_cdeclBrian Anderson-1/+1
2011-11-09rustc: Rename native_abi_c_stack_stdcall to native_abi_stdcallBrian Anderson-1/+1
2011-11-09Remove native "x86stdcall" ABIBrian Anderson-1/+0