Mazdak Farrokhzad
c0ec567214
Rollup merge of #62297 - matklad:peek-delimited, r=petrochenkov
...
refactor check_for_substitution
No behavior change, just flatter and simpler code.
r? @petrochenkov
2019-07-04 01:38:55 +02:00
Mazdak Farrokhzad
8867ba19de
Rollup merge of #62258 - petrochenkov:idclean, r=Centril
...
syntax: Unsupport `foo! bar { ... }` macros in the parser
Their support in expansion was removed in https://github.com/rust-lang/rust/pull/61606 .
Also un-reserve `macro_rules` as a macro name, there's no ambiguity between `macro_rules` definitions and macro calls (it also wasn't reserved correctly).
cc https://github.com/rust-lang-nursery/wg-grammar/issues/51
2019-07-04 01:38:49 +02:00
Aleksey Kladov
dc088b26ce
refactor check_for_substitution
...
No behavior change, just flatter and simpler code
2019-07-02 11:16:33 +03:00
Chris Gregory
636f5e6d11
Convert more usages over
2019-07-01 20:21:12 -07:00
Vadim Petrochenkov
d0dc41a2bd
Address review comments
2019-07-01 12:20:54 +03:00
Vadim Petrochenkov
3f39dc1b90
syntax: Unsupport foo! bar { ... } macros in the parser
...
Unreserve `macro_rules` as a macro name
2019-07-01 12:20:54 +03:00
Mazdak Farrokhzad
ce1d95af4c
Always parse 'async unsafe fn' + properly ban in 2015.
2019-06-29 21:38:26 +02:00
Mazdak Farrokhzad
0fe028eae0
Rollup merge of #62154 - mark-i-m:old-fixme, r=Centril
...
Remove old fixme
fixed in https://github.com/rust-lang/rust/pull/60160
r? @Centril
2019-06-27 23:01:11 +02:00
Mazdak Farrokhzad
4aa3e27231
Rollup merge of #62131 - Xanewok:clip-some-nits, r=petrochenkov
...
libsyntax: Fix some Clippy warnings
When I was working on it before a lot of these popped up in the RLS so I figured I'll send a small patch fixing only the (hopefully) uncontroversial ones.
Others that could be also fixed included also [`clippy::print_with_newline`](https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline ) and [`clippy::cast_lossless`](https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless ). Should I add them as well?
since most of it touches libsyntax...
r? @petrochenkov
2019-06-27 23:01:09 +02:00
Mazdak Farrokhzad
bc335d6c16
Rollup merge of #62124 - matklad:without-with, r=petrochenkov
...
refactor lexer to use idiomatic borrowing
2019-06-27 23:01:07 +02:00
Mark Mansi
182ce772ef
remove old fixme
2019-06-26 11:21:59 -05:00
Igor Matuszewski
12806b7050
Fix clippy::redundant_field_names
2019-06-26 13:59:58 +02:00
Aleksey Kladov
57db25e614
cleanup: rename name_from to symbol_from
...
Lexer uses Symbols for a lot of stuff, not only for identifiers, so
the "name" terminology is just confusing.
2019-06-25 22:30:21 +03:00
Aleksey Kladov
b75021b31e
refactor lexer to use idiomatic borrowing
2019-06-25 21:02:19 +03:00
bors
303f77ee1d
Auto merge of #60732 - jswrenn:arbitrary_enum_discriminant, r=pnkfelix
...
Implement arbitrary_enum_discriminant
Implements RFC rust-lang/rfcs#2363 (tracking issue #60553 ).
2019-06-25 15:12:11 +00:00
bors
3cc3486733
Auto merge of #62075 - Centril:guardless-match-arms, r=petrochenkov
...
Remove `ast::Guard`
With the introduction of `ast::ExprKind::Let` in https://github.com/rust-lang/rust/pull/60861 , the `ast::Guard` structure is now redundant in terms of representing [`if let` guards](https://github.com/rust-lang/rust/issues/51114 ) in AST since it can be represented by `ExprKind::Let` syntactically. Therefore, we remove `ast::Guard` here.
However, we keep `hir::Guard` because the semantic representation is a different matter and this story is more unclear right now (might involve `goto 'arm` in HIR or something...).
r? @petrochenkov
2019-06-24 05:00:10 +00:00
Mazdak Farrokhzad
4d53714183
Remove redundant syntax::ast::Guard.
2019-06-23 11:32:16 +02:00
Mazdak Farrokhzad
851066f57e
let_chains: Fix bugs in pretty printing.
2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
7465eb44f0
let_chains: Refactor parse_{if,while}_expr a bit.
2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
eb4f54a58d
let_chains: Move feature gating to pre-expansion.
2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
d551880267
let_chains: Inline visit_expr_with_let_maybe_allowed.
2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
92587e41d9
let_chains: readd kw::let to ident_can_begin_expr.
2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
3b7f0cb7e0
let_chains: Fix outdated doc-comment re. 'parse_if_expr'.
2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
86250a666e
let_chains: Comment out Let in ident_can_begin_expr.
2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
dff1e379fc
let_chains: Add support for parsing let expressions.
2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
f0ab633e4d
let_chains: Remove ast::ExprKind::{IfLet, WhileLet} from visitors and introduce ::Let.
2019-06-23 01:29:29 +02:00
John Wrenn
ac98342e84
Implement arbitrary_enum_discriminant
2019-06-21 11:00:10 -04:00
Igor Matuszewski
047421e69e
Add unit tests for unescaping raw (byte) strings
2019-06-20 09:51:15 +02:00
Matthew Jasper
63edd2c358
Remove the HirId/NodeId from where clauses
...
Also give them a span in the HIR
2019-06-18 22:54:51 +01:00
bors
55cee44671
Auto merge of #61612 - nnethercote:improve-parse_bottom_expr, r=petrochenkov
...
Special-case literals in `parse_bottom_expr`.
This makes parsing faster, particularly for code with large constants,
for two reasons:
- it skips all the keyword comparisons for literals;
- it skips the allocation done by the `mk_expr` call in
`parse_literal_maybe_minus`.
r? @petrochenkov
2019-06-12 16:30:05 +00:00
bors
3f511ade5b
Auto merge of #60669 - c410-f3r:attrs-fn, r=petrochenkov
...
Allow attributes in formal function parameters
Implements https://github.com/rust-lang/rust/issues/60406 .
This is my first contribution to the compiler and since this is a large and complex project, I am not fully aware of the consequences of the changes I have made.
**TODO**
- [x] Forbid some built-in attributes.
- [x] Expand cfg/cfg_attr
2019-06-12 07:38:01 +00:00
Mazdak Farrokhzad
9f22708ced
Rollup merge of #61654 - Electron-libre:use_slice_patterns_in_rustc, r=oli-obk,Centril
...
use pattern matching for slices destructuring
refs #61542
Use slices pattern where it seems to make sense .
2019-06-12 04:22:50 +02:00
bors
5e2c11034f
Auto merge of #60793 - Xanewok:raw-string-cleanup, r=petrochenkov
...
lexer: Disallow bare CR in raw byte strings
Handles bare CR ~but doesn't translate `\r\n` to `\n` yet in raw strings yet~ and translates CRLF to LF in raw strings.
As a side-note I think it'd be good to change the `unescape_` to return plain iterators to reduce some boilerplate (e.g. `has_error` could benefit from collecting `Result<T>` and aborting early on errors) but will do that separately, unless I missed something here that prevents it.
@matklad @petrochenkov thoughts?
2019-06-10 23:32:12 +00:00
Igor Matuszewski
630d5f355f
Don't suggest using \r in raw strings
2019-06-10 17:32:15 +02:00
Nicholas Nethercote
35b5f43770
Special-case literals in parse_bottom_expr.
...
This makes parsing faster, particularly for code with large constants,
for two reasons:
- it skips all the keyword comparisons for literals;
- it replaces the unnecessary `parse_literal_maybe_minus` call with
`parse_lit`, avoiding an unnecessary allocation via `mk_expr`.
2019-06-10 10:04:25 +10:00
Igor Matuszewski
63dc7da703
Use char byte calculation using existing iterator
2019-06-09 15:44:57 +02:00
Igor Matuszewski
735ac057bb
Actually translate CRLF in raw byte strings and unify unescape impl
2019-06-09 15:14:55 +02:00
Igor Matuszewski
3c1d352dc4
Add a doc comment for scan_raw_string
2019-06-09 14:20:29 +02:00
Caio
1eaaf440d5
Allow attributes in formal function parameters
2019-06-09 07:58:40 -03:00
Igor Matuszewski
d4632744fa
Translate CRLF -> LF in raw (byte) strings
2019-06-09 00:33:21 +02:00
Igor Matuszewski
49d62e8d5a
Prohibit bare CRs in raw byte strings
2019-06-08 22:58:53 +02:00
Igor Matuszewski
cab7e7fe76
Validate and transcribe raw strings via unescape module
2019-06-08 22:58:53 +02:00
Vadim Petrochenkov
9aaa7c770c
syntax: Move some Token methods around
2019-06-08 22:38:39 +03:00
Vadim Petrochenkov
25b05147b3
syntax: Remove Deref impl from Token
2019-06-08 22:38:23 +03:00
Vadim Petrochenkov
0ca3c2f881
syntax: Move most of the TokenKind methods to Token
2019-06-08 22:38:12 +03:00
Cedric
0a4504d400
fix libsyntax test
2019-06-08 20:43:24 +02:00
Igor Matuszewski
08ede49dcb
Remove redundant, commented out code
...
It was commented out as part of
https://github.com/rust-lang/rust/commit/8a8e497ae786ffc032c1e68fc23da0edcf6fa5e3 .
Done probably by accident, since the code in question was moved to a
match arm, along with newly introduced logic to detect bare CRs in raw
strings.
2019-06-08 20:05:02 +02:00
Igor Matuszewski
b8e3533b73
Separate a scan_raw_string (similar raw_byte variant)
2019-06-08 20:05:02 +02:00
Igor Matuszewski
5b17a5e30a
Clean up minor bits
2019-06-08 20:05:02 +02:00
Cedric
4c242a948c
cast vec to slices
2019-06-08 16:21:15 +02:00