Rollup merge of #121326 - fmease:detect-empty-leading-where-clauses-on-ty-aliases, r=compiler-errors
Detect empty leading where clauses on type aliases 1. commit: refactor the AST of type alias where clauses * I could no longer bear the look of `.0.1` and `.1.0` * Arguably moving `split` out of `TyAlias` into a substruct might not make that much sense from a semantic standpoint since it reprs an index into `TyAlias.predicates` but it's alright and it cleans up the usage sites of `TyAlias` 2. commit: fix an oversight: An empty leading where clause is still a leading where clause * semantically reject empty leading where clauses on lazy type aliases * e.g., on `#![feature(lazy_type_alias)] type X where = ();` * make empty leading where clauses on assoc types trigger lint `deprecated_where_clause_location` * e.g., `impl Trait for () { type X where = (); }`
This commit is contained in:
commit
dd4ecd1cf4
18 changed files with 248 additions and 150 deletions
|
@ -971,11 +971,17 @@ impl<'a> Parser<'a> {
|
|||
|
||||
let after_where_clause = self.parse_where_clause()?;
|
||||
|
||||
let where_clauses = (
|
||||
TyAliasWhereClause(before_where_clause.has_where_token, before_where_clause.span),
|
||||
TyAliasWhereClause(after_where_clause.has_where_token, after_where_clause.span),
|
||||
);
|
||||
let where_predicates_split = before_where_clause.predicates.len();
|
||||
let where_clauses = TyAliasWhereClauses {
|
||||
before: TyAliasWhereClause {
|
||||
has_where_token: before_where_clause.has_where_token,
|
||||
span: before_where_clause.span,
|
||||
},
|
||||
after: TyAliasWhereClause {
|
||||
has_where_token: after_where_clause.has_where_token,
|
||||
span: after_where_clause.span,
|
||||
},
|
||||
split: before_where_clause.predicates.len(),
|
||||
};
|
||||
let mut predicates = before_where_clause.predicates;
|
||||
predicates.extend(after_where_clause.predicates);
|
||||
let where_clause = WhereClause {
|
||||
|
@ -994,7 +1000,6 @@ impl<'a> Parser<'a> {
|
|||
defaultness,
|
||||
generics,
|
||||
where_clauses,
|
||||
where_predicates_split,
|
||||
bounds,
|
||||
ty,
|
||||
})),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue