Commit graph

9898 commits

Author SHA1 Message Date
Matthias Krüger
7be94a8a95 don't use .into() to convert types into identical types.
example:
    let s: String = format!("hello").into();
2020-02-27 23:32:46 +01:00
Vadim Petrochenkov
d134385823 syntax: Remove Nt(Impl,Trait,Foreign)Item 2020-02-24 20:25:32 +03:00
Mazdak Farrokhzad
62930d3151 parse/ast: move Defaultness into variants. 2020-02-24 00:59:38 +01:00
Mazdak Farrokhzad
b01c1e2092 parser: tweak item kind wording 2020-02-24 00:59:38 +01:00
Mazdak Farrokhzad
7017058e6b ast: add Defaultness to Item, making AssocItem an alias. 2020-02-24 00:59:38 +01:00
Mazdak Farrokhzad
fa2a792491 add Span to ast::Defaultness::Default. 2020-02-24 00:59:38 +01:00
Dylan DPC
d6414f5f8c
Rollup merge of #69376 - petrochenkov:bumpwith, r=Centril
parser: Cleanup `Parser::bump_with` and its uses

Follow-up to https://github.com/rust-lang/rust/pull/69006.
r? @Centril
2020-02-23 09:57:45 +01:00
Dylan DPC
bdd275de2a
Rollup merge of #69375 - Menschenkindlein:master, r=Dylan-DPC
Rename CodeMap to SourceMap follow up

See https://github.com/rust-lang/rust/issues/51574
2020-02-23 09:57:44 +01:00
Vadim Petrochenkov
4356d18e4a parser: Cleanup Parser::bump_with and its uses 2020-02-22 17:28:10 +03:00
Maxim Zholobak
20c9a40fec Rename CodeMap to SourceMap follow up 2020-02-22 16:17:31 +02:00
Mazdak Farrokhzad
9f3dfd29a2 parse: allow type Foo: Ord syntactically. 2020-02-22 00:19:27 +01:00
Mazdak Farrokhzad
b864d23f34
Rollup merge of #69194 - Centril:assoc-extern-fuse, r=petrochenkov
parse: fuse associated and extern items up to defaultness

Language changes:

- The grammar of extern `type` aliases is unified with associated ones, and becomes:
  ```rust
  TypeItem = "type" ident generics {":" bounds}? where_clause {"=" type}? ";" ;
  ```

  Semantic restrictions (`ast_validation`) are added to forbid any parameters in `generics`, any bounds in `bounds`, and any predicates in `where_clause`, as well as the presence of a type expression (`= u8`).

  (Work still remains to fuse this with free `type` aliases, but this can be done later.)

- The grammar of constants and static items (free, associated, and extern) now permits the absence of an expression, and becomes:

  ```rust
  GlobalItem = {"const" {ident | "_"} | "static" "mut"? ident} {"=" expr}? ";" ;
  ```

  - A semantic restriction is added to enforce the presence of the expression (the body).
  - A semantic restriction is added to reject `const _` in associated contexts.

Together, these changes allow us to fuse the grammar of associated items and extern items up to `default`ness which is the main goal of the PR.

-----------------------

We are now very close to fully fusing the entirely of item parsing and their ASTs. To progress further, we must make a decision: should we parse e.g. `default use foo::bar;` and whatnot? Accepting that is likely easiest from a parsing perspective, as it does not require using look-ahead, but it is perhaps not too onerous to only accept it for `fn`s (and all their various qualifiers), `const`s, `static`s, and `type`s.

r? @petrochenkov
2020-02-18 22:16:26 +01:00
Mazdak Farrokhzad
045b7d53a3 ast: add a FIXME 2020-02-17 11:16:28 +01:00
Yuki Okushi
eb12ed889d Rename FunctionRetTy to FnRetTy 2020-02-17 11:24:29 +09:00
Mazdak Farrokhzad
f12ae4ac60 ast: tweak AssocItemKind::Macro comment 2020-02-15 22:36:03 +01:00
Aaron Hill
516459870c
Add additional comment 2020-02-15 15:51:40 -05:00
Aaron Hill
51a16e574a
Record proc macro harness order for use during metadata deserialization
Fixes #68690

When we generate the proc macro harness, we now explicitly recorder the
order in which we generate entries. We then use this ordering data to
deserialize the correct proc-macro-data from the crate metadata.
2020-02-15 15:48:36 -05:00
Mazdak Farrokhzad
5abedd81e0 visit: unify extern & assoc item visiting 2020-02-15 20:57:12 +01:00
Mazdak Farrokhzad
91110fda27 ast: make ForeignItemKind an alias of AssocItemKind 2020-02-15 20:57:12 +01:00
Mazdak Farrokhzad
35884fe168 parse extern consts 2020-02-15 20:57:12 +01:00
Mazdak Farrokhzad
f8d2264463 parse associated statics. 2020-02-15 20:57:12 +01:00
Mazdak Farrokhzad
1c2906ead3 ast/parser: fuse static & const grammars in all contexts. 2020-02-15 20:57:12 +01:00
Mazdak Farrokhzad
f3e9763543 ast: make = <expr>; optional in free statics/consts. 2020-02-15 20:57:12 +01:00
Mazdak Farrokhzad
95dc9b9a73 ast: normalize ForeignItemKind::Ty & AssocItemKind::TyAlias. 2020-02-15 18:00:01 +01:00
Mazdak Farrokhzad
e2ae717265 ast: tweak comments of Foreign/AssocItemKind 2020-02-15 18:00:01 +01:00
Mazdak Farrokhzad
f06df1629e ast: colocate AssocItem with ForeignItem 2020-02-15 18:00:01 +01:00
Mazdak Farrokhzad
2fd15442f2 ast: move Generics into AssocItemKinds 2020-02-15 18:00:01 +01:00
Mazdak Farrokhzad
a833be2162 parser: fuse free fn parsing together. 2020-02-13 10:39:24 +01:00
Mazdak Farrokhzad
c30f068dc8 IsAsync -> enum Async { Yes { span: Span, .. }, No }
use new span for better diagnostics.
2020-02-13 10:39:24 +01:00
Mazdak Farrokhzad
e839b2ec84 Constness -> enum Const { Yes(Span), No }
Same idea for `Unsafety` & use new span for better diagnostics.
2020-02-13 10:39:23 +01:00
Mazdak Farrokhzad
b2c6eeb713 parser: merge fn grammars wrt. bodies & headers
also refactor `FnKind` and `visit_assoc_item` visitors
2020-02-05 01:27:09 +01:00
bors
126ad2b813 Auto merge of #68708 - Mark-Simulacrum:stage0-step, r=pietroalbini
Step stage0 to bootstrap from 1.42

This also includes a commit which fixes the rustfmt downloading logic to redownload when the rustfmt channel changes, and bumps rustfmt to a more recent version.
2020-02-04 14:16:18 +00:00
Mazdak Farrokhzad
eadff06823 syntax: reexport attr globals 2020-02-01 18:59:49 +01:00
Mazdak Farrokhzad
e233331a51 syntax::print -> new crate rustc_ast_pretty 2020-02-01 18:59:49 +01:00
Mazdak Farrokhzad
98fd6a5c88 1. move allow_internal_unstable to rustc_attr
2. as a result, drop rustc_errors dep from syntax
2020-02-01 18:58:08 +01:00
Mazdak Farrokhzad
097d5e1c5e 1. move node_id to syntax
2. invert rustc_session & syntax deps
3. drop rustc_session dep in rustc_hir
2020-02-01 18:58:08 +01:00
Mazdak Farrokhzad
93a8283614 Move builtin attribute logic to new rustc_attr crate.
For now, this is all the crate contains, but more
attribute logic & types will be moved there over time.
2020-02-01 18:54:56 +01:00
Mazdak Farrokhzad
9be73dc63a syntax: simplify HasAttrs code 2020-02-01 18:54:55 +01:00
Mazdak Farrokhzad
64d0143c2c pretty: remove ParseSess dependency 2020-02-01 18:54:55 +01:00
Mazdak Farrokhzad
e03d1064f0 syntax: move GLOBALS to attr module 2020-02-01 18:54:55 +01:00
Mazdak Farrokhzad
50f0e2e9e6 {syntax -> rustc_ast_passes}::node_count 2020-02-01 18:54:55 +01:00
Mark Rousskov
31dcdc9e13 Drop cfg(bootstrap) code 2020-01-31 12:31:09 -05:00
bors
b1cb3c0909 Auto merge of #67340 - nnethercote:shrink-Nonterminal, r=petrochenkov
Shrink `Nonterminal`

These commits shrink `Nonterminal` from 240 bytes to 40 bytes. When building `serde_derive` they reduce the number of `memcpy` calls from 9.6M to 7.4M, and it's a tiny win on a few other benchmarks.

r? @petrochenkov
2020-01-31 06:33:36 +00:00
Andy Russell
7632ade65b
clarify "incorrect issue" error 2020-01-30 09:01:56 -05:00
Nicholas Nethercote
7d2173ed27 Use P for NtMeta.
This commit reduces the size of `Nonterminal` from a 72 bytes to 40 bytes (on
x86-64).
2020-01-30 11:19:40 +11:00
Nicholas Nethercote
0d69fe8308 Use P for NtTraitItem, NtImplItem, and NtForeignItem.
This commit reduces the size of `Nonterminal` from a whopping 240 bytes
to 72 bytes (on x86-64), which gets it below the `memcpy` threshold.

It also removes some impedance mismatches with `Annotatable`, which
already uses `P` for these variants.
2020-01-30 11:18:56 +11:00
Esteban Küber
697fdc568e Suggest defining type parameter when appropriate
```
error[E0412]: cannot find type `T` in this scope
 --> file.rs:3:12
  |
3 | impl Trait<T> for Struct {}
  |     -      ^ not found in this scope
  |     |
  |     help: you might be missing a type parameter: `<T>`
```

Fix #64298.
2020-01-26 10:57:18 -08:00
Tyler Lanphear
6f7e89ffe3 unused-parens: implement for block return values 2020-01-23 00:42:35 -05:00
Tyler Mandry
14e6259c29
Rollup merge of #68441 - Centril:pprust-as_deref, r=Mark-Simulacrum
pprust: use as_deref

Some drive-by cleanup.
2020-01-22 16:02:20 -08:00
Mazdak Farrokhzad
7962ccb216 pprust: use as_deref 2020-01-22 01:38:05 +01:00