about summary refs log tree commit diff
path: root/src/libsyntax
AgeCommit message (Collapse)AuthorLines
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
2013-03-31Fix warningsBrian Anderson-8/+5
2013-03-30libsyntax: Update abi constants. Fixes #5423.Luqman Aden-5/+2
2013-03-30auto merge of #5630 : erickt/rust/serial, r=ericktbors-29/+15
@nikomatsakis and I were talking about how the serializers were a bit too complicated. None of the users of With the `emit_option` and `read_option` functions, the serializers are now moving more high level. This patch series continues that trend. I've removed support for emitting specific string and vec types, and added support for emitting mapping types.
2013-03-30syntax: fix auto_encode test.Erick Tryzelaar-4/+4
2013-03-29Add AbiSet and integrate it into the AST.Niko Matsakis-133/+588
I believe this patch incorporates all expected syntax changes from extern function reform (#3678). You can now write things like: extern "<abi>" fn foo(s: S) -> T { ... } extern "<abi>" mod { ... } extern "<abi>" fn(S) -> T The ABI for foreign functions is taken from this syntax (rather than from an annotation). We support the full ABI specification I described on the mailing list. The correct ABI is chosen based on the target architecture. Calls by pointer to C functions are not yet supported, and the Rust type of crust fns is still *u8.
2013-03-29Merge remote-tracking branch 'remotes/origin/incoming' into serialErick Tryzelaar-46/+33
2013-03-29Merge remote-tracking branch 'remotes/origin/incoming' into serialErick Tryzelaar-3/+3
2013-03-29librustc: Remove `fail_unless!`Patrick Walton-46/+33
2013-03-29change to parsing using ttsJohn Clements-1/+43
also, updates test cases a bit
2013-03-29commenting parserJohn Clements-4/+50