Aleksey Kladov
3e362a4800
make unwrap_or_abort non-generic again
2019-07-04 09:12:33 +03:00
Aleksey Kladov
3035a05a74
remove unused mk_sp_and_raw
2019-07-04 09:12:33 +03:00
Aleksey Kladov
8bea334a26
don't rely on spans when checking tokens for jointness
2019-07-04 09:12:24 +03:00
Aleksey Kladov
1c6eb19d2f
slightly comment lexer API
2019-07-04 09:08:45 +03:00
Aleksey Kladov
30fa99e5b8
move constructors to top
2019-07-04 09:08:45 +03:00
Aleksey Kladov
601bad86b2
cleanup lexer constructors
2019-07-04 09:08:45 +03:00
Aleksey Kladov
256df83f64
remove peek_span_src_raw from StringReader
2019-07-04 09:08:39 +03:00
Aleksey Kladov
e9dc95c86e
remove peek_token from StringReader
2019-07-04 09:01:37 +03:00
Aleksey Kladov
830ff4a592
remove StringReader::peek
...
The reader itself doesn't need ability to peek tokens, so it's better
if clients implement this functionality.
This hopefully becomes especially easy once we use iterator interface
for lexer, but this is not too easy at the moment, because of buffered
errors.
2019-07-04 09:01:37 +03:00
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
Mazdak Farrokhzad
bb7fbb99a2
Add separate 'async_closure' feature gate.
2019-07-03 23:59:36 +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
Mark Rousskov
da5c835c8b
Remove io::Result from syntax::print
...
Since we're now writing directly to the vector, there's no need to
thread results through the whole printing infrastructure
2019-06-29 09:10:17 -04: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