about summary refs log tree commit diff
path: root/src/libsyntax/parse
AgeCommit message (Collapse)AuthorLines
2018-10-05Rollup merge of #54833 - abonander:issue-54441, r=petrochenkovPietro Albini-12/+11
make `Parser::parse_foreign_item()` return a foreign item or error Fixes `Parser::parse_foreign_item()` to follow the convention of `parse_trait_item()` and `parse_impl_item()` in that it *must* parse an item or return an error, and then the caller is responsible for detecting the closing delimiter. This prevents it from looping endlessly on an unexpected token in `ext/expand.rs` where it was also leaking memory by continually pushing to `Parser::expected_tokens` via `Parser::check_keyword()`. closes #54441 r? @petrochenkov cc @dtolnay
2018-10-05add suggestion for inverted function parametersAndy Russell-1/+20
Fixes #54065.
2018-10-05make `Parser::parse_foreign_item()` return a foreign item or errorAustin Bonander-12/+11
closes #54441
2018-09-27Auto merge of #52319 - tinco:issue_12590, r=pnkfelixbors-5/+12
Track whether module declarations are inline (fixes #12590) To track whether module declarations are inline I added a field `inline: bool` to `ast::Mod`. The main use case is for pretty to know whether it should render the items associated with the module, but perhaps there are use cases for this information to not be forgotten in the AST.
2018-09-23Fixed off-by-one span.David Wood-1/+1
Fixes the off-by-one span issue where closure argument spans were pointing to the token after the argument.
2018-09-22Rollup merge of #54415 - petrochenkov:norollback, r=estebankPietro Albini-36/+26
parser: Tweak function parameter parsing to avoid rollback on succesfull path Since rollback is not perfect and may e.g. leave non-fatal errors after it, we need to make sure compilation fails if it happens. So in particular case of `fn parse_arg_general` we need to parse the "good" `TYPE` first and only then rollback and recover erroneous `PAT: TYPE` if necessary. Found when working on https://github.com/rust-lang/rfcs/pull/2544#issuecomment-423293222. r? @ghost
2018-09-22Rollup merge of #54409 - estebank:remove-in, r=pnkfelixPietro Albini-9/+25
Detect `for _ in in bar {}` typo Fix #36611, #52964, without modifying the parsing of emplacement `in` to avoid further problems like #50832.
2018-09-22Rollup merge of #54261 - varkor:dyn-keyword-2018, r=petrochenkovPietro Albini-2/+4
Make `dyn` a keyword in the 2018 edition Proposed in https://github.com/rust-lang/rust/issues/44662#issuecomment-421596088.
2018-09-20Detect `for _ in in bar {}` typoEsteban Küber-9/+25
2018-09-21parser: Tweak function parameter parsing to avoid rollback on succesfull pathVadim Petrochenkov-36/+26
2018-09-17Whitespace fix again.Vitaly _Vi Shukela-5/+5
2018-09-17Fill in suggestions Applicability according to @estebankVitaly _Vi Shukela-5/+6
Also fix some formatting along the way.
2018-09-16Treat `dyn` as a keyword in the 2018 editionvarkor-2/+4
2018-09-16Remove usages of span_suggestion without ApplicabilityVitaly _Vi Shukela-1/+5
Use Applicability::Unspecified for all of them instead.
2018-09-15issue 54109: use short suggestionsVitaly _Vi Shukela-4/+4
2018-09-13Use span_suggestion_with_applicability for "and/or" hinterVitaly _Vi Shukela-4/+24
Advised by @estebank.
2018-09-13Suggest && and || instead of 'and' and 'or'Vitaly _Vi Shukela-0/+13
Closes #54109.
2018-09-10pretty=expanded should expand mod declarationsTinco Andringa-3/+3
2018-09-10Track whether module declarations are inline (fixes #12590)Tinco Andringa-5/+12
2018-09-09Don't compute padding of braces unless they are unmatchedEsteban Küber-26/+23
2018-09-09Auto merge of #53902 - dtolnay:group, r=petrochenkovbors-19/+21
proc_macro::Group::span_open and span_close Before this addition, every delimited group like `(`...`)` `[`...`]` `{`...`}` has only a single Span that covers the full source location from opening delimiter to closing delimiter. This makes it impossible for a procedural macro to trigger an error pointing to just the opening or closing delimiter. The Rust compiler does not seem to have the same limitation: ```rust mod m { type T = } ``` ```console error: expected type, found `}` --> src/main.rs:3:1 | 3 | } | ^ ``` On that same input, a procedural macro would be forced to trigger the error on the last token inside the block, on the entire block, or on the next token after the block, none of which is really what you want for an error like above. This commit adds `group.span_open()` and `group.span_close()` which access the Span associated with just the opening delimiter and just the closing delimiter of the group. Relevant to Syn as we implement real error messages for when parsing fails in a procedural macro: https://github.com/dtolnay/syn/issues/476. ```diff impl Group { fn span(&self) -> Span; + fn span_open(&self) -> Span; + fn span_close(&self) -> Span; } ``` Fixes #48187 r? @alexcrichton
2018-09-08Track distinct spans for open and close delimiterDavid Tolnay-19/+21
2018-09-09Auto merge of #53949 - estebank:unclosed-delim, r=nikomatsakisbors-4/+48
Improve messages for un-closed delimiter errors
2018-09-05Change wording of unclosed delimiter labelEsteban Küber-1/+4
2018-09-05Provide more context for unenclosed delimitersEsteban Küber-2/+43
* When encountering EOF, point at the last opening brace that does not have the same indentation level as its close delimiter. * When encountering the wrong type of close delimiter, point at the likely correct open delimiter to give a better idea of what went wrong.
2018-09-05Reword un-closed delimiter labelEsteban Küber-2/+2
2018-09-04Move #[test_case] to a syntax extensionJohn Renner-1/+0
2018-09-02Replace check() + bump() with eat()Seiichi Uchida-20/+10
2018-09-01Auto merge of #53815 - F001:if-let-guard, r=petrochenkovbors-2/+2
refactor match guard This is the first step to implement RFC 2294: if-let-guard. Tracking issue: https://github.com/rust-lang/rust/issues/51114 The second step should be introducing another variant `IfLet` in the Guard enum. I separated them into 2 PRs for the convenience of reviewers. r? @petrochenkov
2018-08-30Rollup merge of #53655 - jcpst:with_applicability, r=estebankPietro Albini-2/+12
set applicability Update a few more calls as described in #50723 r? @estebank
2018-08-30introduce Guard enumF001-2/+2
2018-08-28Use FxHash{Map,Set} instead of the default Hash{Map,Set} everywhere in rustc.Eduard-Mihai Burtescu-7/+7
2018-08-25call span_suggestion with applicabilityJoseph Post-2/+12
2018-08-24fix compile errorMark Mansi-1/+1
2018-08-24Remove anon trait params from 2018 and beyondMark Mansi-1/+7
2018-08-24Rollup merge of #53563 - matthiaskrgr:String, r=varkorkennytm-8/+8
use String::new() instead of String::from(""), "".to_string(), "".to_owned() or "".into()
2018-08-23Auto merge of #52602 - scottmcm:tryblock-expr, r=nikomatsakisbors-11/+31
Implement try block expressions I noticed that `try` wasn't a keyword yet in Rust 2018, so... ~~Fix​es https://github.com/rust-lang/rust/issues/52604~~ That was fixed by PR https://github.com/rust-lang/rust/pull/53135 cc https://github.com/rust-lang/rust/issues/31436 https://github.com/rust-lang/rust/issues/50412
2018-08-23use String::new() instead of String::from(""), "".to_string(), "".to_owned() ↵Matthias Krüger-8/+8
or "".into()
2018-08-22Rollup merge of #53585 - dtolnay:comment, r=Mark-SimulacrumGuillaume Gomez-2/+0
Remove super old comment on function that parses items This comment was added more than 5 years ago in ab03c1e4221. As far as anyone reading this comment today needs to know, the function has never parsed items from inside an extern crate.
2018-08-22Rollup merge of #53544 - estebank:issue-53534, r=varkorGuillaume Gomez-7/+8
Point at the trait argument when using unboxed closure Fix #53534. r? @varkor
2018-08-22Rollup merge of #53504 - ekse:suggestions-applicability-2, r=estebankGuillaume Gomez-2/+6
Set applicability for more suggestions. Converts a couple more calls to `span_suggestion_with_applicability` (#50723). To be on the safe side, I marked suggestions that depend on the intent of the user or that are potentially lossy conversions as MaybeIncorrect. r? @estebank
2018-08-21Remove super old comment on function that parses itemsDavid Tolnay-2/+0
This comment was added more than 5 years ago in ab03c1e4221. As far as anyone reading this comment today needs to know, the function has never parsed items from inside an extern crate.
2018-08-21Rollup merge of #53521 - alexcrichton:optimize-lit-token, r=michaelwoeristerkennytm-6/+4
syntax: Optimize some literal parsing Currently in the `wasm-bindgen` project we have a very very large crate that's procedurally generated, `web-sys`. To generate this crate we parse all of a browser's WebIDL and we then generate bindings for all of the APIs contained within. The resulting Rust file is 18MB large (wow!) and currently takes a very long time to compile in debug mode. On the nightly compiler a *debug* build takes 90s for the crate to finish. I was curious what was taking so long and upon investigating a *massive* portion of the time was spent in the `lit_token` method of the compiler, primarily formatting strings via `format!`. Upon some more investigation it looks like the `byte_str_lit` was allocating an error message once per byte, causing a very large number of allocations to happen for large literals, of which wasm-bindgen generates quite a few (some are MB large). This commit fixes the issue by lazily allocating the error message, only doing so if the error message is actually needed (which should be never). As a result, the debug mode compilation time for our `web-sys` crate decreased from 90s to 20s, a very nice improvement! (although we've still got some work to do).
2018-08-21Rollup merge of #53496 - matthiaskrgr:codespell_08_2018, r=varkorkennytm-5/+5
Fix typos found by codespell.
2018-08-20Point at the trait argument when using unboxed closureEsteban Küber-7/+8
2018-08-20syntax: Optimize some literal parsingAlex Crichton-6/+4
Currently in the `wasm-bindgen` project we have a very very large crate that's procedurally generated, `web-sys`. To generate this crate we parse all of a browser's WebIDL and we then generate bindings for all of the APIs contained within. The resulting Rust file is 18MB large (wow!) and currently takes a very long time to compile in debug mode. On the nightly compiler a *debug* build takes 90s for the crate to finish. I was curious what was taking so long and upon investigating a *massive* portion of the time was spent in the `lit_token` method of the compiler, primarily formatting strings via `format!`. Upon some more investigation it looks like the `byte_str_lit` was allocating an error message once per byte, causing a very large number of allocations to happen for large literals, of which wasm-bindgen generates quite a few (some are MB large). This commit fixes the issue by lazily allocating the error message, only doing so if the error message is actually needed (which should be never). As a result, the debug mode compilation time for our `web-sys` crate decreased from 90s to 20s, a very nice improvement! (although we've still got some work to do).
2018-08-20Set applicability for more suggestions.Sébastien Duquette-2/+6
2018-08-19Switch out another use of `do catch`Scott McMurray-1/+9
2018-08-19Suggest `try` if someone uses `do catch`Scott McMurray-0/+12
2018-08-19Parse try blocks with the try keyword instead of do catch placeholderScott McMurray-11/+11