Commit Graph

2022 Commits

Author SHA1 Message Date
Tamir Duberstein 231d9e7e5d
Remove rustc_bitflags; use the bitflags crate 2017-09-17 14:19:24 -04:00
bors d1ca653b17 Auto merge of #44484 - tirr-c:issue-44332, r=petrochenkov
Parse nested closure with two consecutive parameter lists properly

This is a followup of #44332.

---

Currently, in nightly, this does not compile:

```rust
fn main() {
    let f = |_||x, y| x+y;
    println!("{}", f(())(1, 2)); // should print 3
}
```

`|_||x, y| x+y` should be parsed as `|_| (|x, y| x+y)`, but the parser didn't accept `||` between `_` and `x`. This patch fixes the problem.

r? @petrochenkov
2017-09-14 00:28:27 +00:00
bors e6bce95094 Auto merge of #44375 - topecongiro:macrodef-span, r=petrochenkov
Add visibility to span for macros 2.0

cc https://github.com/rust-lang-nursery/rustfmt/issues/1949.
r? @nrc
2017-09-11 02:23:24 +00:00
Wonwoo Choi 31cf11a157 Parse nested closure with two consecutive parameter lists properly 2017-09-11 01:00:03 +09:00
topecongiro ed63e0be95 Add visibility to span for macros 2.0 2017-09-07 06:28:04 +09:00
Wonwoo Choi 258ec30116 Expect pipe symbol after closure parameter lists 2017-09-05 18:25:42 +09:00
Matt Ickstadt f866152991 Implement RFC 1925 2017-09-01 12:46:37 -05:00
bors 69dbe6602d Auto merge of #43425 - matklad:lambda-restrictions, r=eddyb
Lambda expressions honor no struct literal restriction

This is a fix for #43412 if we decide that it is indeed a bug :)

closes #43412
2017-08-31 23:26:47 +00:00
Vadim Petrochenkov 3da868dcb6 Make fields of `Span` private 2017-08-30 01:38:54 +03:00
Alex Crichton c872f47276 Merge remote-tracking branch 'origin/master' into gen 2017-08-25 07:15:12 -07:00
Jeffrey Seyfried d54a6d9413 Ensure that generic arguments don't end up in attribute paths. 2017-08-22 15:50:19 -07:00
Alex Crichton 04c66c30a7 Merge remote-tracking branch 'origin/master' into gen 2017-08-21 21:47:07 -07:00
bors 6722996923 Auto merge of #43854 - estebank:missing-cond, r=nikomatsakis
Point out missing if conditional

On a case where an else conditional is missing, point this out
instead of the token immediately after the (incorrect) else block:

```
error: missing condition for `if` statemementt push fork -f

  --> $DIR/issue-13483.rs:16:5
   |
13 |    } else if {
   |             ^ expected if condition here
```

instead of

```
error: expected `{`, found `else`
  --> ../../src/test/ui/issue-13483.rs:14:7
   |
14 |     } else {
   |       ^^^^
```

Fix #13483.
2017-08-22 04:28:49 +00:00
bors 8df670b6a6 Auto merge of #43540 - petrochenkov:pathrelax, r=nikomatsakis
syntax: Relax path grammar

TLDR: Accept the disambiguator `::` in "type" paths (`Type::<Args>`), accept the disambiguator `::` before parenthesized generic arguments (`Fn::(Args)`).

The "turbofish" disambiguator `::<>` in expression paths is a necessary evil required for path parsing to be both simple and to give reasonable results.
Since paths in expressions usually refer to values (but not necessarily, e.g. `Struct::<u8> { field: 0 }` is disambiguated, but refers to a type), people often consider `::<>` to be inherent to *values*, and not *expressions* and want to write disambiguated paths for values even in contexts where disambiguation is not strictly necessary, for example when a path is passed to a macro `m!(Vec::<i32>::new)`.
The problem is that currently, if the disambiguator is not *required*, then it's *prohibited*. This results in confusion - see https://github.com/rust-lang/rust/issues/41740, https://internals.rust-lang.org/t/macro-path-uses-novel-syntax/5561.

This PR makes the disambiguator *optional* instead of prohibited in contexts where it's not strictly required, so people can pass paths to macros in whatever form they consider natural (e.g. disambiguated form for value paths).
This PR also accepts the disambiguator in paths with parenthesized arguments (`Fn::(Args)`) for consistency and to simplify testing of stuff like https://github.com/rust-lang/rust/pull/41856#issuecomment-301219194.

Closes https://github.com/rust-lang/rust/issues/41740

cc @rust-lang/lang
r? @nikomatsakis
2017-08-21 23:03:57 +00:00
Esteban Küber f06323337d Verify that an `if` condition block returns a value 2017-08-17 20:25:46 -07:00
Esteban Küber 20a2716206 Check for `else` keyword on missing `if` condition 2017-08-17 15:48:39 -07:00
Esteban Küber c4672f8e87 Point out missing if conditional
On a case where an else conditional is missing, point this out
instead of the token immediately after the (incorrect) else block:

```
error: missing condition for `if` statemementt push fork -f

  --> $DIR/issue-13483.rs:16:5
   |
13 |    } else if {
   |             ^ expected if condition here
```

instead of

```
error: expected `{`, found `else`
  --> ../../src/test/ui/issue-13483.rs:14:7
   |
14 |     } else {
   |       ^^^^
```
2017-08-17 10:18:06 -07:00
Alex Crichton 1210ebff43 Merge remote-tracking branch 'origin/master' into gen 2017-08-16 10:03:47 -07:00
Zack M. Davis 1b6c9605e4 use field init shorthand EVERYWHERE
Like #43008 (f668999), but _much more aggressive_.
2017-08-15 15:29:17 -07:00
Alex Crichton 1413253a41 Merge remote-tracking branch 'origin/master' into gen 2017-08-14 19:36:13 -07:00
topecongiro 64503b6ee7 Include 'let' keyword to the span for ast::Local 2017-08-12 18:00:57 +09:00
Vadim Petrochenkov 804459bdca Issue warnings for unnecessary path disambiguators 2017-08-11 02:47:22 +03:00
Vadim Petrochenkov 7d21f21f71 syntax: Relax path grammar 2017-08-11 02:06:27 +03:00
Alex Crichton b8aa595e6d Merge remote-tracking branch 'origin/master' into gen 2017-08-10 14:05:58 -07:00
Kornel cabc9be9e2 Reword error hint 2017-08-10 12:31:02 +01:00
Vadim Petrochenkov a965beef8f Better diagnostics and recovery for `const` in extern blocks 2017-08-10 00:52:50 +01:00
Alex Crichton c25ddf21f1 Merge remote-tracking branch 'origin/master' into gen 2017-08-09 11:44:21 -07:00
Kornel ff0513c697 Hint correct extern constant syntax 2017-08-07 18:23:15 +01:00
bors 5c71e4ef90 Auto merge of #43551 - Mark-Simulacrum:rollup, r=Mark-Simulacrum
Rollup of 8 pull requests

- Successful merges: #43409, #43501, #43509, #43512, #43513, #43536, #43544, #43549
- Failed merges:
2017-07-30 01:40:11 +00:00
Mark Simulacrum e61e73fcc4 Rollup merge of #43501 - topecongiro:span-to-whereclause, r=nrc
Add Span to ast::WhereClause

This PR adds `Span` field to `ast::WhereClause`. The motivation here is to make rustfmt's life easier when recovering comments before and after where clause.
r? @nrc
2017-07-29 18:03:52 -06:00
bors 53bf7903fa Auto merge of #43009 - GuillaumeGomez:unused-doc-comments, r=nrc
Throw errors when doc comments are added where they're unused

#42617
2017-07-29 23:01:45 +00:00
Alex Crichton 4886ec8665 syntax: Capture a `TokenStream` when parsing items
This is then later used by `proc_macro` to generate a new
`proc_macro::TokenTree` which preserves span information. Unfortunately this
isn't a bullet-proof approach as it doesn't handle the case when there's still
other attributes on the item, especially inner attributes.

Despite this the intention here is to solve the primary use case for procedural
attributes, attached to functions as outer attributes, likely bare. In this
situation we should be able to now yield a lossless stream of tokens to preserve
span information.
2017-07-28 10:47:01 -07:00
topecongiro 6375b77ebb Add Span to ast::WhereClause 2017-07-29 00:43:35 +09:00
Alex Crichton 9b2f7624ec syntax: Add `tokens: Option<TokenStream>` to Item
This commit adds a new field to the `Item` AST node in libsyntax to optionally
contain the original token stream that the item itself was parsed from. This is
currently `None` everywhere but is intended for use later with procedural
macros.
2017-07-28 07:58:20 -07:00
Alex Crichton 09a5d319ab Remove support for `gen arg` 2017-07-28 15:46:26 +02:00
Alex Crichton 17c749f3ee Fix tidy warnings 2017-07-28 15:46:23 +02:00
John Kåre Alsaker d861982ca6 Generator literal support 2017-07-28 15:46:23 +02:00
Vadim Petrochenkov 128f565dae Give span to angle bracketed generic arguments 2017-07-27 22:59:35 +03:00
Vadim Petrochenkov da77a1a0ac Simplify parsing of paths 2017-07-27 22:59:34 +03:00
Guillaume Gomez 1cebf98e4c Make a lint instead 2017-07-27 20:38:33 +02:00
Guillaume Gomez 7e70a63e61 Throw errors when doc comments are added where they're unused 2017-07-27 20:38:32 +02:00
bors f60d373422 Auto merge of #43489 - petrochenkov:mutref, r=GuillaumeGomez
Better diagnostics and recovery for `mut ref` in patterns

Fixes https://github.com/rust-lang/rust/issues/43286
Supersedes https://github.com/rust-lang/rust/pull/43451

r? @GuillaumeGomez
2017-07-27 11:40:12 +00:00
Vadim Petrochenkov dda30f6902 Better diagnostics and recovery for `mut ref` in patterns 2017-07-26 18:59:07 +03:00
Nick Cameron 53884705cb Fix the spans of catch blocks to include the `do` 2017-07-25 11:39:41 +12:00
bors afe145d227 Auto merge of #43096 - estebank:ascription-help, r=nikomatsakis
Point at `:` when using it instead of `;`

When triggering type ascription in such a way that we can infer a
statement end was intended, add a suggestion for the change. Always
point out the reason for the expectation of a type is due to type
ascription.

Fix #42057, #41928.
2017-07-23 20:56:20 +00:00
bors f3e26a02eb Auto merge of #43386 - oli-obk:suggestions, r=nikomatsakis
Adjust new suggestions to the suggestion guidelines

Addresses https://github.com/rust-lang/rust/pull/42033#discussion_r127694915

guidelines are https://github.com/rust-lang/rust/blob/master//src/librustc_errors/diagnostic.rs#L212-L224
2017-07-23 18:13:20 +00:00
Aleksey Kladov 7054fe3094 Lambda expressions honor no struct literal restriction 2017-07-23 16:20:14 +03:00
Oliver Schneider 401ab612c2 Adjust new suggestions to the suggestion guidelines 2017-07-21 13:59:17 +02:00
Esteban Küber e99d309c56 Use the macro structure spans instead of the invocation 2017-07-20 21:27:22 -07:00
Aleksey Kladov 5e25dc9966 Unify rules about commas in match arms and semicolons in expressions 2017-07-18 03:42:21 +03:00