diff options
Diffstat (limited to 'crates/libsyntax2/src')
-rw-r--r-- | crates/libsyntax2/src/ast/generated.rs | 22 | ||||
-rw-r--r-- | crates/libsyntax2/src/grammar.ron | 3 | ||||
-rw-r--r-- | crates/libsyntax2/src/grammar/mod.rs | 2 | ||||
-rw-r--r-- | crates/libsyntax2/src/syntax_kinds/generated.rs | 2 |
4 files changed, 29 insertions, 0 deletions
diff --git a/crates/libsyntax2/src/ast/generated.rs b/crates/libsyntax2/src/ast/generated.rs index 999023e3d..e8743caa8 100644 --- a/crates/libsyntax2/src/ast/generated.rs +++ b/crates/libsyntax2/src/ast/generated.rs | |||
@@ -523,6 +523,10 @@ impl<'a> FnDef<'a> { | |||
523 | pub fn body(self) -> Option<Block<'a>> { | 523 | pub fn body(self) -> Option<Block<'a>> { |
524 | super::child_opt(self) | 524 | super::child_opt(self) |
525 | } | 525 | } |
526 | |||
527 | pub fn ret_type(self) -> Option<RetType<'a>> { | ||
528 | super::child_opt(self) | ||
529 | } | ||
526 | } | 530 | } |
527 | 531 | ||
528 | // FnPointerType | 532 | // FnPointerType |
@@ -1412,6 +1416,24 @@ impl<'a> AstNode<'a> for ReferenceType<'a> { | |||
1412 | 1416 | ||
1413 | impl<'a> ReferenceType<'a> {} | 1417 | impl<'a> ReferenceType<'a> {} |
1414 | 1418 | ||
1419 | // RetType | ||
1420 | #[derive(Debug, Clone, Copy)] | ||
1421 | pub struct RetType<'a> { | ||
1422 | syntax: SyntaxNodeRef<'a>, | ||
1423 | } | ||
1424 | |||
1425 | impl<'a> AstNode<'a> for RetType<'a> { | ||
1426 | fn cast(syntax: SyntaxNodeRef<'a>) -> Option<Self> { | ||
1427 | match syntax.kind() { | ||
1428 | RET_TYPE => Some(RetType { syntax }), | ||
1429 | _ => None, | ||
1430 | } | ||
1431 | } | ||
1432 | fn syntax(self) -> SyntaxNodeRef<'a> { self.syntax } | ||
1433 | } | ||
1434 | |||
1435 | impl<'a> RetType<'a> {} | ||
1436 | |||
1415 | // ReturnExpr | 1437 | // ReturnExpr |
1416 | #[derive(Debug, Clone, Copy)] | 1438 | #[derive(Debug, Clone, Copy)] |
1417 | pub struct ReturnExpr<'a> { | 1439 | pub struct ReturnExpr<'a> { |
diff --git a/crates/libsyntax2/src/grammar.ron b/crates/libsyntax2/src/grammar.ron index f8fa7b694..f1907d1ce 100644 --- a/crates/libsyntax2/src/grammar.ron +++ b/crates/libsyntax2/src/grammar.ron | |||
@@ -119,6 +119,7 @@ Grammar( | |||
119 | "STRUCT_DEF", | 119 | "STRUCT_DEF", |
120 | "ENUM_DEF", | 120 | "ENUM_DEF", |
121 | "FN_DEF", | 121 | "FN_DEF", |
122 | "RET_TYPE", | ||
122 | "EXTERN_CRATE_ITEM", | 123 | "EXTERN_CRATE_ITEM", |
123 | "MODULE", | 124 | "MODULE", |
124 | "USE_ITEM", | 125 | "USE_ITEM", |
@@ -252,8 +253,10 @@ Grammar( | |||
252 | options: [ | 253 | options: [ |
253 | ["param_list", "ParamList"], | 254 | ["param_list", "ParamList"], |
254 | ["body", "Block"], | 255 | ["body", "Block"], |
256 | ["ret_type", "RetType"] | ||
255 | ], | 257 | ], |
256 | ), | 258 | ), |
259 | "RetType": (), | ||
257 | "StructDef": ( | 260 | "StructDef": ( |
258 | traits: [ | 261 | traits: [ |
259 | "NameOwner", | 262 | "NameOwner", |
diff --git a/crates/libsyntax2/src/grammar/mod.rs b/crates/libsyntax2/src/grammar/mod.rs index 496d28349..1acecac41 100644 --- a/crates/libsyntax2/src/grammar/mod.rs +++ b/crates/libsyntax2/src/grammar/mod.rs | |||
@@ -119,8 +119,10 @@ fn abi(p: &mut Parser) { | |||
119 | 119 | ||
120 | fn opt_fn_ret_type(p: &mut Parser) -> bool { | 120 | fn opt_fn_ret_type(p: &mut Parser) -> bool { |
121 | if p.at(THIN_ARROW) { | 121 | if p.at(THIN_ARROW) { |
122 | let m = p.start(); | ||
122 | p.bump(); | 123 | p.bump(); |
123 | types::type_(p); | 124 | types::type_(p); |
125 | m.complete(p, RET_TYPE); | ||
124 | true | 126 | true |
125 | } else { | 127 | } else { |
126 | false | 128 | false |
diff --git a/crates/libsyntax2/src/syntax_kinds/generated.rs b/crates/libsyntax2/src/syntax_kinds/generated.rs index 0a22b11c2..7882bded9 100644 --- a/crates/libsyntax2/src/syntax_kinds/generated.rs +++ b/crates/libsyntax2/src/syntax_kinds/generated.rs | |||
@@ -119,6 +119,7 @@ pub enum SyntaxKind { | |||
119 | STRUCT_DEF, | 119 | STRUCT_DEF, |
120 | ENUM_DEF, | 120 | ENUM_DEF, |
121 | FN_DEF, | 121 | FN_DEF, |
122 | RET_TYPE, | ||
122 | EXTERN_CRATE_ITEM, | 123 | EXTERN_CRATE_ITEM, |
123 | MODULE, | 124 | MODULE, |
124 | USE_ITEM, | 125 | USE_ITEM, |
@@ -380,6 +381,7 @@ impl SyntaxKind { | |||
380 | STRUCT_DEF => &SyntaxInfo { name: "STRUCT_DEF" }, | 381 | STRUCT_DEF => &SyntaxInfo { name: "STRUCT_DEF" }, |
381 | ENUM_DEF => &SyntaxInfo { name: "ENUM_DEF" }, | 382 | ENUM_DEF => &SyntaxInfo { name: "ENUM_DEF" }, |
382 | FN_DEF => &SyntaxInfo { name: "FN_DEF" }, | 383 | FN_DEF => &SyntaxInfo { name: "FN_DEF" }, |
384 | RET_TYPE => &SyntaxInfo { name: "RET_TYPE" }, | ||
383 | EXTERN_CRATE_ITEM => &SyntaxInfo { name: "EXTERN_CRATE_ITEM" }, | 385 | EXTERN_CRATE_ITEM => &SyntaxInfo { name: "EXTERN_CRATE_ITEM" }, |
384 | MODULE => &SyntaxInfo { name: "MODULE" }, | 386 | MODULE => &SyntaxInfo { name: "MODULE" }, |
385 | USE_ITEM => &SyntaxInfo { name: "USE_ITEM" }, | 387 | USE_ITEM => &SyntaxInfo { name: "USE_ITEM" }, |