Commit graph

2482 commits

Author SHA1 Message Date
Esteban Küber
e387597a8f Reword message for incorrect float literal 2019-01-20 13:59:35 -08:00
Esteban Küber
acbda76f23 Recover with suggestion from writing .42 instead of 0.42 2019-01-20 01:49:04 -08:00
Esteban Küber
b1f169fe7a Recover from parse errors in struct literal fields
Attempt to recover from parse errors while parsing a struct's literal fields
by skipping tokens until a comma or the closing brace is found. This allows
errors in other fields to be reported.
2019-01-20 00:37:06 -08:00
Mazdak Farrokhzad
e78bde4015
Rollup merge of #57699 - euclio:applicability-ify, r=petrochenkov
add applicability to remaining suggestions

Fixes #50723.

I noticed that the suggestion methods on `DiagnosticBuilder` weren't actually deprecated due to #57679. This PR deprecates them properly and fixes the remaining usages.

There's also a PR for clippy at rust-lang/rust-clippy#3667.
2019-01-19 14:21:23 +01:00
Mazdak Farrokhzad
349c9eeb35
Rollup merge of #57486 - nnethercote:simplify-TokenStream-more, r=petrochenkov
Simplify `TokenStream` some more

These commits simplify `TokenStream`, remove `ThinTokenStream`, and avoid some clones. The end result is simpler code and a slight perf win on some benchmarks.

r? @petrochenkov
2019-01-19 14:21:17 +01:00
Dan Robertson
e3ba6ed3f5
Fix suggestions given mulitple bad lifetimes
When given multiple lifetimes prior to type parameters in generic
parameters, do not ICE and print the correct suggestion.
2019-01-18 01:10:14 +00:00
Andy Russell
02843d9eb7
properly deprecate suggestion methods 2019-01-17 10:18:56 -05:00
Mazdak Farrokhzad
b03d414e3c
Rollup merge of #57585 - estebank:trailing-semicolon, r=petrochenkov
Recover from item trailing semicolon

CC https://github.com/rust-lang/rfcs/pull/2479

r? @petrochenkov
2019-01-14 20:31:58 +01:00
Mazdak Farrokhzad
feb48f334d
Rollup merge of #57572 - Centril:unaccept-extern-in-path, r=petrochenkov
Unaccept `extern_in_paths`

Based on completed fcp-close in https://github.com/rust-lang/rust/issues/55600, this removes `extern_in_path` (e.g. `extern::foo::bar`) from the language. The changes are primarily reversing 32db83b16e.

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

r? @petrochenkov
2019-01-14 20:31:57 +01:00
Mazdak Farrokhzad
2f7a226c4d
Rollup merge of #57540 - estebank:eval-more, r=petrochenkov
Modify some parser diagnostics to continue evaluating beyond the parser

Continue evaluating further errors after parser errors on:
 - trailing type argument attribute
 - lifetime in incorrect location
 - incorrect binary literal
 - missing `for` in `impl Trait for Foo`
 - type argument in `where` clause
 - incorrect float literal
 - incorrect `..` in pattern
 - associated types
 - incorrect discriminator value variant error

and others. All of these were found by making `continue-parse-after-error` `true` by default to identify errors that would need few changes. There are now only a handful of errors that have any change with `continue-parse-after-error` enabled.

These changes make it so `rust` _won't_ stop evaluation after finishing parsing, enabling type checking errors to be displayed on the existing code without having to fix the parse errors.

Each commit has an individual diagnostic change with their corresponding tests.

CC #48724.
2019-01-14 20:31:55 +01:00
Esteban Küber
3874c7755f Recover from item trailing semicolon 2019-01-13 17:29:32 -08:00
Nicholas Nethercote
ba31d83adc Avoid some TokenTree-to-TokenStream conversions.
This avoids some allocations.
2019-01-14 09:10:26 +11:00
Nicholas Nethercote
ce0d9949b8 Remove ThinTokenStream.
`TokenStream` is now almost identical to `ThinTokenStream`. This commit
removes the latter, replacing it with the former.
2019-01-14 09:10:26 +11:00
Mazdak Farrokhzad
b1200a29b0
Rollup merge of #57004 - nnethercote:TS-change-Stream, r=petrochenkov
Make `TokenStream` less recursive.

`TokenStream` is currently recursive in *two* ways:

- the `TokenTree` variant contains a `ThinTokenStream`, which can
  contain a `TokenStream`;

- the `TokenStream` variant contains a `Vec<TokenStream>`.

The latter is not necessary and causes significant complexity. This
commit replaces it with the simpler `Vec<(TokenTree, IsJoint)>`.

This reduces complexity significantly. In particular, `StreamCursor` is
eliminated, and `Cursor` becomes much simpler, consisting now of just a
`TokenStream` and an index.

The commit also removes the `Extend` impl for `TokenStream`, because it
is only used in tests. (The commit also removes those tests.)

Overall, the commit reduces the number of lines of code by almost 200.
2019-01-13 17:21:39 +01:00
Mazdak Farrokhzad
c4f6ef25d2 remove extern_in_paths. 2019-01-13 14:18:00 +01:00
Esteban Küber
28ea03e114 Suggest correct location for lifetime parameters in use 2019-01-12 19:25:03 -08:00
Esteban Küber
3ead6de40d Tweak incorrect discriminator value variant error 2019-01-11 23:12:29 -08:00
Esteban Küber
7feb802d89 Small tweaks to parser errors 2019-01-11 22:04:54 -08:00
Esteban Küber
de3c4be099 Tweak type argument after assoc type error 2019-01-11 21:45:24 -08:00
Esteban Küber
8119017746 Continue evaluating after finding incorrect .. in pattern 2019-01-11 21:33:57 -08:00
Esteban Küber
57f17e91d0 Continue evaluating after type argument in where clause 2019-01-11 21:05:48 -08:00
Esteban Küber
5d2f31cddc Continue evaluating after missing for in impl Trait for Foo 2019-01-11 20:58:51 -08:00
Esteban Küber
fc4b54157f Continue parsing after lifetime in incorrect location 2019-01-11 19:41:43 -08:00
Esteban Küber
5c67ba615c Continue parser after trailing type argument attribute 2019-01-11 19:31:45 -08:00
Mazdak Farrokhzad
561483e4e8 stabilize top level or-pats in if/while let. 2019-01-11 23:57:04 +01:00
Nicholas Nethercote
e80a93040f Make TokenStream less recursive.
`TokenStream` is currently recursive in *two* ways:

- the `TokenTree` variant contains a `ThinTokenStream`, which can
  contain a `TokenStream`;

- the `TokenStream` variant contains a `Vec<TokenStream>`.

The latter is not necessary and causes significant complexity. This
commit replaces it with the simpler `Vec<(TokenTree, IsJoint)>`.

This reduces complexity significantly. In particular, `StreamCursor` is
eliminated, and `Cursor` becomes much simpler, consisting now of just a
`TokenStream` and an index.

The commit also removes the `Extend` impl for `TokenStream`, because it
is only used in tests. (The commit also removes those tests.)

Overall, the commit reduces the number of lines of code by almost 200.
2019-01-08 15:08:46 +11:00
bors
d3704932bd Auto merge of #57251 - petrochenkov:reregr, r=varkor
syntax: Fix regression in diagnostics for patterns in trait method parameters

Fixes https://github.com/rust-lang/rust/issues/55036
2019-01-02 09:24:10 +00:00
Vadim Petrochenkov
3df500db29 syntax: Fix regression in diagnostics for patterns in trait method parameters 2019-01-01 23:59:32 +03:00
Esteban Küber
2cd0d14eb1 Address review comments
- Suggest raw ident escaping in all editions
- Keep primary label in all cases
2018-12-31 08:24:00 -08:00
Esteban Küber
833f12ebd7 Suggest using raw identifiers in 2018 edition when using keywords 2018-12-31 08:24:00 -08:00
Vadim Petrochenkov
37af04ff8d Address review comments and CI failures 2018-12-27 15:51:37 +03:00
Vadim Petrochenkov
b99fb2f544 Fix trace_macros and log_syntax 2018-12-27 15:51:36 +03:00
Vadim Petrochenkov
4ac592516f Get rid of Block::recovered 2018-12-27 15:51:36 +03:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
Pietro Albini
29aa466508
Rollup merge of #56820 - ljedrz:format_tweaks, r=alexcrichton
format-related tweaks

- remove an unreachable condition
- inline one-liners related to `parse_expr` (called in succession)
- refactor `report_invalid_references`
- refactor `verify_arg_type`
- minor stylistic improvements
2018-12-19 11:47:09 +01:00
bors
c6fb01d629 Auto merge of #56737 - nnethercote:TokenStream-improvements, r=petrochenkov
`TokenStream` improvements

Some `TokenStream` improvements: shrinking `TokenStream` and some other types, and some other code clean-ups.
2018-12-17 01:48:23 +00:00
bors
747a5e514a Auto merge of #56584 - davidtwco:issue-53990, r=nikomatsakis
2018 edition - confusing error message when declaring unnamed parameters

Fixes #53990.

This PR adds a note providing context for the change to argument
names being required in the 2018 edition for trait methods and a
suggestion for the fix.
2018-12-15 09:05:04 +00:00
ljedrz
3d052c920b format: inline one-liners related to parse_expr 2018-12-14 10:48:41 +01:00
Nicholas Nethercote
e80c7ddb05 Rename TokenStream::concat and remove TokenStream::concat_rc_vec.
`TokenStream::new` is a better name for the former, and the latter is
now just equivalent to `TokenStream::Stream`.
2018-12-12 20:36:00 +11:00
Nicholas Nethercote
1fe2c03240 Remove tokenstream::Delimited.
Because it's an extra type layer that doesn't really help; in a couple
of places it actively gets in the way, and overall removing it makes the
code nicer. It does, however, move `tokenstream::TokenTree` further away
from the `TokenTree` in `quote.rs`.

More importantly, this change reduces the size of `TokenStream` from 48
bytes to 40 bytes on x86-64, which is enough to slightly reduce
instruction counts on numerous benchmarks, the best by 1.5%.

Note that `open_tt` and `close_tt` have gone from being methods on
`Delimited` to associated methods of `TokenTree`.
2018-12-10 12:10:10 +11:00
Mazdak Farrokhzad
ac15b4f4bd
Rollup merge of #56248 - estebank:suggest-bare-pub, r=petrochenkov
Suggest an appropriate token when encountering `pub Ident<'a>`

Fix #55403. Follow up to #45997.
2018-12-08 08:43:43 +01:00
Alexander Regueiro
ee89c088b0 Various minor/cosmetic improvements to code 2018-12-07 23:53:34 +00:00
David Wood
7fcf31b181
Add suggestion for underscore binding fix.
This commit emits a suggestion for adding an underscore binding to
arguments in trait methods that previously did not have a argument name
specified.
2018-12-07 12:02:41 +01:00
David Wood
e4dc15a969
Add context for RFC 1685 change in 2018 edition.
This commit adds a note providing context for the change to argument
names being required in the 2018 edition for trait methods.
2018-12-07 11:56:56 +01:00
bors
4bb5d35659 Auto merge of #56392 - petrochenkov:regensym, r=oli-obk
Delay gensym creation for "underscore items" (`use foo as _`/`const _`) until name resolution

So they cannot be cloned by macros. See https://github.com/rust-lang/rust/pull/56303 for the discussion.

Mostly fix cross-crate use of underscore items by inverting the "gensyms are lost in metadata" bug as described in https://github.com/rust-lang/rust/pull/56303#issuecomment-442464695.
Fix unused import warnings for single-segment imports (first commit) and `use crate_name as _` imports (as specified in https://github.com/rust-lang/rust/pull/56303#issuecomment-442274118).
Prohibit accidentally implemented `static _: TYPE = EXPR;` (cc https://github.com/rust-lang/rust/pull/55983).
Add more tests for `use foo as _` imports.
2018-12-06 15:08:11 +00:00
Vadim Petrochenkov
d08f7dcdca Address review comments 2018-12-04 01:13:03 +03:00
Vadim Petrochenkov
08f8faedd0 syntax: Rename some keywords
`CrateRoot` -> `PathRoot`, `::` doesn't necessarily mean crate root now
`SelfValue` -> `SelfLower`, `SelfType` -> `SelfUpper`, both `self` and `Self` can be used in type and value namespaces now
2018-12-04 00:30:27 +03:00
kennytm
a498a6d198
Rollup merge of #56433 - yui-knk:update_comment_of_parse_visibility, r=petrochenkov
Add description about `crate` for parse_visibility's comment

This rule was introduced by https://github.com/rust-lang/rust/pull/45401.
2018-12-03 18:07:18 +08:00
kennytm
ca98bce303
Rollup merge of #56419 - mark-i-m:remove-try, r=Centril
Remove some uses of try!
2018-12-03 18:07:15 +08:00
Vadim Petrochenkov
2d4b633be3 Delay gensym creation for "underscore items" until name resolution
Prohibit `static _`
Fis unused import warnings for `use foo as _`
Add more tests for `use foo as _`
2018-12-02 15:42:30 +03:00