about summary refs log tree commit diff
path: root/src/libsyntax
AgeCommit message (Collapse)AuthorLines
2013-04-22Rename Div operator trait to Quot and Modulo operator trait to RemBrendan Zabarauskas-8/+8
2013-04-20auto merge of #5965 : alexcrichton/rust/issue-4364, r=pcwaltonbors-364/+363
This closes #4364. I came into rust after modes had begun to be phased out, so I'm not exactly sure what they all did. My strategy was basically to turn on the compilation warnings and then when everything compiles and passes all the tests it's all good. In most cases, I just dropped the mode, but in others I converted things to use `&` pointers when otherwise a move would happen. This depends on #5963. When running the tests, everything passed except for a few compile-fail tests. These tests leaked memory, causing the task to abort differently. By suppressing the ICE from #5963, no leaks happen and the tests all pass. I would have looked into where the leaks were coming from, but I wasn't sure where or how to debug them (I found `RUSTRT_TRACK_ALLOCATIONS`, but it wasn't all that useful).
2013-04-19auto merge of #5945 : graydon/rust/fix-unicode-tables, r=pcwaltonbors-2/+2
This switches the unicode functions in core to use static character-range tables and a binary search helper rather than open-coded switch statements. It adds about 50k of read only data to the libcore binary but cuts out a similar amount of compiled IR. Would have done it this way in the first place but we didn't have structured statics for a long time.
2013-04-19syntax: de-mode and prepare for de-modeing rustcAlex Crichton-364/+363
2013-04-19librustc: Fix botched merge. rs=mergePatrick Walton-4/+4
2013-04-19librustc: Optimize metadata::decoder::item_name.Patrick Walton-0/+31
2013-04-18core: replace unicode match exprs with bsearch in const arrays, minor perf win.Graydon Hoare-2/+2
2013-04-18Errors with the same span print the span onceYoungmin Yoo-13/+147
2013-04-16add self.token_to_str and is_any_keyword convenience abstractionsJohn Clements-25/+55
2013-04-16added MTWT functionsJohn Clements-66/+462
2013-04-16better error message on failure to parse typeJohn Clements-1/+2
2013-04-16move interner_key macroJohn Clements-22/+22
2013-04-16libcore,std,syntax,rustc: move tests into `mod tests`, make them private (no ↵Huon Wilson-40/+44
pub mod or pub fn).
2013-04-14syntax: remove unnecessary unsafe blocks/functionsAlex Crichton-6/+4
2013-04-12auto merge of #5827 : ↵bors-9/+28
nikomatsakis/rust/issue-5656-change-meaning-of-borrowed-self, r=pcwalton See #5656 for details. r? @pcwalton
2013-04-12libsyntax: another fix for deriving on windows.Huon Wilson-2/+1
2013-04-12libsyntax: (maybe) fix deriving(TotalOrd) on windowsHuon Wilson-6/+6
2013-04-12libsyntax: short-circuit on non-matching variants in deriving code.Huon Wilson-81/+151
Allow a deriving instance using the generic code to short-circuit for any non-matching enum variants (grouping them all into a _ match), reducing the number of arms required. Use this to speed up the Eq & TotalEq implementations.
2013-04-12libsyntax: derive Clone, Eq, TotalEq, Ord, TotalOrd with the new generic ↵Huon Wilson-761/+411
deriving code. Closes #4269, #5588 and #5589.
2013-04-12libsyntax: abstract most of the deriving boilerplate into a simpler(r) ↵Huon Wilson-42/+915
interface. Pulls out many of the common patterns from the Eq and Clone deriving code (and invents a few of its own), so that deriving instances are very easy to write for a certain class of traits. (Basically, those which don't have parameters and where all methods only take arguments of type `&Self` and return either `Self` or types with no parameters.)
2013-04-11auto merge of #5819 : erickt/rust/incoming, r=ericktbors-67/+1030
Good morning, This first patch series adds support for `#[deriving(Decodable, Encodable)]`, but does not yet remove `#[auto_encode]` and `#[auto_decode]`. I need a snapshot to remove the old code. Along the way it also extends support for tuple structs and struct enum variants. Also, it includes a minor fix to the pretty printer. We decided a while ago to use 4 spaces to indent a match arm instead of 2. This updates the pretty printer to reflect that.
2013-04-10Issue #5656: Make &self not mean "&'self self"Niko Matsakis-9/+28
Fixes #5656. Fixes #5541.
2013-04-10syntax: add {read,emit}_enum_struct_variant{,_field}Erick Tryzelaar-0/+8
2013-04-10std: add serialize {read,emit}_tuple{,_arg,_struct,_struct_arg}Erick Tryzelaar-0/+14
2013-04-10syntax: add support for #[deriving(Decodable)]Erick Tryzelaar-7/+510
2013-04-10syntax: add support for #[deriving(Encodable)]Erick Tryzelaar-8/+455
2013-04-10syntax: Simplify deriving to handle classes that take generics, like EncodableErick Tryzelaar-34/+28
2013-04-10std: rename {read,emit}_field to {read,emit}_struct_fieldErick Tryzelaar-5/+5
2013-04-10std: clean up the order of {De,En}codable methodsErick Tryzelaar-7/+7
2013-04-10syntax: update a deriving error message to use the new syntaxErick Tryzelaar-5/+3
2013-04-10syntax: match variants use 4 space indent by defaultErick Tryzelaar-8/+7
2013-04-10Bump version to 0.7-preBrian Anderson-3/+3
2013-04-10libsyntax comments onlyJohn Clements-17/+46
2013-04-10unneccessary since tjc's commit 78ec6fe30cf2b, fixing #2804John Clements-4/+0
2013-04-10removed eval.rs: dead codeJohn Clements-174/+0
@brson confirms that eval.rs is now dead code
2013-04-10path -> PathJohn Clements-67/+67
2013-04-09auto merge of #5802 : nikomatsakis/rust/issue-4183-trait-substs, r=nikomatsakisbors-0/+10
Cleanup substitutions and treatment of generics around traits in a number of ways - In a TraitRef, use the self type consistently to refer to the Self type: - trait ref in `impl Trait<A,B,C> for S` has a self type of `S`. - trait ref in `A:Trait` has the self type `A` - trait ref associated with a trait decl has self type `Self` - trait ref associated with a supertype has self type `Self` - trait ref in an object type `@Trait` has no self type - Rewrite `each_bound_traits_and_supertraits` to perform substitutions as it goes, and thus yield a series of trait refs that are always in the same 'namespace' as the type parameter bound given as input. Before, we left this to the caller, but this doesn't work because the caller lacks adequare information to perform the type substitutions correctly. - For provided methods, substitute the generics involved in the provided method correctly. - Introduce TypeParameterDef, which tracks the bounds declared on a type parameter and brings them together with the def_id and (in the future) other information (maybe even the parameter's name!). - Introduce Subst trait, which helps to cleanup a lot of the repetitive code involved with doing type substitution. - Introduce Repr trait, which makes debug printouts far more convenient. Fixes #4183. Needed for #5656. r? @catamorphism
2013-04-09Bump version to 0.7-preBrian Anderson-3/+3
2013-04-09Cleanup substitutions and treatment of generics around traits in a number of ↵Niko Matsakis-0/+10
ways. - In a TraitRef, use the self type consistently to refer to the Self type: - trait ref in `impl Trait<A,B,C> for S` has a self type of `S`. - trait ref in `A:Trait` has the self type `A` - trait ref associated with a trait decl has self type `Self` - trait ref associated with a supertype has self type `Self` - trait ref in an object type `@Trait` has no self type - Rewrite `each_bound_traits_and_supertraits` to perform substitutions as it goes, and thus yield a series of trait refs that are always in the same 'namespace' as the type parameter bound given as input. Before, we left this to the caller, but this doesn't work because the caller lacks adequare information to perform the type substitutions correctly. - For provided methods, substitute the generics involved in the provided method correctly. - Introduce TypeParameterDef, which tracks the bounds declared on a type parameter and brings them together with the def_id and (in the future) other information (maybe even the parameter's name!). - Introduce Subst trait, which helps to cleanup a lot of the repetitive code involved with doing type substitution. - Introduce Repr trait, which makes debug printouts far more convenient. Fixes #4183. Needed for #5656.
2013-04-08auto merge of #5787 : alexcrichton/rust/less-mut-fields, r=catamorphismbors-15/+11
This removes some of the easier instances of mutable fields where the explicit self can just become `&mut self` along with removing some unsafe blocks which aren't necessary any more now that purity is gone. Most of #4568 is done, except for [one case](https://github.com/alexcrichton/rust/blob/less-mut-fields/src/libcore/vec.rs#L1754) where it looks like it has to do with it being a `const` vector. Removing the unsafe block yields: ``` /Users/alex/code/rust2/src/libcore/vec.rs:1755:12: 1755:16 error: illegal borrow unless pure: creating immutable alias to const vec content /Users/alex/code/rust2/src/libcore/vec.rs:1755 for self.each |e| { ^~~~ /Users/alex/code/rust2/src/libcore/vec.rs:1757:8: 1757:9 note: impure due to access to impure function /Users/alex/code/rust2/src/libcore/vec.rs:1757 } ^ error: aborting due to previous error ``` I also didn't delve too much into removing mutable fields with `Cell` or `transmute` and friends.
2013-04-08Removing no longer needed unsafe blocksAlex Crichton-15/+11
2013-04-08libsyntax: fail lexing with an error message on an int literal larger than 2^64.Huon Wilson-2/+9
Stops an ICE. Closes #5544.
2013-04-05Fix various warnings, NOTEs, etcNiko Matsakis-1/+1
2013-04-05Refactor so that references to traits are not represented using a type with aNiko Matsakis-37/+45
bare function store (which is not in fact a kind of value) but rather ty::TraitRef. Removes many uses of fail!() and other telltale signs of type-semantic mismatch. cc #4183 (not a fix, but related)
2013-04-05Compute a ty::method for methods that appear in impls as wellNiko Matsakis-0/+9
2013-04-05Rather than storing a list of ty::method per trait, store one ty::methodNiko Matsakis-1/+2
per method and list of def-ids per trait.
2013-04-03auto merge of #5696 : thestinger/rust/hashmap, r=sanxiynbors-42/+42
This naming is free now that `oldmap` has finally been removed, so this is a search-and-replace to take advantage of that. It might as well be called `HashMap` instead of being named after the specific implementation, since there's only one. SipHash distributes keys so well that I don't think there will ever be much need to use anything but a simple hash table with open addressing. If there *is* a better way to do it, it will probably be better in all cases and can just be the default implementation. A cuckoo-hashing implementation combining a weaker hash with SipHash could be useful, but that won't be as general purpose - you would need to write a separate fast hash function specialized for the type to really take advantage of it (like taking a page from libstdc++/libc++ and just using the integer value as the "hash"). I think a more specific naming for a truly alternative implementation like that would be fine, with the nice naming reserved for the general purpose container.
2013-04-03auto merge of #5559 : jbclements/rust/change-to-tt-based-parsing, r=jbclementsbors-33/+122
Changes the parser to parse all streams into token-trees before hitting the parser proper, in preparation for hygiene. As an added bonus, it appears to speed up the parser (albeit by a totally imperceptible 1%). Also, many comments in the parser. Also, field renaming in token-trees (readme->forest, cur->stack).
2013-04-03rename Linear{Map,Set} => Hash{Map,Set}Daniel Micay-42/+42
2013-04-03hashmap: rm linear namespaceDaniel Micay-9/+9