aboutsummaryrefslogtreecommitdiff
path: root/crates/libsyntax2/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/libsyntax2/src')
-rw-r--r--crates/libsyntax2/src/ast/generated.rs22
-rw-r--r--crates/libsyntax2/src/grammar.ron3
-rw-r--r--crates/libsyntax2/src/grammar/mod.rs2
-rw-r--r--crates/libsyntax2/src/syntax_kinds/generated.rs2
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
1413impl<'a> ReferenceType<'a> {} 1417impl<'a> ReferenceType<'a> {}
1414 1418
1419// RetType
1420#[derive(Debug, Clone, Copy)]
1421pub struct RetType<'a> {
1422 syntax: SyntaxNodeRef<'a>,
1423}
1424
1425impl<'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
1435impl<'a> RetType<'a> {}
1436
1415// ReturnExpr 1437// ReturnExpr
1416#[derive(Debug, Clone, Copy)] 1438#[derive(Debug, Clone, Copy)]
1417pub struct ReturnExpr<'a> { 1439pub 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
120fn opt_fn_ret_type(p: &mut Parser) -> bool { 120fn 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" },