about summary refs log tree commit diff
path: root/src/libsyntax/parse
AgeCommit message (Collapse)AuthorLines
2013-04-28parser commentsJohn Clements-6/+15
parser comments
2013-04-28get rid of prec.rsJohn Clements-58/+30
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-2/+17
2013-04-28refactor parse_fn_declJohn Clements-5/+6
2013-04-28parser comments onlyJohn Clements-0/+6
2013-04-28refactoring mod.rsJohn Clements-161/+435
2013-04-27only use #[no_core] in libcoreDaniel Micay-31/+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-19/+19
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-3/+3
2013-04-20syntax: remove unused 'mut' variablesAlex Crichton-19/+19
2013-04-20auto merge of #5965 : alexcrichton/rust/issue-4364, r=pcwaltonbors-56/+56
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-56/+56
2013-04-19librustc: Fix botched merge. rs=mergePatrick Walton-4/+4
2013-04-19librustc: Optimize metadata::decoder::item_name.Patrick Walton-0/+22
2013-04-18core: replace unicode match exprs with bsearch in const arrays, minor perf win.Graydon Hoare-2/+2
2013-04-16add self.token_to_str and is_any_keyword convenience abstractionsJohn Clements-25/+55
2013-04-16added MTWT functionsJohn Clements-41/+41
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