about summary refs log tree commit diff
path: root/src/comp/metadata/encoder.rs
AgeCommit message (Collapse)AuthorLines
2012-03-02Move src/comp to src/rustcGraydon Hoare-766/+0
2012-03-02emit mthd data if marked inlineNiko Matsakis-11/+8
2012-03-02restructure to better support method inliningNiko Matsakis-1/+1
2012-02-28correct freevar encoding, add more debugging outputNiko Matsakis-1/+1
2012-02-24Encode/decode AST into metadata, re-instantiate inlined itemsNiko Matsakis-125/+138
2012-02-21Include @ in crate_ctxt and fn_ctxt type definitionsMarijn Haverbeke-2/+2
So that code using them doesn't have to spell it out constantly.
2012-02-14rustc: Add crust functions to the ASTBrian Anderson-1/+6
2012-02-13Remove some needlessly repetetive casts in metadata codeMarijn Haverbeke-21/+16
2012-02-13Track purity/unsafety of iface and impl methodsMarijn Haverbeke-9/+8
Closes #1807
2012-02-13add serialization library; convert ebml lib to use u64 internallyNiko Matsakis-1/+1
2012-02-10put serializer into the build and encode full item pathsNiko Matsakis-12/+52
2012-02-10update ebml interfaceNiko Matsakis-22/+21
2012-02-07Minor class-related tweaks to the ASTTim Chevalier-2/+2
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-03Beginnings of front-end support for classesTim Chevalier-0/+6
Added class support to the parser, prettyprinter, fold, and visit. (See Issue 1726.) This is WIP -- the test case is xfailed, and attempting to compile it will error out in resolve.
2012-02-03Store item paths in ast_map, get rid of trans::local_ctxtMarijn Haverbeke-2/+2
The direct motivation for this was that the monomorphizer needs to be able to generate sane symbols for random items. The typechecker can probably also use this in the future to provide more useful error messages.
2012-02-01Remove support for native typesMarijn Haverbeke-6/+0
Issue #1673
2012-01-31Require alts to be exhaustiveTim Chevalier-0/+3
middle::check_alt does the work. Lots of changes to add default cases into alts that were previously inexhaustive.
2012-01-30Substitute type parameters more eagerlyMarijn Haverbeke-11/+11
This simplifies the typechecker a bit (no more ty_param_substs_opt_and_ty) and is needed for another experiment I'm playing with. I hope it also makes compilation faster (the bots will tell).
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-27Move various trans_ modules under a trans:: umbrella moduleMarijn Haverbeke-1/+1
Closes #1304
2012-01-26Make re-exporting of impls workMarijn Haverbeke-17/+17
Closes #1438
2012-01-26Remove ty_native_fnMarijn Haverbeke-6/+5
It was being used as a clumsy synonym of ty_fn.
2012-01-25(FIX) Change encoder::encode_metadata to return a [u8] (which will become an ↵Kevin Cantu-2/+2
LLVM string)
2012-01-25Rename tag to enum throughout the compilerMarijn Haverbeke-10/+10
This should reduce confusion of people trying to read the code.
2012-01-23s/block()/fn()/gNiko Matsakis-1/+1
2012-01-18Remove '.' after nullary tags in patternsTim Chevalier-7/+7
Does what it says on the tin. The next commit will remove support for this syntax.
2012-01-17encode variant names and have log print them out.Niko Matsakis-0/+1
2012-01-16Don't evaluate discriminator value constants when parsing.Kevin Atkinson-3/+6
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-13make "native fn" the type for bare functions, remove fn exprsNiko Matsakis-1/+1
2012-01-13deprecate fn exprs and the fn() type, preferring fn@ and native fnNiko Matsakis-3/+3
2012-01-13Obj system? What obj system?Marijn Haverbeke-32/+0
Removes the obj system from the compiler. Closes #1484
2012-01-12Make driver::session::session no longer an objectMarijn Haverbeke-1/+1
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-11Fix dependency bug iface-did-of-impl resolvingMarijn Haverbeke-7/+0
By simply not resolving that def id until the typeck pass. Closes #1494
2012-01-11Major clean-up of std::ioMarijn Haverbeke-13/+12
Use ifaces instead of objs, stop wrapping everything in two (or three) layers of no-value-added indirection, and remove some of the more pointless/outdated idioms from the code.
2012-01-10Support explicit discriminant numbers on tag variants.Kevin Atkinson-0/+12
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-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-14/+40
Issue #1227
2012-01-05Write the iface type of an impl in the crate dataMarijn Haverbeke-3/+16
Also, move checking of ifaces into the collect phase of typeck to give further passes some guarantees. Issue #1227
2012-01-02Key tcx.ty_param_bounds on node_ids, not def_idsMarijn Haverbeke-1/+1
This makes it clearer that it's only valid for local nodes.
2011-12-28Change representation of type params to handle interface boundsMarijn Haverbeke-24/+22
Issue #1227
2011-12-23Parse `iface` items and interface references in `impl` items.Marijn Haverbeke-3/+12
The (temporary) syntax is iface seq<T> { fn len() -> uint; fn iter(f: block(T)); } // The 'blah<T>' can be left of to default the name of the // impl to seq<T>. The 'of seq<T>' can be left off when // not implementing a named interface. impl blah<T> of seq<T> for [T] { fn len() -> uint { vec::len(self) } fn iter(f: block(T)) { for x in self { f(x); } } }
2011-12-22Unify some data structures in syntax::ast that were doing the same thingMarijn Haverbeke-24/+12
As a preparation to removing some duplication in typeck.
2011-12-22Add ty::new_ty_hash, clean up comparing of ty::t'sMarijn Haverbeke-1/+1
2011-12-20rustc: Re-export the same name in different namespacesHaitao Li-1/+2
Issue #1115.
2011-12-20rustc: Implement re-export of renamed modulesHaitao Li-3/+5
Issue #1115
2011-12-19Associate names with types introduced by itemsMarijn Haverbeke-0/+4
Issue #828 This is not a full solution yet. To really get sane error messages, we'll also have to guess the name to apply to literals, which seems non-trivial.
2011-12-16Finish resolving and calling of crate-external implsMarijn Haverbeke-19/+31
Issue #1227
2011-12-16reorder args to the various vec, option fns so blk comes lastNiko Matsakis-1/+1
2011-12-16Write impl data to crate library filesMarijn Haverbeke-1/+37
(No one is actually reading it yet.) Issue #1227