Commit Graph

2773 Commits

Author SHA1 Message Date
Esteban Küber
06d577d8b2 Detect for _ in in bar {} typo 2018-09-20 22:40:44 -07:00
Vadim Petrochenkov
9784d3543f parser: Tweak function parameter parsing to avoid rollback on succesfull path 2018-09-21 04:26:53 +03:00
Vitaly _Vi Shukela
d0790c490a Whitespace fix again. 2018-09-17 20:26:05 +03:00
Vitaly _Vi Shukela
2b77760944 Fill in suggestions Applicability according to @estebank
Also fix some formatting along the way.
2018-09-17 03:20:08 +03:00
varkor
cb594cf373 Treat dyn as a keyword in the 2018 edition 2018-09-16 23:34:42 +01:00
Vitaly _Vi Shukela
b6fea3255c Remove usages of span_suggestion without Applicability
Use Applicability::Unspecified for all of them instead.
2018-09-16 21:42:46 +03:00
Vitaly _Vi Shukela
bc63a4a13a issue 54109: use short suggestions 2018-09-15 02:05:32 +03:00
Vitaly _Vi Shukela
acc44e40cc Use span_suggestion_with_applicability for "and/or" hinter
Advised by @estebank.
2018-09-13 20:44:07 +03:00
Vitaly _Vi Shukela
636f518aac Suggest && and || instead of 'and' and 'or'
Closes #54109.
2018-09-13 15:54:12 +03:00
Tinco Andringa
81a8ee8fc4 pretty=expanded should expand mod declarations 2018-09-10 12:33:38 +02:00
Tinco Andringa
c3afb16e16 Track whether module declarations are inline (fixes #12590) 2018-09-10 12:33:37 +02:00
bors
40fc8ba5f9 Auto merge of #53902 - dtolnay:group, r=petrochenkov
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-09 13:27:44 +00:00
David Tolnay
a1dd39e724 Track distinct spans for open and close delimiter 2018-09-08 19:01:48 -07:00
John Renner
0593dc7e3c Move #[test_case] to a syntax extension 2018-09-04 22:33:23 -07:00
Seiichi Uchida
51dbb024f7 Replace check() + bump() with eat() 2018-09-02 15:19:28 +09:00
bors
28bcffead7 Auto merge of #53815 - F001:if-let-guard, r=petrochenkov
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-09-01 20:31:29 +00:00
Pietro Albini
1535075b58 Rollup merge of #53655 - jcpst:with_applicability, r=estebank
set applicability

Update a few more calls as described in #50723

r? @estebank
2018-08-30 20:15:33 +02:00
F001
7a083ca25f introduce Guard enum 2018-08-30 12:18:11 +08:00
Joseph Post
1f421d6456 call span_suggestion with applicability 2018-08-25 23:28:26 -05:00
Mark Mansi
3e073ab111 fix compile error 2018-08-24 15:48:00 -05:00
Mark Mansi
d2dfc9cea3 Remove anon trait params from 2018 and beyond 2018-08-24 15:48:00 -05:00
kennytm
d13c61208a Rollup merge of #53563 - matthiaskrgr:String, r=varkor
use String::new() instead of String::from(""), "".to_string(), "".to_owned() or "".into()
2018-08-24 16:44:35 +08:00
bors
35bf1ae257 Auto merge of #52602 - scottmcm:tryblock-expr, r=nikomatsakis
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-23 11:46:24 +00:00
Matthias Krüger
ede1f7d2a5 use String::new() instead of String::from(""), "".to_string(), "".to_owned() or "".into() 2018-08-23 10:14:52 +02:00
Guillaume Gomez
f012b4c84e Rollup merge of #53585 - dtolnay:comment, r=Mark-Simulacrum
Remove super old comment on function that parses items

This comment was added more than 5 years ago in ab03c1e422. As far as anyone reading this comment today needs to know, the function has never parsed items from inside an extern crate.
2018-08-22 17:45:43 +02:00
Guillaume Gomez
e53a575ddb Rollup merge of #53544 - estebank:issue-53534, r=varkor
Point at the trait argument when using unboxed closure

Fix #53534.

r? @varkor
2018-08-22 17:45:37 +02:00
David Tolnay
cf1b6d6fe8 Remove super old comment on function that parses items
This comment was added more than 5 years ago in ab03c1e422. As far as
anyone reading this comment today needs to know, the function has never
parsed items from inside an extern crate.
2018-08-21 21:50:34 -04:00
kennytm
b5519db323 Rollup merge of #53496 - matthiaskrgr:codespell_08_2018, r=varkor
Fix typos found by codespell.
2018-08-21 17:51:49 +08:00
Esteban Küber
05d19fba27 Point at the trait argument when using unboxed closure 2018-08-20 16:16:17 -07:00
Scott McMurray
0095471417 Switch out another use of do catch 2018-08-19 17:51:02 -07:00
Scott McMurray
817efc2489 Suggest try if someone uses do catch 2018-08-19 16:53:42 -07:00
Scott McMurray
9e64ce1799 Parse try blocks with the try keyword instead of do catch placeholder 2018-08-19 16:53:05 -07:00
Scott McMurray
f2445fb507 Rename Catch variants to TryBlock
(Not `Try` since `QuestionMark` is using that.)
2018-08-19 16:30:53 -07:00
Donato Sciarra
062bfbf39b mv codemap source_map 2018-08-19 23:01:01 +02:00
Donato Sciarra
d3fe97f3d3 mv codemap() source_map() 2018-08-19 23:01:01 +02:00
Donato Sciarra
82607d2cf3 mv (mod) codemap source_map 2018-08-19 23:01:00 +02:00
Donato Sciarra
c655473378 mv CodeMap SourceMap 2018-08-19 23:00:59 +02:00
Matthias Krüger
71120ef1e5 Fix typos found by codespell. 2018-08-19 17:41:28 +02:00
kennytm
1cda84bfdb Rollup merge of #53360 - PramodBisht:issue/51602, r=estebank
Addressed #51602

Fixed #51602
r? @estebank

here I have addressed the case where `in` was not expected right after `if` block. Speaking of `type ascription` I am not sure if this the best approach which I have implemented. Plus I think one more test case can be added to test `type-ascription` case, though I don't have any at this point of time. I will ping you again if all existing testcases pass.
2018-08-17 00:13:21 +08:00
Vadim Petrochenkov
097c40cf6e syntax: Enforce attribute grammar in the parser 2018-08-15 00:05:55 +03:00
Pramod Bisht
b70be5bc79 Adddressed #51602 2018-08-14 19:05:27 +00:00
ljedrz
e5e6375352 Move SmallVec and ThinVec out of libsyntax 2018-08-13 22:11:57 +02:00
varkor
5c814e2e4e Clean up and add extra tests 2018-08-11 21:25:48 +01:00
varkor
49e9c5fe90 Add E0642 to parser error 2018-08-11 21:08:24 +01:00
varkor
e4c3b49fe7 Emit an error during parsing 2018-08-11 21:08:24 +01:00
varkor
a478cd41e3 Improve diagnostics 2018-08-11 21:08:24 +01:00
varkor
235905c080 Fix handling of trait methods with bodies and improve efficiency 2018-08-11 21:08:24 +01:00
varkor
90a6954327 Emit error for pattern arguments in trait methods
The error and check for this already existed, but the parser didn't try to parse trait method arguments as patterns, so the error was never emitted. This surfaces the error, so we get better errors than simple parse errors.
2018-08-11 21:08:24 +01:00
bors
023fd7e74a Auto merge of #52767 - ljedrz:avoid_format, r=petrochenkov
Prefer to_string() to format!()

Simple benchmarks suggest in some cases it can be faster by even 37%:
```
test converting_f64_long  ... bench:         339 ns/iter (+/- 199)
test converting_f64_short ... bench:         136 ns/iter (+/- 34)
test converting_i32_long  ... bench:          87 ns/iter (+/- 16)
test converting_i32_short ... bench:          87 ns/iter (+/- 49)
test converting_str       ... bench:          54 ns/iter (+/- 15)
test formatting_f64_long  ... bench:         349 ns/iter (+/- 176)
test formatting_f64_short ... bench:         145 ns/iter (+/- 14)
test formatting_i32_long  ... bench:          98 ns/iter (+/- 14)
test formatting_i32_short ... bench:          93 ns/iter (+/- 15)
test formatting_str       ... bench:          86 ns/iter (+/- 23)
```
2018-07-29 09:33:37 +00:00
kennytm
b584c3227d Rollup merge of #52740 - estebank:crate-name, r=petrochenkov
Suggest underscore when using dashes in crate namet push fork

Fix #48437.
2018-07-28 16:24:58 +08:00