about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
AgeCommit message (Collapse)AuthorLines
2017-03-29Refactor how spans are combined in the parser.Jeffrey Seyfried-336/+281
2017-03-29Merge `ExpnId` and `SyntaxContext`.Jeffrey Seyfried-5/+1
2017-03-27Fix unittestsEsteban Küber-1/+1
2017-03-27Simplify error outputEsteban Küber-11/+6
2017-03-27Fix various useless derefs and slicingsOliver Schneider-3/+3
2017-03-25Improve wording and spans for unexpected tokenEsteban Küber-6/+19
* Point at where the token was expected instead of the last token successfuly parsed. * Only show `unexpected token` if the next char and the unexpected token don't have the same span. * Change some cfail and pfail tests to ui test. * Don't show all possible tokens in span label if they are more than 6.
2017-03-24Point at last valid token on failed `expect_one_of`Esteban Küber-14/+14
```rust error: expected one of `.`, `;`, `?`, `}`, or an operator, found `)` --> $DIR/token-error-correct-3.rs:29:9 | 25 | foo() | - expected one of `.`, `;`, `?`, `}`, or an operator after this ... 29 | } else { | ^ unexpected token ```
2017-03-24Identify missing item category in `impl`sEsteban Küber-15/+47
```rust struct S; impl S { pub hello_method(&self) { println!("Hello"); } } fn main() { S.hello_method(); } ``` ```rust error: can't qualify macro invocation with `pub` --> file.rs:3:4 | 3 | pub hello_method(&self) { | ^^^- - expected `!` here for a macro invocation | | | did you mean to write `fn` here for a method declaration? | = help: try adjusting the macro to put `pub` inside the invocation ```
2017-03-22Add diagnostic for incorrect `pub (restriction)`Esteban Küber-26/+38
Given the following statement ```rust pub (a) fn afn() {} ``` Provide the following diagnostic: ```rust error: incorrect restriction in `pub` --> file.rs:15:1 | 15 | pub (a) fn afn() {} | ^^^^^^^ | = help: some valid visibility restrictions are: `pub(crate)`: visible only on the current crate `pub(super)`: visible only in the current module's parent `pub(in path::to::module)`: visible only on the specified path help: to make this visible only to module `a`, add `in` before the path: | pub (in a) fn afn() {} ``` Remove cruft from old `pub(path)` syntax.
2017-03-21Refactor parsing of trait object typesVadim Petrochenkov-227/+177
2017-03-19Auto merge of #40346 - jseyfried:path_and_tokenstream_attr, r=nrcbors-49/+27
`TokenStream`-based attributes, paths in attribute and derive macro invocations This PR - refactors `Attribute` to use `Path` and `TokenStream` instead of `MetaItem`. - supports macro invocation paths for attribute procedural macros. - e.g. `#[::foo::attr_macro] struct S;`, `#[cfg_attr(all(), foo::attr_macro)] struct S;` - supports macro invocation paths for derive procedural macros. - e.g. `#[derive(foo::Bar, super::Baz)] struct S;` - supports arbitrary tokens as arguments to attribute procedural macros. - e.g. `#[foo::attr_macro arbitrary + tokens] struct S;` - supports using arbitrary tokens in "inert attributes" with derive procedural macros. - e.g. `#[derive(Foo)] struct S(#[inert arbitrary + tokens] i32);` where `#[proc_macro_derive(Foo, attributes(inert))]` r? @nrc
2017-03-14Point out correct turbofish usage on `Foo<Bar<Baz>>`Esteban Küber-1/+4
Whenever we parse a chain of binary operations, as long as the first operation is `<` and the subsequent operations are either `>` or `<`, present the following diagnostic help: use `::<...>` instead of `<...>` if you meant to specify type arguments This will lead to spurious recommendations on situations like `2 < 3 < 4` but should be clear from context that the help doesn't apply in that case.
2017-03-14Auto merge of #39921 - cramertj:add-catch-to-ast, r=nikomatsakisbors-0/+27
Add catch {} to AST Part of #39849. Builds on #39864.
2017-03-14Liberalize attributes.Jeffrey Seyfried-0/+11
2017-03-14Refactor `Attribute` to use `Path` and `TokenStream` instead of `MetaItem`.Jeffrey Seyfried-38/+6
2017-03-14Cleanup.Jeffrey Seyfried-11/+10
2017-03-12Rollup merge of #40369 - petrochenkov:segspan, r=eddybCorey Farwell-11/+18
Give spans to individual path segments in AST And use these spans in path resolution diagnostics. The spans are spans of identifiers in segments, not whole segments. I'm not sure what spans are more useful in general, but identifier spans are a better fit for resolve errors. HIR still doesn't have spans. Fixes https://github.com/rust-lang/rust/pull/38927#discussion_r95336667 https://github.com/rust-lang/rust/pull/38890#issuecomment-271731008 r? @nrc @eddyb
2017-03-12Auto merge of #40340 - petrochenkov:restricted, r=nikomatsakisbors-32/+40
Update syntax for `pub(restricted)` Update the syntax before stabilization. cc https://github.com/rust-lang/rust/issues/32409 r? @nikomatsakis
2017-03-11Temporarily prefix catch block with do keywordTaylor Cramer-13/+5
2017-03-11Add catch expr to AST and disallow catch as a struct nameTaylor Cramer-0/+35
2017-03-10Give spans to individual path segments in ASTVadim Petrochenkov-11/+18
2017-03-10Update syntax for `pub(restricted)`Vadim Petrochenkov-32/+40
2017-03-10Avoid using `Mark` and `Invocation` for macro defs.Jeffrey Seyfried-2/+1
2017-03-10Refactor out `ast::ItemKind::MacroDef`.Jeffrey Seyfried-3/+43
2017-03-04Inline function to avoid naming confusion.Mark Simulacrum-8/+6
2017-03-03Fix `token::Eof` spans.Jeffrey Seyfried-2/+6
2017-03-03Integrate `TokenStream`.Jeffrey Seyfried-19/+23
2017-03-03Introduce `syntax::parse::parser::TokenCursor`.Jeffrey Seyfried-47/+127
2017-02-28Refactor out `parser.expect_delimited_token_tree()`.Jeffrey Seyfried-36/+13
2017-02-28Add `syntax::ext::tt::quoted::{TokenTree, ..}` and remove ↵Jeffrey Seyfried-148/+13
`tokenstream::TokenTree::Sequence`.
2017-02-28Avoid `Token::{OpenDelim, CloseDelim}`.Jeffrey Seyfried-1/+1
2017-02-21Add long error explanationsGuillaume Gomez-17/+17
2017-02-20Add error codes for errors in libsyntaxGuillaume Gomez-40/+82
2017-02-10Fix ICE on certain sequence repetitions.Jeffrey Seyfried-5/+14
2017-02-09Fix ICE when parsing token trees after an error.Jeffrey Seyfried-3/+10
2017-02-05Rollup merge of #39453 - nrc:save-path, r=nikomatsakisCorey Farwell-0/+1
save-analysis: be more paranoid about generated paths fixes https://github.com/rust-lang-nursery/rls/issues/160
2017-02-03Bump version, upgrade bootstrapAlex Crichton-2/+0
This commit updates the version number to 1.17.0 as we're not on that version of the nightly compiler, and at the same time this updates src/stage0.txt to bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-02save-analysis: be more paranoid about generated pathsNick Cameron-0/+1
fixes https://github.com/rust-lang-nursery/rls/issues/160
2017-01-31use suggestions instead of helps with code in themOliver Schneider-4/+23
2017-01-27Auto merge of #39158 - petrochenkov:bounds, r=nikomatsakisbors-433/+277
Bounds parsing refactoring 2 See https://github.com/rust-lang/rust/pull/37511 for previous discussion. cc @matklad Relaxed parsing rules: - zero bounds after `:` are allowed in all contexts. - zero predicates are allowed after `where`. - trailing separator `,` is allowed after predicates in `where` clauses not followed by `{`. Other parsing rules: - trailing separator `+` is still allowed in all bound lists. Code is also cleaned up and tests added. I haven't touched parsing of trait object types yet, I'll do it later.
2017-01-26Better comments for FIXMEsVadim Petrochenkov-2/+2
2017-01-25Auto merge of #35712 - oli-obk:exclusive_range_patterns, r=nikomatsakisbors-12/+31
exclusive range patterns adds `..` patterns to the language under a feature gate (`exclusive_range_pattern`). This allows turning ``` rust match i { 0...9 => {}, 10...19 => {}, 20...29 => {}, _ => {} } ``` into ``` rust match i { 0..10 => {}, 10..20 => {}, 20..30 => {}, _ => {} } ```
2017-01-24parser: Permit trailing +'s in bound listsVadim Petrochenkov-11/+3
2017-01-24Improve some expected/found error messages from parserVadim Petrochenkov-12/+49
2017-01-24Refactor parsing of generic arguments/parameters and where clausesVadim Petrochenkov-433/+248
2017-01-24Auto merge of #39173 - jseyfried:tokenstream, r=nrcbors-9/+2
Refactor `TokenStream` r? @nrc
2017-01-24Add an option to the parser so cfg'ed out modules can still be parsedNick Cameron-1/+5
2017-01-23Remove `open_span` and `close_span` from `Delimited`.Jeffrey Seyfried-9/+2
2017-01-20Rollup merge of #39179 - petrochenkov:objparen, r=eddybAlex Crichton-2/+9
Fix regression in parsing of trait object types Fixes https://github.com/rust-lang/rust/issues/39169 Accepting parens in this position is a regression itself, introduced in Rust 1.6 by https://github.com/rust-lang/rust/pull/29870, so I hope to revert this in my next bounds refactoring patch (possibly with a warning, crater run, etc). r? @eddyb
2017-01-20Rollup merge of #39118 - jseyfried:token_tree_based_parser, r=nrcAlex Crichton-157/+38
Refactor the parser to consume token trees This is groundwork for efficiently parsing attribute proc macro invocations, bang macro invocations, and `TokenStream`-based attributes and fragment matchers. This improves parsing performance by 8-15% and expansion performance by 0-5% on a sampling of the compiler's crates. r? @nrc