Commit graph

9401 commits

Author SHA1 Message Date
Mazdak Farrokhzad
c824839471
Rollup merge of #63475 - iluuu1994:issue-62632, r=Centril
Bring back suggestion for splitting `<-` into `< -`

Closes #62632
2019-08-14 04:18:42 +02:00
Mazdak Farrokhzad
76bd7d62d6
Rollup merge of #63459 - eddyb:issue-63430, r=petrochenkov
syntax: account for CVarArgs being in the argument list.

Fixes #63430 by testing for `1` argument (the `CVarArgs` itself) instead of `0`.

Note that the error has basically been impossible to trigger since the change that caused #63430, so perhaps we need an audit of untested errors.

Also, this check probably belongs in AST validation/HIR lowering, but I'd rather fix it in place for now.

r? @petrochenkov cc @dlrobertson
2019-08-14 04:18:40 +02:00
Caio
9348af8396 Add NodeId for Arm, Field and FieldPat 2019-08-13 22:42:10 -03:00
Vadim Petrochenkov
d416ebeb6e expand: Unimplement MutVisitor on MacroExpander
Each call to `fully_expand_fragment` is something unique, interesting, and requiring attention.
It represents a "root" of expansion and its use means that something unusual is happening, like eager expansion or expansion performed outside of the primary expansion pass.
So, it shouldn't be hide under a generic visitor call.

Also, from all the implemented visitor methods only two were actually used.
2019-08-14 02:35:01 +03:00
Vadim Petrochenkov
0d29142aad expand: expand_fragment -> fully_expand_fragment 2019-08-14 01:59:14 +03:00
Eric Huss
643ddfaaa8
Apply Centril's suggestion
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-08-13 15:09:11 -07:00
Esteban Küber
84e202e6b3 review comments 2019-08-13 11:35:49 -07:00
Eric Huss
ea1a9a0e2b Fix typo in error message. 2019-08-13 11:21:09 -07:00
Vadim Petrochenkov
376636e517 syntax: Remove DummyResult::expn_only 2019-08-13 20:53:49 +03:00
Esteban Küber
d824edfc2c Do not ICE when synthesizing spans falling inside unicode chars 2019-08-12 23:31:13 -07:00
nathanwhit
71415ef9bd Parse excess semicolons as empty stmts for linting 2019-08-12 10:14:07 -04:00
Eduard-Mihai Burtescu
34dcca20e5 syntax: account for CVarArgs being in the argument list. 2019-08-12 15:28:10 +03:00
Mazdak Farrokhzad
c8fc4c106c extract parse_pat_{tuple_}struct + recover_one_fewer_dotdot 2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
ddf734deb2 extract fatal_unexpected_non_pat 2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
37f37a5df1 parser/pat: minor misc cleanup 2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
49740b792d extract parse_pat_range_starting_with_lit 2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
e6f980f9b8 extract parse_pat_range_starting_with_path 2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
e32bd69d0f extract parse_pat_mac_invoc 2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
231da7e044 extract ban_pat_range_if_ambiguous 2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
3b651330e0 extract recover_pat_ident_mut_first 2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
33f53d699c
Rollup merge of #63449 - petrochenkov:builtinagain, r=eddyb
resolve: Remove remaining special cases from built-in macros

Edition and definition sites of the macros are now also taken from the `#[rustc_builtin_macro]` definitions in `libcore`.

---
The edition switch may be a breaking change for `Rustc{Encodable,Decodable}` derives if they are used in combination with the unstable crate `serialize` from sysroot like this
```rust
extern crate serialize;
use serialize as rustc_serialize;

#[derive(RustcEncodable)]
struct S;
```
(see the updated `ui-fulldeps` tests).
2019-08-12 10:58:18 +02:00
Ilija Tovilo
91af5c2daf
Bring back suggestion for splitting <- into < -
Closes #62632
2019-08-12 10:46:34 +02:00
Mazdak Farrokhzad
c69b3ede8a extract parse_pat_tuple_or_parens 2019-08-12 09:28:49 +02:00
Mazdak Farrokhzad
90793c0f12 extract parse_pat_deref 2019-08-12 09:28:49 +02:00
Mazdak Farrokhzad
a4af9d1ac2 parse_pat_with_range_pat: remove unnecessary assignments. 2019-08-12 09:28:49 +02:00
Mazdak Farrokhzad
bcfcbfc923 parser: {check,expect}_lifetime into ty.rs 2019-08-11 20:46:34 +02:00
Mazdak Farrokhzad
385d07f359 parser: move into generics.rs 2019-08-11 20:44:09 +02:00
Mazdak Farrokhzad
d6d93b3d82 parser: move into stmt.rs 2019-08-11 20:32:29 +02:00
Mazdak Farrokhzad
28db7c5968 parser: move parse_fn_block_decl into expr.rs 2019-08-11 20:04:09 +02:00
Mazdak Farrokhzad
848ec4aa3c parser: move parse_ident_or_underscore into item.rs 2019-08-11 20:00:38 +02:00
Mazdak Farrokhzad
3dbfbafe3e parser: split into {ty, path}.rs 2019-08-11 19:59:27 +02:00
Mazdak Farrokhzad
e81347c368 parser: split into {item,module}.rs 2019-08-11 18:34:42 +02:00
Mazdak Farrokhzad
e742de2569 parser: split into pat.rs 2019-08-11 15:24:37 +02:00
Mazdak Farrokhzad
81e6b5094e parser: split into expr.rs 2019-08-11 13:14:30 +02:00
Vadim Petrochenkov
fa7fe19601 resolve: Remove remaining special cases from built-in macros 2019-08-10 21:50:56 +03:00
Mazdak Farrokhzad
9e613c74be
Rollup merge of #63399 - estebank:vec-in-pat, r=Centril
More explicit diagnostic when using a `vec![]` in a pattern

```
error: unexpected `(` after qualified path
  --> $DIR/vec-macro-in-pattern.rs:3:14
   |
LL |         Some(vec![x]) => (),
   |              ^^^^^^^
   |              |
   |              unexpected `(` after qualified path
   |              in this macro invocation
   |              use a slice pattern here instead
   |
   = help: for more information, see https://doc.rust-lang.org/edition-guide/rust-2018/slice-patterns.html
   = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
```

Fix #61933.
2019-08-10 08:13:22 +02:00
Esteban Küber
75c5ad2e82 review comments: use structured suggestion 2019-08-09 09:40:26 -07:00
Esteban Küber
7c96d90c20 More explicit diagnostic when using a vec![] in a pattern
```
error: unexpected `(` after qualified path
  --> $DIR/vec-macro-in-pattern.rs:3:14
   |
LL |         Some(vec![x]) => (),
   |              ^^^^^^^
   |              |
   |              unexpected `(` after qualified path
   |              in this macro invocation
   |              use a slice pattern here instead
   |
   = help: for more information, see https://doc.rust-lang.org/edition-guide/rust-2018/slice-patterns.html
   = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
```
2019-08-09 08:20:13 -07:00
Esteban Küber
b7f7756566 Recover parser from foo(_, _) 2019-08-09 07:18:05 -07:00
Aleksey Kladov
06701a8daf reduce visibility 2019-08-08 16:58:06 +02:00
Mazdak Farrokhzad
2301ecd429
Rollup merge of #63285 - Mark-Simulacrum:rm-await-origin, r=Centril
Remove leftover AwaitOrigin

This was missed in PR #62293.
2019-08-06 08:17:44 +02:00
Mazdak Farrokhzad
b2603d6386
Rollup merge of #63272 - Mark-Simulacrum:clean-attr, r=petrochenkov
Some more libsyntax::attr cleanup

Much smaller patch than the last one, mostly just finishing up by removing some Span arguments.

r? @petrochenkov
2019-08-06 08:17:42 +02:00
Mark Rousskov
fbf93d4931 Remove leftover AwaitOrigin
This was missed in PR #62293.
2019-08-05 09:14:51 -04:00
Mark Rousskov
8849149745 Make mk_attr_id private to libsyntax 2019-08-05 08:48:22 -04:00
Mark Rousskov
24a491f40c Drop explicit span argument from mk_name_value_item 2019-08-05 08:48:22 -04:00
Mark Rousskov
ab3fb1e775 Drop span argument from mk_list_item 2019-08-05 08:45:00 -04:00
Aleksey Kladov
58ac81a60f add unknown token 2019-08-05 13:15:11 +03:00
Aleksey Kladov
b5e35b128e remove special code path for unknown tokens 2019-08-05 13:15:11 +03:00
bors
e1d7e4ae82 Auto merge of #63248 - petrochenkov:nomarker, r=matthewjasper
Move special treatment of `derive(Copy, PartialEq, Eq)` from expansion infrastructure to elsewhere

As described in https://github.com/rust-lang/rust/pull/62086#issuecomment-515195477.

Reminder:
- `derive(PartialEq, Eq)` makes the type it applied to a "structural match" type, so constants of this type can be used in patterns (and const generics in the future).
- `derive(Copy)` notifies other derives that the type it applied to implements `Copy`, so `derive(Clone)` can generate optimized code and other derives can generate code working with `packed` types and types with `rustc_layout_scalar_valid_range` attributes.

First, the special behavior is now enabled after properly resolving the derives, rather than after textually comparing them with `"Copy"`, `"PartialEq"` and `"Eq"` in `fn add_derived_markers`.

The markers are no longer kept as attributes in AST since derives cannot modify items and previously did it through hacks in the expansion infra.
Instead, the markers are now kept in a "global context" available from all the necessary places, namely - resolver.

For `derive(PartialEq, Eq)` the markers are created by the derive macros themselves and then consumed during HIR lowering to add the `#[structural_match]` attribute in HIR.
This is still a hack, but now it's a hack local to two specific macros rather than affecting the whole expansion infra.
Ideally we should find the way to put `#[structural_match]` on the impls rather than on the original item, and then consume it in `rustc_mir`, then no hacks in expansion and lowering will be required.
(I'll make an issue about this for someone else to solve, after this PR lands.)

The marker for `derive(Copy)` cannot be emitted by the `Copy` macro itself because we need to know it *before* the `Copy` macro is expanded for expanding other macros.
So we have to do it in resolve and block expansion of any derives in a `derive(...)` container until we know for sure whether this container has `Copy` in it or not.
Nasty stuff.

r? @eddyb or @matthewjasper
2019-08-05 04:36:51 +00:00
bors
d3f8a0b5df Auto merge of #63213 - varkor:itemkind-tyalias, r=Centril
Rename `ItemKind::Ty` to `ItemKind::TyAlias`

The current name is not entirely clear without context and `TyAlias` is consistent with `ItemKind::TraitAlias`.
2019-08-04 20:03:28 +00:00