Commit Graph

3883 Commits

Author SHA1 Message Date
Mark Rousskov 63fdf1a527 Remove needless indent arguments
We're always indenting by INDENT_UNIT anyway
2019-07-10 07:13:22 -04:00
Mark Rousskov cab453250a Move pp::Printer helpers to direct impl 2019-07-10 07:13:20 -04:00
Mark Rousskov 7e3791469f Replace src: &mut dyn Read with String 2019-07-10 07:12:28 -04:00
Mark Rousskov 0f10d114e4 Remove duplicate attr_to_string
attribute_to_string exists.
2019-07-10 07:11:29 -04:00
Mark Rousskov 9b0ebfa4e9 Move literal_to_string to fmt::Display 2019-07-10 07:11:29 -04:00
Vadim Petrochenkov b6d522a101 syntax: Pre-intern names of all built-in macros
They always end up interned anyway
2019-07-07 13:04:07 +03:00
Mazdak Farrokhzad 952ee77871 Rollup merge of #62329 - matklad:no-peeking, r=petrochenkov
Remove support for 1-token lookahead from the lexer

`StringReader` maintained `peek_token` and `peek_span_src_raw` for look ahead.

`peek_token` was used only by rustdoc syntax coloring. After moving peeking logic into highlighter, I was able to remove `peek_token` from the lexer. I tried to use `iter::Peekable`, but that wasn't as pretty as I hoped, due to buffered fatal errors. So I went with hand-rolled peeking.

After that I've noticed that the only peeking behavior left was for raw tokens to test tt jointness. I've rewritten it in terms of trivia tokens, and not just spans.

After that it became possible to simplify the awkward constructor of the lexer, which could return `Err` if the first peeked token contained error.
2019-07-06 02:38:01 +02:00
Mazdak Farrokhzad 84527e4676 Rollup merge of #62292 - Centril:split-async-closures, r=cramertj
Move `async || ...` closures into `#![feature(async_closure)]`

The `async || expr` syntax is moved out from `#![feature(async_await)]` into its own gate `#![feature(async_closure)]`.

New tracking issue: https://github.com/rust-lang/rust/issues/62290

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

cc https://github.com/rust-lang/rust/issues/62149

r? @varkor
2019-07-05 13:53:06 +02:00
bors f119bf2761 Auto merge of #62099 - Mark-Simulacrum:syntax-print-clean-2, r=eddyb
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-07-05 06:55:48 +00:00
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