about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
AgeCommit message (Collapse)AuthorLines
2013-04-28rename parse_class_item to parse_struct_decl_fieldJohn Clements-3/+4
two problems with the old name: they're not called classes any more, and the word "item" has a specific connotation in the parser
2013-04-28needs_comma was always trueJohn Clements-3/+2
2013-04-28fix for parsing x() as identifier patternJohn Clements-17/+14
2013-04-28hard to read the implied double negativeJohn Clements-4/+4
2013-04-28remove unused flag to parse_local fnJohn Clements-5/+4
2013-04-28remove unused RESTRICT_NO_CALL_EXPRS restrictionJohn Clements-7/+2
2013-04-28undo abstraction over whether to parse attrs in a blockJohn Clements-32/+19
In principle, it seems like a nice idea to abstract over the two functions that parse blocks (one with inner attrs allowed, one not). However, the existing one wound up making things more complex than just having two separate functions, especially after the obsolete syntax is (will be) removed.
2013-04-28refactoring to split foreign_items from itemsJohn Clements-164/+169
2013-04-28parser commentsJohn Clements-6/+8
parser comments
2013-04-28get rid of prec.rsJohn Clements-3/+2
prec.rs no longer had much to do with precedence; the token->binop function fits better in token.rs, and the one-liner defining the precedence of 'as' can go next to the other precedence stuff in ast_util.rs
2013-04-28reindent in parserJohn Clements-4/+4
2013-04-28remove unnecessary functionJohn Clements-7/+1
2013-04-28simplify, based on invariant that items_allowed != foreign_items_allowedJohn Clements-12/+7
2013-04-28adding parse_pathJohn Clements-19/+34
2013-04-28comments, helper function for tests, more informative error messageJohn Clements-1/+11
2013-04-28refactor parse_fn_declJohn Clements-4/+5
2013-04-28parser comments onlyJohn Clements-0/+6
2013-04-28refactoring mod.rsJohn Clements-1/+1
2013-04-27only use #[no_core] in libcoreDaniel Micay-2/+0
2013-04-22auto merge of #6007 : pcwalton/rust/use-mod, r=brsonbors-13/+8
r? @brson
2013-04-22auto merge of #5966 : alexcrichton/rust/issue-3083, r=graydonbors-14/+14
Closes #3083. This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about. Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler). Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
2013-04-22librustc: Remove `use mod` from the languagePatrick Walton-13/+8
2013-04-22Rename Div operator trait to Quot and Modulo operator trait to RemBrendan Zabarauskas-2/+2
2013-04-20syntax: remove unused 'mut' variablesAlex Crichton-14/+14
2013-04-19syntax: de-mode and prepare for de-modeing rustcAlex Crichton-30/+30
2013-04-16add self.token_to_str and is_any_keyword convenience abstractionsJohn Clements-17/+28
2013-04-16added MTWT functionsJohn Clements-1/+1
2013-04-16better error message on failure to parse typeJohn Clements-1/+2
2013-04-10libsyntax comments onlyJohn Clements-17/+42
2013-04-10unneccessary since tjc's commit 78ec6fe30cf2b, fixing #2804John Clements-4/+0
2013-04-10path -> PathJohn Clements-8/+8
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-6/+6
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-0/+24
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-6/+6
2013-04-03hashmap: rm linear namespaceDaniel Micay-1/+1
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-6/+6
2013-03-29commenting parserJohn Clements-0/+24
2013-03-29auto merge of #5570 : alexcrichton/rust/fix-unused-imports, r=sanxiynbors-10/+10
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-10/+10
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-12/+5
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-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