summary refs log tree commit diff
path: root/src/libsyntax/parse
AgeCommit message (Collapse)AuthorLines
2013-04-16better error message on failure to parse typeJohn Clements-1/+2
2013-04-16move interner_key macroJohn Clements-10/+0
2013-04-16libcore,std,syntax,rustc: move tests into `mod tests`, make them private (no ↵Huon Wilson-1/+1
pub mod or pub fn).
2013-04-10libsyntax comments onlyJohn Clements-17/+42
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-9/+9
2013-04-08auto merge of #5787 : alexcrichton/rust/less-mut-fields, r=catamorphismbors-6/+4
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-6/+4
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-05Refactor so that references to traits are not represented using a type with aNiko Matsakis-17/+8
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-03auto merge of #5696 : thestinger/rust/hashmap, r=sanxiynbors-15/+15
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-5/+93
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-15/+15
2013-04-03hashmap: rm linear namespaceDaniel Micay-2/+2
2013-03-31Fix warningsBrian Anderson-1/+1
2013-03-29Add AbiSet and integrate it into the AST.Niko Matsakis-38/+75
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-29librustc: Remove `fail_unless!`Patrick Walton-12/+12
2013-03-29change to parsing using ttsJohn Clements-1/+43
also, updates test cases a bit
2013-03-29commenting parserJohn Clements-4/+50
2013-03-29auto merge of #5570 : alexcrichton/rust/fix-unused-imports, r=sanxiynbors-14/+14
Before it wouldn't warn about unused imports in the list if something in the list was used. These commits fix that case, add a test, and remove all unused imports in lists of imports throughout the compiler.
2013-03-28Removing unused importsAlex Crichton-14/+14
2013-03-28libsyntax: Don't allow `impl (Trait) for Type` (with the parentheses).Patrick Walton-1/+5
2013-03-28librustc: Remove common fields and nested enums from the languagePatrick Walton-50/+29
2013-03-28auto merge of #5596 : luqmana/rust/unit-struct, r=catamorphismbors-0/+4
Fixes #5449.
2013-03-28auto merge of #5586 : pcwalton/rust/expr-repeat-vstore, r=graydonbors-8/+8
r? @graydon
2013-03-27auto merge of #5578 : erickt/rust/incoming, r=jbclements,ericktbors-25/+31
Hey folks, This patch series does some work on the json decoder, specifically with auto decoding of enums. Previously, we would take this code: ``` enum A { B, C(~str, uint) } ``` and would encode a value of this enum to either `["B", []]` or `["C", ["D", 123]]`. I've changed this to `"B"` or `["C", "D", 123]`. This matches the style of the O'Caml json library [json-wheel](http://mjambon.com/json-wheel.html). I've added tests to make sure all this work. In order to make this change, I added passing a `&[&str]` vec to `Decode::emit_enum_variant` so the json decoder can convert the name of a variant into it's position. I also changed the impl of `Encodable` for `Option<T>` to have the right upper casing. I also did some work on the parser, which allows for `fn foo<T: ::cmp::Eq>() { ... }` statements (#5572), fixed the pretty printer properly expanding `debug!("...")` expressions, and removed `ast::expr_vstore_fixed`, which doesn't appear to be used anymore.
2013-03-27derive Eq and Clone impls where applicableAndrew Paseltiner-10/+1
2013-03-27libsyntax: error on struct Foo {}.Luqman Aden-0/+4
2013-03-27librustc: Allow expr_repeat to be used with any vstorePatrick Walton-8/+8
2013-03-27auto merge of #5558 : nikomatsakis/rust/issue-4920-autoref-index-operator, ↵bors-22/+5
r=nikomatsakis Per discussion on IRC. r? @pcwalton
2013-03-27Fix pretty-printer test failure by carrying the bound lifetime names throughNiko Matsakis-1/+2
the types. Initially I thought it would be necessary to thread this data through not only the AST but the types themselves, but then I remembered that the pretty printer only cares about the AST. Regardless, I have elected to leave the changes to the types intact since they will eventually be needed. I left a few FIXMEs where it didn't seem worth finishing up since the code wasn't crucial yet.
2013-03-27syntax: Remove deprecated expr_vstore_fixedErick Tryzelaar-1/+1
2013-03-27syntax: fix pretty printing __log stmtsErick Tryzelaar-1/+1
2013-03-27syntax: Remove dead code from the parserErick Tryzelaar-8/+0
2013-03-27syntax: Fix parsing global generics (Closes #5572)Erick Tryzelaar-2/+3
2013-03-27std: change default json enum encoder to use strings or a flat vecErick Tryzelaar-15/+17
2013-03-27std: Add tests for json decoding optionsErick Tryzelaar-13/+24
2013-03-27Simplify and remove unnecessary use of ast_mapNiko Matsakis-2/+0
2013-03-27remove sty_by_ref, though traces still remain due to dtorsNiko Matsakis-20/+5
2013-03-26librustc: Enforce that `extern mod` directives come first, then `use` ↵Patrick Walton-31/+75
directives, then items. Resolve them in this order as well.
2013-03-26librustc: Modify all code to use new lifetime binder syntaxPatrick Walton-7/+20
2013-03-26librustc: Stop parsing `[T * N]`.Patrick Walton-2/+7
2013-03-26librustc: Remove all uses of the old `[T * N]` fixed-length vector syntaxPatrick Walton-1/+1
2013-03-26libsyntax: Stop parsing `[const T]`.Patrick Walton-1/+1
2013-03-26syntax: Removing uses of HashMapAlex Crichton-40/+38
2013-03-26Switched over a bunch of splitting funktions to non-allocating iteratorsMarvin Löbel-2/+6
2013-03-22libsyntax: Stop parsing old lifetime syntaxPatrick Walton-0/+1
2013-03-22libsyntax: Stop parsing `const`.Patrick Walton-1/+13
2013-03-22librustc: Remove the `const` declaration form everywherePatrick Walton-40/+40