Skip to content

Commit d7d8971

Browse files
committed
Remove (..)-style return type notation
1 parent a4966c9 commit d7d8971

File tree

6 files changed

+2
-101
lines changed

6 files changed

+2
-101
lines changed

crates/hir-def/src/path/lower.rs

-3
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,6 @@ pub(super) fn lower_generic_args(
216216
let arg = ConstRefOrPath::from_expr_opt(arg.expr());
217217
args.push(GenericArg::Const(arg))
218218
}
219-
ast::GenericArg::ReturnTypeArg(_) => {
220-
// FIXME: return type notation is experimental, we don't do anything with it yet.
221-
}
222219
}
223220
}
224221

crates/parser/src/grammar/generic_args.rs

-18
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ fn generic_arg(p: &mut Parser<'_>) -> bool {
7676
}
7777
}
7878
}
79-
IDENT if p.nth(1) == T!['('] && p.nth_at(2, T![..]) => return_type_arg(p),
8079
_ if p.at_ts(types::TYPE_FIRST) => type_arg(p),
8180
_ => return false,
8281
}
@@ -140,20 +139,3 @@ fn type_arg(p: &mut Parser<'_>) {
140139
types::type_(p);
141140
m.complete(p, TYPE_ARG);
142141
}
143-
144-
// test return_type_arg
145-
// type T = S<foo(..): Send>;
146-
pub(super) fn return_type_arg(p: &mut Parser<'_>) {
147-
let m = p.start();
148-
p.expect(IDENT);
149-
p.expect(T!['(']);
150-
p.expect(T![..]);
151-
p.expect(T![')']);
152-
if !p.at(T![:]) {
153-
p.error("expected :");
154-
m.abandon(p);
155-
return;
156-
}
157-
generic_params::bounds(p);
158-
m.complete(p, RETURN_TYPE_ARG);
159-
}

crates/parser/test_data/parser/inline/ok/0206_return_type_arg.rast

-33
This file was deleted.

crates/parser/test_data/parser/inline/ok/0206_return_type_arg.rs

-1
This file was deleted.

crates/syntax/rust.ungram

-4
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ GenericArg =
4646
| AssocTypeArg
4747
| LifetimeArg
4848
| ConstArg
49-
| ReturnTypeArg
5049

5150
TypeArg =
5251
Type
@@ -60,9 +59,6 @@ LifetimeArg =
6059
ConstArg =
6160
Expr
6261

63-
ReturnTypeArg =
64-
NameRef '(' '..' ')' ':' TypeBoundList
65-
6662
MacroCall =
6763
Attr* Path '!' TokenTree ';'?
6864

crates/syntax/src/ast/generated/nodes.rs

+2-42
Original file line numberDiff line numberDiff line change
@@ -142,18 +142,6 @@ impl ConstArg {
142142
pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
143143
}
144144

145-
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
146-
pub struct ReturnTypeArg {
147-
pub(crate) syntax: SyntaxNode,
148-
}
149-
impl ast::HasTypeBounds for ReturnTypeArg {}
150-
impl ReturnTypeArg {
151-
pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
152-
pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
153-
pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
154-
pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
155-
}
156-
157145
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
158146
pub struct TypeBoundList {
159147
pub(crate) syntax: SyntaxNode,
@@ -1528,7 +1516,6 @@ pub enum GenericArg {
15281516
AssocTypeArg(AssocTypeArg),
15291517
LifetimeArg(LifetimeArg),
15301518
ConstArg(ConstArg),
1531-
ReturnTypeArg(ReturnTypeArg),
15321519
}
15331520

15341521
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
@@ -1878,17 +1865,6 @@ impl AstNode for ConstArg {
18781865
}
18791866
fn syntax(&self) -> &SyntaxNode { &self.syntax }
18801867
}
1881-
impl AstNode for ReturnTypeArg {
1882-
fn can_cast(kind: SyntaxKind) -> bool { kind == RETURN_TYPE_ARG }
1883-
fn cast(syntax: SyntaxNode) -> Option<Self> {
1884-
if Self::can_cast(syntax.kind()) {
1885-
Some(Self { syntax })
1886-
} else {
1887-
None
1888-
}
1889-
}
1890-
fn syntax(&self) -> &SyntaxNode { &self.syntax }
1891-
}
18921868
impl AstNode for TypeBoundList {
18931869
fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND_LIST }
18941870
fn cast(syntax: SyntaxNode) -> Option<Self> {
@@ -3243,20 +3219,16 @@ impl From<LifetimeArg> for GenericArg {
32433219
impl From<ConstArg> for GenericArg {
32443220
fn from(node: ConstArg) -> GenericArg { GenericArg::ConstArg(node) }
32453221
}
3246-
impl From<ReturnTypeArg> for GenericArg {
3247-
fn from(node: ReturnTypeArg) -> GenericArg { GenericArg::ReturnTypeArg(node) }
3248-
}
32493222
impl AstNode for GenericArg {
32503223
fn can_cast(kind: SyntaxKind) -> bool {
3251-
matches!(kind, TYPE_ARG | ASSOC_TYPE_ARG | LIFETIME_ARG | CONST_ARG | RETURN_TYPE_ARG)
3224+
matches!(kind, TYPE_ARG | ASSOC_TYPE_ARG | LIFETIME_ARG | CONST_ARG)
32523225
}
32533226
fn cast(syntax: SyntaxNode) -> Option<Self> {
32543227
let res = match syntax.kind() {
32553228
TYPE_ARG => GenericArg::TypeArg(TypeArg { syntax }),
32563229
ASSOC_TYPE_ARG => GenericArg::AssocTypeArg(AssocTypeArg { syntax }),
32573230
LIFETIME_ARG => GenericArg::LifetimeArg(LifetimeArg { syntax }),
32583231
CONST_ARG => GenericArg::ConstArg(ConstArg { syntax }),
3259-
RETURN_TYPE_ARG => GenericArg::ReturnTypeArg(ReturnTypeArg { syntax }),
32603232
_ => return None,
32613233
};
32623234
Some(res)
@@ -3267,7 +3239,6 @@ impl AstNode for GenericArg {
32673239
GenericArg::AssocTypeArg(it) => &it.syntax,
32683240
GenericArg::LifetimeArg(it) => &it.syntax,
32693241
GenericArg::ConstArg(it) => &it.syntax,
3270-
GenericArg::ReturnTypeArg(it) => &it.syntax,
32713242
}
32723243
}
32733244
}
@@ -4199,13 +4170,7 @@ impl AstNode for AnyHasTypeBounds {
41994170
fn can_cast(kind: SyntaxKind) -> bool {
42004171
matches!(
42014172
kind,
4202-
ASSOC_TYPE_ARG
4203-
| RETURN_TYPE_ARG
4204-
| TRAIT
4205-
| TYPE_ALIAS
4206-
| LIFETIME_PARAM
4207-
| TYPE_PARAM
4208-
| WHERE_PRED
4173+
ASSOC_TYPE_ARG | TRAIT | TYPE_ALIAS | LIFETIME_PARAM | TYPE_PARAM | WHERE_PRED
42094174
)
42104175
}
42114176
fn cast(syntax: SyntaxNode) -> Option<Self> {
@@ -4368,11 +4333,6 @@ impl std::fmt::Display for ConstArg {
43684333
std::fmt::Display::fmt(self.syntax(), f)
43694334
}
43704335
}
4371-
impl std::fmt::Display for ReturnTypeArg {
4372-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4373-
std::fmt::Display::fmt(self.syntax(), f)
4374-
}
4375-
}
43764336
impl std::fmt::Display for TypeBoundList {
43774337
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43784338
std::fmt::Display::fmt(self.syntax(), f)

0 commit comments

Comments
 (0)