nx2k3
13a741afac
fix some comments
2023-02-26 16:24:08 +00:00
nx2k3
46ea12a499
fix #108495 , postfix decrement and prefix decrement has no warning
2023-02-26 16:17:23 +00:00
Nicholas Nethercote
7e855d5f31
Use ThinVec
in a few more AST types.
2023-02-21 11:51:56 +11:00
Nicholas Nethercote
549f1c60af
Use ThinVec
in ast::ExprKind::Match
.
2023-02-21 11:51:56 +11:00
Nicholas Nethercote
b14b7ba5dd
Use ThinVec
in ast::Block
.
2023-02-21 11:51:56 +11:00
Nicholas Nethercote
4143b101f9
Use ThinVec
in various AST types.
...
This commit changes the sequence parsers to produce `ThinVec`, which
triggers numerous conversions.
2023-02-21 11:51:56 +11:00
Nicholas Nethercote
dd7aff5cc5
Use ThinVec
in ast::Generics
and related types.
2023-02-21 11:51:55 +11:00
clubby789
521c5f36d6
Migrate rustc_parse
to derive diagnostics
2023-02-06 14:40:35 +00:00
Obei Sideg
7a75278836
Recover from missing expression in for loop
2023-02-05 17:33:10 +03:00
est31
394fa192a9
rustc_parse: remove huge error imports
2023-02-05 03:48:17 +01:00
Michael Goulet
e99e05d135
Rollup merge of #107551 - fee1-dead-contrib:rm_const_fnmut_helper, r=oli-obk
...
Replace `ConstFnMutClosure` with const closures
Also fixes a parser bug. cc `@oli-obk` for compiler changes
2023-02-03 14:15:22 -08:00
Dylan DPC
815dc9c480
Rollup merge of #107544 - nnethercote:improve-TokenCursor, r=petrochenkov
...
Improve `TokenCursor`.
Some small improvements, for things that were bugging me.
Best reviewed one commit at a time.
r? ``@petrochenkov``
2023-02-03 23:04:51 +05:30
Nicholas Nethercote
b5ecbbb998
Remove TokenCursorFrame
.
...
The motivation here is to eliminate the `Option<(Delimiter,
DelimSpan)>`, which is `None` for the outermost token stream and `Some`
for all other token streams.
We are already treating the innermost frame specially -- this is the
`frame` vs `stack` distinction in `TokenCursor`. We can push that
further so that `frame` only contains the cursor, and `stack` elements
contain the delimiters for their children. When we are in the outermost
token stream `stack` is empty, so there are no stored delimiters, which
is what we want because the outermost token stream *has* no delimiters.
This change also shrinks `TokenCursor`, which shrinks `Parser` and
`LazyAttrTokenStreamImpl`, which is nice.
2023-02-03 10:06:52 +11:00
clubby789
4ab75de934
Improve diagnostic for missing space in range pattern
2023-02-02 13:18:12 +00:00
Xiretza
0d0d369915
Make "use latest edition" subdiagnostic translatable
2023-02-01 21:56:28 +01:00
Xiretza
9564a30c19
Convert rustc_parse::parser::pat::Expected to enum
...
This is required in order to support translatable diagnostics.
2023-02-01 21:50:34 +01:00
Xiretza
87ef37dbd7
rustc_parse: migrate more to diagnostic structs
2023-02-01 21:50:34 +01:00
Xiretza
fc0ba2c8b6
Use AddToDiagnostic for "use latest edition" help
2023-02-01 21:49:45 +01:00
Deadbeef
679dde7338
fix parser mistaking const closures for const item
2023-02-01 06:44:30 +00:00
Matthias Krüger
6390d25eab
Rollup merge of #107487 - edward-shen:edward-shen/107213-round-2, r=estebank
...
Make the "extra if in let...else block" hint a suggestion
Changes the hint to a suggestion, suggested in #107213 .
r? ```@estebank```
2023-02-01 05:54:39 +01:00
bors
487e83b711
Auto merge of #105650 - cassaundra:float-literal-suggestion, r=pnkfelix
...
Fix invalid float literal suggestions when recovering an integer
Only suggest adding a zero to integers with a preceding dot when the change will result in a valid floating point literal.
For example, `.0x0` should not be turned into `0.0x0`.
r? nnethercote
2023-01-31 00:03:08 +00:00
Edward Shen
e905b93706
Make the "extra if in let...else block" hint a suggestion
2023-01-30 14:09:40 -08:00
Cassaundra Smith
80fcd7c40e
Fix invalid float literal suggestions when recovering an integer
...
Only suggest adding a zero to integers with a preceding dot when the change will
result in a valid floating point literal.
For example, `.0x0` should not be turned into `0.0x0`.
2023-01-30 13:39:25 -08:00
clubby789
4bfab39f9b
Check for missing space between fat arrow and range pattern
2023-01-28 20:52:01 +00:00
Edward Shen
a8b77cfe54
Add suggestion to remove if in let...else block
...
Adds an additional hint to failures where we encounter an else keyword
while we're parsing an if-let block.
This is likely that the user has accidentally mixed if-let and let...else
together.
2023-01-23 20:33:04 -08:00
Matthias Krüger
df88f7e02c
Rollup merge of #106783 - WaffleLapkin:break-my-ident, r=wesleywiser
...
Recover labels written as identifiers
This adds recovery for `break label expr` and `continue label`, as well as a test for `break label`.
2023-01-20 07:16:08 +01:00
Matthias Krüger
9db8e6d5e9
Rollup merge of #106849 - WaffleLapkin:unvec, r=Nilstrieb
...
Allocate one less vec while parsing arrays
Probably does not matter, but imo a little bit nicer.
2023-01-14 18:45:28 +01:00
Maybe Waffle
ea13023b36
Allocate one less vec in parser/expr.rs
2023-01-14 11:44:25 +00:00
Maybe Waffle
f7850c5368
Improve comments in parser/expr.rs
2023-01-14 11:29:22 +00:00
Maybe Waffle
ecb1ad11d9
Make LhsExpr::AlreadyParsed
a named struct
2023-01-14 11:28:14 +00:00
Maybe Waffle
57d822a904
Recover labels written as identifiers
2023-01-13 09:18:36 +00:00
Maybe Waffle
741c65344b
Remove an unwrap()
from parser that can be written as if-let-chain
2023-01-12 11:28:47 +00:00
Deadbeef
4fb10c0ce4
parse const closures
2023-01-12 02:28:37 +00:00
Esteban Küber
5311938531
Detect struct literal needing parentheses
...
Fix #82051 .
2023-01-11 16:53:21 +00:00
Esteban Küber
0edca66a90
Tiny formatting fix
2023-01-06 05:34:56 +00:00
Esteban Küber
38fd5a9acf
Account for ADT bodies and struct expressions
2022-12-28 18:30:18 -08:00
bors
300aa907a6
Auto merge of #105701 - RedDocMD:bug-105634, r=cjgillot
...
Allow .. to be parsed as let initializer
.. and ..= are valid expressions, however when used in a let statement
it is not parsed.
Fixes #105634
2022-12-25 14:42:49 +00:00
Deep Majumder
4af9e6a1c2
Little fixes
2022-12-16 18:41:08 +05:30
Deep Majumder
c4d0c91161
Allow .. to be parsed as let initializer
...
.. and ..= are valid expressions, however when used in a let statement
it is not parsed.
2022-12-14 19:12:30 +05:30
bors
309c469eec
Auto merge of #104875 - chenyukang:yukang/fix-104867-inc, r=estebank
...
Properly handle postfix inc/dec in standalone and subexpr scenarios
Fixes #104867
r? `@estebank`
2022-12-14 04:00:05 +00:00
bors
2cd2070af7
Auto merge of #105160 - nnethercote:rm-Lit-token_lit, r=petrochenkov
...
Remove `token::Lit` from `ast::MetaItemLit`.
Currently `ast::MetaItemLit` represents the literal kind twice. This PR removes that redundancy. Best reviewed one commit at a time.
r? `@petrochenkov`
2022-12-12 05:16:50 +00:00
Matthias Krüger
66a4cb5368
Rollup merge of #105223 - lukas-code:(ExprWithBlock), r=petrochenkov
...
suggest parenthesis around ExprWithBlock BinOp ExprWithBlock
fix https://github.com/rust-lang/rust/issues/105179
fix https://github.com/rust-lang/rust/issues/102171
2022-12-05 20:43:44 +01:00
Nicholas Nethercote
d887615b4c
Parameterise Parser::{recover_unclosed_char,handle_missing_lit}
.
...
These two methods both produce a `MetaItemLit`, and then some of the
call sites convert the `MetaItemLit` to a `token::Lit` with
`as_token_lit`.
This commit parameterises these two methods with a `mk_lit_char`
closure, which can be used to produce either `MetaItemLit` or
`token::Lit` directly as necessary.
2022-12-05 15:04:33 +11:00
Lukas Markeffsky
c808d0b289
more comments
2022-12-03 23:54:06 +01:00
Lukas Markeffsky
35c00a9731
suggest parenthesis around ExprWithBlock BinOp ExprWithBlock
2022-12-03 20:02:39 +01:00
Matthias Krüger
c89bff29e5
Rollup merge of #104199 - SarthakSingh31:issue-97417-1, r=cjgillot
...
Keep track of the start of the argument block of a closure
This removes a call to `tcx.sess.source_map()` from [compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs](https://github.com/rust-lang/rust/compare/master...SarthakSingh31:issue-97417-1?expand=1#diff-8406bbc0d0b43d84c91b1933305df896ecdba0d1f9269e6744f13d87a2ab268a ) as required by #97417 .
VsCode automatically applied `rustfmt` to the files I edited under `src/tools`. I can undo that if its a problem.
r? `@cjgillot`
2022-12-03 17:37:41 +01:00
Nicholas Nethercote
2fd364acff
Remove token::Lit
from ast::MetaItemLit
.
...
`token::Lit` contains a `kind` field that indicates what kind of literal
it is. `ast::MetaItemLit` currently wraps a `token::Lit` but also has
its own `kind` field. This means that `ast::MetaItemLit` encodes the
literal kind in two different ways.
This commit changes `ast::MetaItemLit` so it no longer wraps
`token::Lit`. It now contains the `symbol` and `suffix` fields from
`token::Lit`, but not the `kind` field, eliminating the redundancy.
2022-12-02 13:49:19 +11:00
Sarthak Singh
8f705e2425
Keep track of the start of the argument block of a closure
2022-11-28 14:09:00 +05:30
Nicholas Nethercote
e4a9150872
Rename ast::Lit
as ast::MetaItemLit
.
2022-11-28 15:18:49 +11:00
yukang
dee85a391f
add start_stmt to handle postfix increment
2022-11-26 05:34:12 +08:00