about summary refs log tree commit diff
path: root/src/libsyntax/parse
AgeCommit message (Collapse)AuthorLines
2013-09-10change type of ExprLoop and ExprBreak elts from ident->name.John Clements-2/+2
Lots of downstream changes in librustc, should be infinitesimally faster.
2013-09-10Delay assignment of node ids until after expansion. Ensures that each AST nodeNiko Matsakis-102/+86
has a unique id. Fixes numerous bugs in macro expansion and deriving. Add two representative tests. Fixes #7971 Fixes #6304 Fixes #8367 Fixes #8754 Fixes #8852 Fixes #2543 Fixes #7654
2013-09-09auto merge of #9005 : alexcrichton/rust/rusty-log, r=brsonbors-10/+7
Also redefine all of the standard logging macros to use more rust code instead of custom LLVM translation code. This makes them a bit easier to understand, but also more flexibile for future types of logging. Additionally, this commit removes the LogType language item in preparation for changing how logging is performed.
2013-09-08syntax: implement labelled breaks for `for`.Huon Wilson-5/+10
`for` desugars to `loop` so it is trivial to just desugar to `loop` while retaining any label.
2013-09-06add test case, cleanupJohn Clements-2/+0
2013-09-06remove unneeded imports, clean up unused var warningsJohn Clements-5/+2
2013-09-06memoization for resolveJohn Clements-2/+2
2013-09-06uncomment mtwt_resolve callsJohn Clements-0/+20
2013-09-06add temporarily unused ctxt field to mac_invoc_ttJohn Clements-5/+5
2013-09-06commentsJohn Clements-8/+31
2013-09-06added gensym_copy mechanism to ensure sharing of pointers in the internerJohn Clements-40/+33
this makes comparisons constant-time, and enables spelling-comparison of identifiers, crucial in many parts of resolve.
2013-09-06added test for ptr_eq on fresh_name-generated identsJohn Clements-1/+32
2013-09-06re-add debug versionJohn Clements-0/+5
2013-09-06drop back to a simple gensym approach for fresh-name.John Clements-12/+3
this is necessary so that the new idents are connected to the original strings. this is important both for error messages, and so that top-level refs get connected to the right things.
2013-09-06adding test case to check marking/unmarkingJohn Clements-1/+6
2013-09-06add hygiene support fns, move them around.John Clements-7/+3
also adds test cases
2013-09-06compare macro tokens hygienically (commented out)John Clements-1/+4
2013-09-05Rename str::from_bytes to str::from_utf8, closes #8985Florian Hahn-1/+1
2013-09-05Remove the __log function for __log_levelAlex Crichton-10/+7
Also redefine all of the standard logging macros to use more rust code instead of custom LLVM translation code. This makes them a bit easier to understand, but also more flexibile for future types of logging. Additionally, this commit removes the LogType language item in preparation for changing how logging is performed.
2013-09-04stop treating char as an integer typeDaniel Micay-12/+21
Closes #7609
2013-09-03auto merge of #8939 : Kimundi/rust/master, r=huonwbors-307/+307
2013-09-03Modernized a few more types in syntax::astMarvin Löbel-307/+307
2013-09-03Incorporate review feedback. Fix #8468.Felix S. Klock II-4/+1
2013-09-03Allow _ param name in trait default method for #8468.Felix S. Klock II-2/+14
2013-09-02switch __field__ hack to <unnamed_field>Daniel Micay-1/+1
avoids conflict with fields actually named `__field__`
2013-09-02Renamed syntax::ast::ident -> IdentMarvin Löbel-98/+98
2013-09-01Modernized a few type names in rustc and syntaxMarvin Löbel-46/+46
2013-08-30fix various warningsErick Tryzelaar-1/+1
2013-08-28auto merge of #8718 : bblum/rust/typeof, r=pcwaltonbors-3/+26
r? anybody
2013-08-27librustc: Fix merge fallout.Patrick Walton-45/+3
2013-08-27librustc: Ensure that type parameters are in the right positions in paths.Patrick Walton-8/+8
This removes the stacking of type parameters that occurs when invoking trait methods, and fixes all places in the standard library that were relying on it. It is somewhat awkward in places; I think we'll probably want something like the `Foo::<for T>::new()` syntax.
2013-08-27librustc: Add support for type parameters in the middle of paths.Patrick Walton-220/+367
For example, `foo::<T>::bar::<U>`. This doesn't enforce that the type parameters are in the right positions, however.
2013-08-27librustc: Remove `&const` and `*const` from the language.Patrick Walton-15/+10
They are still present as part of the borrow check.
2013-08-23Emit a better error for attempted unsafe-pointer-self. Close #8306.Ben Blum-0/+13
2013-08-23Parse and reserve typeof keyword. #3228Ben Blum-3/+13
2013-08-22auto merge of #8626 : kballard/rust/issue-8615, r=catamorphismbors-1/+0
Fixes #8615.
2013-08-21std/extra: changing XXX to FIXME; cleanupTim Chevalier-2/+9
* Get rid of by-value-self workarounds; it works now * Remove type annotations, they're not needed anymore
2013-08-20auto merge of #8573 : mrordinaire/rust/struct-new-as-field-name, r=alexcrichtonbors-23/+0
fix for #8088, along with a test.
2013-08-19Don't skip token after @'staticKevin Ballard-1/+0
Fixes #8615.
2013-08-18auto merge of #8560 : kballard/rust/reserve-yield, r=pcwaltonbors-4/+7
Rename task::yield() to task::deschedule(). Fixes #8494.
2013-08-18auto merge of #8550 : kballard/rust/token-start-err-msg, r=catamorphismbors-1/+3
The span was fixed at some point to point to the correct character, but the error message is still bad. Update it to emit the actual character in question (potentially escaped). Fixes #3747.
2013-08-17auto merge of #8547 : kballard/rust/trait-parse-err-msg, r=alexcrichtonbors-1/+1
When parsing a trait function, the function must end with either `;` or `{` (signifying a default implementation). The error message incorrectly stated that it must be `;` or `}`. Fixes #6610.
2013-08-18fix for #8088 (Cannot name a struct field `new` due to ancient syntax)Do Nhat Minh-23/+0
remove code for parsing ancient syntax added a run-pass test
2013-08-17Fix warnings in librustc and libsyntaxErick Tryzelaar-1/+0
2013-08-16Reserve 'yield' keywordKevin Ballard-4/+7
Rename task::yield() to task::deschedule(). Fixes #8494.
2013-08-15Better error message for unknown start of tokenKevin Ballard-1/+3
The span was fixed at some point to point to the correct character, but the error message is still bad. Update it to emit the actual character in question (potentially escaped). Fixes #3747.
2013-08-15Fix error message when trait method ends with wrong tokenKevin Ballard-1/+1
When parsing a trait function, the function must end with either `;` or `{` (signifying a default implementation). The error message incorrectly stated that it must be `;` or `}`. Fixes #6610.
2013-08-15std: Change either::{lefts, rights} to return an iteratorblake2-ppc-3/+3
2013-08-12Forbid pub/priv where it has no effectAlex Crichton-26/+18
Closes #5495
2013-08-12auto merge of #8418 : ↵bors-31/+114
pnkfelix/rust/fsk-issue3192-improve-parse-error-for-empty-struct-init, r=pcwalton,me Fix #3192. r? anyone There are 4 different new tests, to check some different scenarios for what the parse context is at the time of recovery, becasue our compile-fail infrastructure does not appear to handle verifying error-recovery situations. Differentiate between unit-like struct definition item and unit-like struct construction in the error message. ---- More generally, outlines a more generic strategy for parse error recovery: By committing to an expression/statement at set points in the parser, we can then do some look-ahead to catch common mistakes and skip over them. One detail about this strategy is that you want to avoid emitting the "helpful" message unless the input is reasonably close to the case of interest. (E.g. do not warn about a potential unit struct for an input of the form `let hmm = do foo { } { };`) To accomplish this, I added (partial) last_token tracking; used for `commit_stmt` support. The check_for_erroneous_unit_struct_expecting fn returns bool to signal whether it "made progress"; currently unused; this is meant for use to compose several such recovery checks together in a loop.