Commit Graph

148 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
c2026030b5 parser: remove Option<Vec<Attribute>> in ItemInfo. 2020-02-13 15:16:36 +01:00
Mazdak Farrokhzad
20ba6875e6 parser_item_mod: avoid cloning outer attributes 2020-02-13 15:16:36 +01:00
Mazdak Farrokhzad
73d5970cdc parser: introduce parse_item_kind as central ItemInfo logic.
this also extracts macro item parsers.
2020-02-13 15:16:36 +01:00
Mazdak Farrokhzad
511dfdb8b3 parser: extract recover_missing_kw_before_item 2020-02-13 15:16:36 +01:00
Mazdak Farrokhzad
7737d0ffde parser: unify item list parsing.
as a consequence, `trait X { #![attr] }` becomes legal.
2020-02-13 15:16:29 +01:00
Mazdak Farrokhzad
9fed2d587c parser: extract common foreign item code for each kind 2020-02-13 14:43:20 +01:00
Mazdak Farrokhzad
9828559aad parser: is_fn_front_matter -> check_fn_front_matter 2020-02-13 10:40:17 +01:00
Mazdak Farrokhzad
79d139ac70 parser: simplify ParamCfg -> ReqName 2020-02-13 10:40:17 +01:00
Mazdak Farrokhzad
05e5530577 parser: address review comments 2020-02-13 10:39:24 +01:00
Mazdak Farrokhzad
cdbbc25cc3 parser: move ban_async_in_2015 to fn parsing & improve it. 2020-02-13 10:39:24 +01:00
Mazdak Farrokhzad
0425379195 parser: inline parse_assoc_fn and friends. 2020-02-13 10:39:24 +01:00
Mazdak Farrokhzad
b05e9d2b4d parser: solidify fn parsing with parse_fn. 2020-02-13 10:39:24 +01:00
Mazdak Farrokhzad
a833be2162 parser: fuse free fn parsing together. 2020-02-13 10:39:24 +01:00
Mazdak Farrokhzad
36a17e4067 parser_fn_front_matter: allow const .. extern 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
Mazdak Farrokhzad
c0b7b41cff parse_ty_common: use enums instead of bools. 2020-02-05 01:27:08 +01:00
Mazdak Farrokhzad
011fb23c58 Rollup merge of #68769 - Centril:unwrap, r=petrochenkov
parser: avoid re-wrapping NtItem

r? @petrochenkov
2020-02-02 14:15:53 +01:00
Mazdak Farrokhzad
5951cd3dda Rollup merge of #68764 - Centril:self-semantic, r=petrochenkov
parser: syntactically allow `self` in all `fn` contexts

Part of https://github.com/rust-lang/rust/pull/68728.

`self` parameters are now *syntactically* allowed as the first parameter irrespective of item context (and in function pointers). Instead, semantic validation (`ast_validation`) is used.

r? @petrochenkov
2020-02-02 14:15:52 +01:00
Mazdak Farrokhzad
d154bef4d3 parser: avoid re-wrapping NtItem 2020-02-02 13:55:45 +01:00
Mazdak Farrokhzad
71a6f58229 parser: address review comments re. self. 2020-02-02 13:32:37 +01:00
Mazdak Farrokhzad
8674efdb7c parser: move restrictions re. self to ast_validation. 2020-02-02 10:33:55 +01:00
Mazdak Farrokhzad
e233331a51 syntax::print -> new crate rustc_ast_pretty 2020-02-01 18:59:49 +01:00
bors
cdd41ea5fc Auto merge of #68633 - JohnTitor:avoid-ice-in-diagnostics, r=estebank
Avoid ICE in macro's diagnostics

Fixes #68629

r? @estebank
2020-01-31 21:51:28 +00:00
Yuki Okushi
b1c91ee1b1 Change Applicability to HasPlaceholders 2020-01-30 17:33:19 +09: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
Yuki Okushi
cef7764a76 Avoid ICE in macro's diagnostics 2020-01-29 18:03:45 +09:00
Mazdak Farrokhzad
3484e2fab4 Rollup merge of #68140 - ecstatic-morse:const-trait-bound-opt-out, r=oli-obk
Implement `?const` opt-out for trait bounds

For now, such bounds are treated exactly the same as unprefixed ones in all contexts. [RFC 2632](https://github.com/rust-lang/rfcs/pull/2632) does not specify whether such bounds are forbidden outside of `const` contexts, so they are allowed at the moment.

Prior to this PR, the constness of a trait bound/impl was stored in `TraitRef`. Now, the constness of an `impl` is stored in `ast::ItemKind::Impl` and the constness of a bound in `ast::TraitBoundModifer`. Additionally, constness of trait bounds is now stored in an additional field of `ty::Predicate::Trait`, and the combination of the constness of the item along with any `TraitBoundModifier` determines the constness of the bound in accordance with the RFC. Encoding the constness of impls at the `ty` level is left for a later PR.

After a discussion in \#wg-grammar on Discord, it was decided that the grammar should not encode the mutual exclusivity of trait bound modifiers. The grammar for trait bound modifiers remains `[?const] [?]`. To encode this, I add a dummy variant to `ast::TraitBoundModifier` that is used when the syntax `?const ?` appears. This variant causes an error in AST validation and disappears during HIR lowering.

cc #67794

r? @oli-obk
2020-01-21 19:42:20 +01:00
Dylan MacKenzie
958b0bc8d2 Store impl const in ItemKind::Impl 2020-01-19 23:41:44 -08:00
Dylan MacKenzie
01cbe506f9 Add constness field to ast::ItemKind::Impl 2020-01-19 23:41:42 -08:00
Mazdak Farrokhzad
de6046fa0f remove rustc_error_codes deps except in rustc_driver 2020-01-18 21:53:53 +01:00
Dylan MacKenzie
d461e6d6cb Use named fields for ast::ItemKind::Impl 2020-01-17 15:59:07 -08:00
Mazdak Farrokhzad
cacda2d7a0 Rollup merge of #68084 - estebank:ice-68000, r=varkor
Do not ICE on unicode next point

Use `shrink_to_hi` instead of `next_point` and fix `next_point`.

Fix #68000, fix #68091, fix #68092.
2020-01-11 04:02:28 +01:00
Esteban Küber
b93ef68245 Change next_point when shrink_to_hi is more appropriate 2020-01-10 11:23:59 -08:00
Esteban Küber
fcd850fc5d Do not ICE on unicode next point
Use `shrink_to_hi` instead of `next_point`
Fix #68000.
2020-01-09 22:10:18 -08:00
Mazdak Farrokhzad
6f3f1c537b Rollup merge of #68073 - Centril:fix-68062, r=estebank
expect `fn` after `const unsafe` / `const extern`

Fixes #68062

r? @estebank @petrochenkov
cc @Aaron1011
2020-01-10 02:47:36 +01:00
Mazdak Farrokhzad
2307f0c4ea Rollup merge of #68071 - estebank:ice-67995, r=Centril
Extend support of `_` in type parameters

 - Account for `impl Trait<_>`.
 - Provide a reasonable `Span` for empty `Generics` in `impl`s.
 - Account for `fn foo<_>(_: _) {}` to suggest `fn foo<T>(_: T) {}`.
 - Fix #67995. Follow up to #67597.
2020-01-10 02:47:34 +01:00
Dylan MacKenzie
31edbe9aca Reject const in inherent impls 2020-01-09 16:47:05 -08:00
Dylan MacKenzie
1c3fe9de4e Parse impl const Trait for Ty syntax 2020-01-09 16:46:14 -08:00
Esteban Küber
c751961d29 Extend support of _ in type parameters
- Account for `impl Trait<_>`.
 - Provide a reasonable `Span` for empty `Generics` in `impl`s.
 - Account for `fn foo<_>(_: _) {}` to suggest `fn foo<T>(_: T) {}`.
 - Fix #67995.
2020-01-09 14:20:53 -08:00
Mazdak Farrokhzad
915db7ae64 expect fn after const unsafe / const extern 2020-01-09 23:02:34 +01:00
Mazdak Farrokhzad
2c3e5d3de0 - remove syntax::{span_warn!, span_err!, span_fatal!. struct_err!}
- remove syntax::{help!, span_help!, span_note!}
- remove unused syntax::{struct_span_fatal, struct_span_err_or_warn!, span_err_or_warn!}
- lintify check_for_bindings_named_same_as_variants + conflicting_repr_hints
- inline syntax::{struct_span_warn!, diagnostic_used!}
- stringify_error_code! -> error_code! & use it more.
- find_plugin_registrar: de-fatalize an error
- de-fatalize metadata errors
- move type_error_struct! to rustc_typeck
- struct_span_err! -> rustc_errors
2020-01-08 04:25:33 +01:00
Vadim Petrochenkov
70f1d57048 Rename syntax_pos to rustc_span in source code 2020-01-01 09:15:18 +03:00
Mazdak Farrokhzad
13ca924988 parser::item: remove .fatal calls 2019-12-31 04:33:34 +01:00
Mazdak Farrokhzad
5a64ba6386 parser: span_fatal -> struct_span_err 2019-12-31 04:33:34 +01:00
Mazdak Farrokhzad
b6fc87c5b9 de-fatalize some errors 2019-12-31 04:33:34 +01:00
Mazdak Farrokhzad
2091062bf6 parser: call .struct_span_err directly 2019-12-31 04:33:34 +01:00
Mazdak Farrokhzad
8456c403e1 extract parse_not_expr 2019-12-23 13:55:04 +01:00
Mark Rousskov
a06baa56b9 Format the world 2019-12-22 17:42:47 -05:00