aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/src')
-rw-r--r--crates/ra_syntax/src/ast.rs5
-rw-r--r--crates/ra_syntax/src/ast/generated.rs496
-rw-r--r--crates/ra_syntax/src/ast/generated.rs.tera8
-rw-r--r--crates/ra_syntax/src/yellow.rs22
4 files changed, 523 insertions, 8 deletions
diff --git a/crates/ra_syntax/src/ast.rs b/crates/ra_syntax/src/ast.rs
index fd65264b2..165b308d1 100644
--- a/crates/ra_syntax/src/ast.rs
+++ b/crates/ra_syntax/src/ast.rs
@@ -15,12 +15,13 @@ use crate::{
15/// conversion itself has zero runtime cost: ast and syntax nodes have exactly 15/// conversion itself has zero runtime cost: ast and syntax nodes have exactly
16/// the same representation: a pointer to the tree root and a pointer to the 16/// the same representation: a pointer to the tree root and a pointer to the
17/// node itself. 17/// node itself.
18pub trait AstNode: rowan::TransparentNewType<Repr = rowan::SyntaxNode<RaTypes>> { 18pub trait AstNode:
19 rowan::TransparentNewType<Repr = rowan::SyntaxNode<RaTypes>> + ToOwned<Owned = TreeArc<Self>>
20{
19 fn cast(syntax: &SyntaxNode) -> Option<&Self> 21 fn cast(syntax: &SyntaxNode) -> Option<&Self>
20 where 22 where
21 Self: Sized; 23 Self: Sized;
22 fn syntax(&self) -> &SyntaxNode; 24 fn syntax(&self) -> &SyntaxNode;
23 fn to_owned(&self) -> TreeArc<Self>;
24} 25}
25 26
26pub trait AstToken: AstNode { 27pub trait AstToken: AstNode {
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs
index a207f8429..bb223e0dc 100644
--- a/crates/ra_syntax/src/ast/generated.rs
+++ b/crates/ra_syntax/src/ast/generated.rs
@@ -35,6 +35,10 @@ impl AstNode for ArgList {
35 } 35 }
36 } 36 }
37 fn syntax(&self) -> &SyntaxNode { &self.syntax } 37 fn syntax(&self) -> &SyntaxNode { &self.syntax }
38}
39
40impl ToOwned for ArgList {
41 type Owned = TreeArc<ArgList>;
38 fn to_owned(&self) -> TreeArc<ArgList> { TreeArc::cast(self.syntax.to_owned()) } 42 fn to_owned(&self) -> TreeArc<ArgList> { TreeArc::cast(self.syntax.to_owned()) }
39} 43}
40 44
@@ -63,6 +67,10 @@ impl AstNode for ArrayExpr {
63 } 67 }
64 } 68 }
65 fn syntax(&self) -> &SyntaxNode { &self.syntax } 69 fn syntax(&self) -> &SyntaxNode { &self.syntax }
70}
71
72impl ToOwned for ArrayExpr {
73 type Owned = TreeArc<ArrayExpr>;
66 fn to_owned(&self) -> TreeArc<ArrayExpr> { TreeArc::cast(self.syntax.to_owned()) } 74 fn to_owned(&self) -> TreeArc<ArrayExpr> { TreeArc::cast(self.syntax.to_owned()) }
67} 75}
68 76
@@ -91,6 +99,10 @@ impl AstNode for ArrayType {
91 } 99 }
92 } 100 }
93 fn syntax(&self) -> &SyntaxNode { &self.syntax } 101 fn syntax(&self) -> &SyntaxNode { &self.syntax }
102}
103
104impl ToOwned for ArrayType {
105 type Owned = TreeArc<ArrayType>;
94 fn to_owned(&self) -> TreeArc<ArrayType> { TreeArc::cast(self.syntax.to_owned()) } 106 fn to_owned(&self) -> TreeArc<ArrayType> { TreeArc::cast(self.syntax.to_owned()) }
95} 107}
96 108
@@ -123,6 +135,10 @@ impl AstNode for AssocTypeArg {
123 } 135 }
124 } 136 }
125 fn syntax(&self) -> &SyntaxNode { &self.syntax } 137 fn syntax(&self) -> &SyntaxNode { &self.syntax }
138}
139
140impl ToOwned for AssocTypeArg {
141 type Owned = TreeArc<AssocTypeArg>;
126 fn to_owned(&self) -> TreeArc<AssocTypeArg> { TreeArc::cast(self.syntax.to_owned()) } 142 fn to_owned(&self) -> TreeArc<AssocTypeArg> { TreeArc::cast(self.syntax.to_owned()) }
127} 143}
128 144
@@ -155,6 +171,10 @@ impl AstNode for Attr {
155 } 171 }
156 } 172 }
157 fn syntax(&self) -> &SyntaxNode { &self.syntax } 173 fn syntax(&self) -> &SyntaxNode { &self.syntax }
174}
175
176impl ToOwned for Attr {
177 type Owned = TreeArc<Attr>;
158 fn to_owned(&self) -> TreeArc<Attr> { TreeArc::cast(self.syntax.to_owned()) } 178 fn to_owned(&self) -> TreeArc<Attr> { TreeArc::cast(self.syntax.to_owned()) }
159} 179}
160 180
@@ -183,6 +203,10 @@ impl AstNode for BinExpr {
183 } 203 }
184 } 204 }
185 fn syntax(&self) -> &SyntaxNode { &self.syntax } 205 fn syntax(&self) -> &SyntaxNode { &self.syntax }
206}
207
208impl ToOwned for BinExpr {
209 type Owned = TreeArc<BinExpr>;
186 fn to_owned(&self) -> TreeArc<BinExpr> { TreeArc::cast(self.syntax.to_owned()) } 210 fn to_owned(&self) -> TreeArc<BinExpr> { TreeArc::cast(self.syntax.to_owned()) }
187} 211}
188 212
@@ -207,6 +231,10 @@ impl AstNode for BindPat {
207 } 231 }
208 } 232 }
209 fn syntax(&self) -> &SyntaxNode { &self.syntax } 233 fn syntax(&self) -> &SyntaxNode { &self.syntax }
234}
235
236impl ToOwned for BindPat {
237 type Owned = TreeArc<BindPat>;
210 fn to_owned(&self) -> TreeArc<BindPat> { TreeArc::cast(self.syntax.to_owned()) } 238 fn to_owned(&self) -> TreeArc<BindPat> { TreeArc::cast(self.syntax.to_owned()) }
211} 239}
212 240
@@ -236,6 +264,10 @@ impl AstNode for Block {
236 } 264 }
237 } 265 }
238 fn syntax(&self) -> &SyntaxNode { &self.syntax } 266 fn syntax(&self) -> &SyntaxNode { &self.syntax }
267}
268
269impl ToOwned for Block {
270 type Owned = TreeArc<Block>;
239 fn to_owned(&self) -> TreeArc<Block> { TreeArc::cast(self.syntax.to_owned()) } 271 fn to_owned(&self) -> TreeArc<Block> { TreeArc::cast(self.syntax.to_owned()) }
240} 272}
241 273
@@ -268,6 +300,10 @@ impl AstNode for BlockExpr {
268 } 300 }
269 } 301 }
270 fn syntax(&self) -> &SyntaxNode { &self.syntax } 302 fn syntax(&self) -> &SyntaxNode { &self.syntax }
303}
304
305impl ToOwned for BlockExpr {
306 type Owned = TreeArc<BlockExpr>;
271 fn to_owned(&self) -> TreeArc<BlockExpr> { TreeArc::cast(self.syntax.to_owned()) } 307 fn to_owned(&self) -> TreeArc<BlockExpr> { TreeArc::cast(self.syntax.to_owned()) }
272} 308}
273 309
@@ -296,6 +332,10 @@ impl AstNode for BreakExpr {
296 } 332 }
297 } 333 }
298 fn syntax(&self) -> &SyntaxNode { &self.syntax } 334 fn syntax(&self) -> &SyntaxNode { &self.syntax }
335}
336
337impl ToOwned for BreakExpr {
338 type Owned = TreeArc<BreakExpr>;
299 fn to_owned(&self) -> TreeArc<BreakExpr> { TreeArc::cast(self.syntax.to_owned()) } 339 fn to_owned(&self) -> TreeArc<BreakExpr> { TreeArc::cast(self.syntax.to_owned()) }
300} 340}
301 341
@@ -324,6 +364,10 @@ impl AstNode for Byte {
324 } 364 }
325 } 365 }
326 fn syntax(&self) -> &SyntaxNode { &self.syntax } 366 fn syntax(&self) -> &SyntaxNode { &self.syntax }
367}
368
369impl ToOwned for Byte {
370 type Owned = TreeArc<Byte>;
327 fn to_owned(&self) -> TreeArc<Byte> { TreeArc::cast(self.syntax.to_owned()) } 371 fn to_owned(&self) -> TreeArc<Byte> { TreeArc::cast(self.syntax.to_owned()) }
328} 372}
329 373
@@ -349,6 +393,10 @@ impl AstNode for ByteString {
349 } 393 }
350 } 394 }
351 fn syntax(&self) -> &SyntaxNode { &self.syntax } 395 fn syntax(&self) -> &SyntaxNode { &self.syntax }
396}
397
398impl ToOwned for ByteString {
399 type Owned = TreeArc<ByteString>;
352 fn to_owned(&self) -> TreeArc<ByteString> { TreeArc::cast(self.syntax.to_owned()) } 400 fn to_owned(&self) -> TreeArc<ByteString> { TreeArc::cast(self.syntax.to_owned()) }
353} 401}
354 402
@@ -374,6 +422,10 @@ impl AstNode for CallExpr {
374 } 422 }
375 } 423 }
376 fn syntax(&self) -> &SyntaxNode { &self.syntax } 424 fn syntax(&self) -> &SyntaxNode { &self.syntax }
425}
426
427impl ToOwned for CallExpr {
428 type Owned = TreeArc<CallExpr>;
377 fn to_owned(&self) -> TreeArc<CallExpr> { TreeArc::cast(self.syntax.to_owned()) } 429 fn to_owned(&self) -> TreeArc<CallExpr> { TreeArc::cast(self.syntax.to_owned()) }
378} 430}
379 431
@@ -403,6 +455,10 @@ impl AstNode for CastExpr {
403 } 455 }
404 } 456 }
405 fn syntax(&self) -> &SyntaxNode { &self.syntax } 457 fn syntax(&self) -> &SyntaxNode { &self.syntax }
458}
459
460impl ToOwned for CastExpr {
461 type Owned = TreeArc<CastExpr>;
406 fn to_owned(&self) -> TreeArc<CastExpr> { TreeArc::cast(self.syntax.to_owned()) } 462 fn to_owned(&self) -> TreeArc<CastExpr> { TreeArc::cast(self.syntax.to_owned()) }
407} 463}
408 464
@@ -435,6 +491,10 @@ impl AstNode for Char {
435 } 491 }
436 } 492 }
437 fn syntax(&self) -> &SyntaxNode { &self.syntax } 493 fn syntax(&self) -> &SyntaxNode { &self.syntax }
494}
495
496impl ToOwned for Char {
497 type Owned = TreeArc<Char>;
438 fn to_owned(&self) -> TreeArc<Char> { TreeArc::cast(self.syntax.to_owned()) } 498 fn to_owned(&self) -> TreeArc<Char> { TreeArc::cast(self.syntax.to_owned()) }
439} 499}
440 500
@@ -460,6 +520,10 @@ impl AstNode for Comment {
460 } 520 }
461 } 521 }
462 fn syntax(&self) -> &SyntaxNode { &self.syntax } 522 fn syntax(&self) -> &SyntaxNode { &self.syntax }
523}
524
525impl ToOwned for Comment {
526 type Owned = TreeArc<Comment>;
463 fn to_owned(&self) -> TreeArc<Comment> { TreeArc::cast(self.syntax.to_owned()) } 527 fn to_owned(&self) -> TreeArc<Comment> { TreeArc::cast(self.syntax.to_owned()) }
464} 528}
465 529
@@ -485,6 +549,10 @@ impl AstNode for Condition {
485 } 549 }
486 } 550 }
487 fn syntax(&self) -> &SyntaxNode { &self.syntax } 551 fn syntax(&self) -> &SyntaxNode { &self.syntax }
552}
553
554impl ToOwned for Condition {
555 type Owned = TreeArc<Condition>;
488 fn to_owned(&self) -> TreeArc<Condition> { TreeArc::cast(self.syntax.to_owned()) } 556 fn to_owned(&self) -> TreeArc<Condition> { TreeArc::cast(self.syntax.to_owned()) }
489} 557}
490 558
@@ -517,6 +585,10 @@ impl AstNode for ConstDef {
517 } 585 }
518 } 586 }
519 fn syntax(&self) -> &SyntaxNode { &self.syntax } 587 fn syntax(&self) -> &SyntaxNode { &self.syntax }
588}
589
590impl ToOwned for ConstDef {
591 type Owned = TreeArc<ConstDef>;
520 fn to_owned(&self) -> TreeArc<ConstDef> { TreeArc::cast(self.syntax.to_owned()) } 592 fn to_owned(&self) -> TreeArc<ConstDef> { TreeArc::cast(self.syntax.to_owned()) }
521} 593}
522 594
@@ -546,6 +618,10 @@ impl AstNode for ContinueExpr {
546 } 618 }
547 } 619 }
548 fn syntax(&self) -> &SyntaxNode { &self.syntax } 620 fn syntax(&self) -> &SyntaxNode { &self.syntax }
621}
622
623impl ToOwned for ContinueExpr {
624 type Owned = TreeArc<ContinueExpr>;
549 fn to_owned(&self) -> TreeArc<ContinueExpr> { TreeArc::cast(self.syntax.to_owned()) } 625 fn to_owned(&self) -> TreeArc<ContinueExpr> { TreeArc::cast(self.syntax.to_owned()) }
550} 626}
551 627
@@ -570,6 +646,10 @@ impl AstNode for DynTraitType {
570 } 646 }
571 } 647 }
572 fn syntax(&self) -> &SyntaxNode { &self.syntax } 648 fn syntax(&self) -> &SyntaxNode { &self.syntax }
649}
650
651impl ToOwned for DynTraitType {
652 type Owned = TreeArc<DynTraitType>;
573 fn to_owned(&self) -> TreeArc<DynTraitType> { TreeArc::cast(self.syntax.to_owned()) } 653 fn to_owned(&self) -> TreeArc<DynTraitType> { TreeArc::cast(self.syntax.to_owned()) }
574} 654}
575 655
@@ -594,6 +674,10 @@ impl AstNode for EnumDef {
594 } 674 }
595 } 675 }
596 fn syntax(&self) -> &SyntaxNode { &self.syntax } 676 fn syntax(&self) -> &SyntaxNode { &self.syntax }
677}
678
679impl ToOwned for EnumDef {
680 type Owned = TreeArc<EnumDef>;
597 fn to_owned(&self) -> TreeArc<EnumDef> { TreeArc::cast(self.syntax.to_owned()) } 681 fn to_owned(&self) -> TreeArc<EnumDef> { TreeArc::cast(self.syntax.to_owned()) }
598} 682}
599 683
@@ -627,6 +711,10 @@ impl AstNode for EnumVariant {
627 } 711 }
628 } 712 }
629 fn syntax(&self) -> &SyntaxNode { &self.syntax } 713 fn syntax(&self) -> &SyntaxNode { &self.syntax }
714}
715
716impl ToOwned for EnumVariant {
717 type Owned = TreeArc<EnumVariant>;
630 fn to_owned(&self) -> TreeArc<EnumVariant> { TreeArc::cast(self.syntax.to_owned()) } 718 fn to_owned(&self) -> TreeArc<EnumVariant> { TreeArc::cast(self.syntax.to_owned()) }
631} 719}
632 720
@@ -657,6 +745,10 @@ impl AstNode for EnumVariantList {
657 } 745 }
658 } 746 }
659 fn syntax(&self) -> &SyntaxNode { &self.syntax } 747 fn syntax(&self) -> &SyntaxNode { &self.syntax }
748}
749
750impl ToOwned for EnumVariantList {
751 type Owned = TreeArc<EnumVariantList>;
660 fn to_owned(&self) -> TreeArc<EnumVariantList> { TreeArc::cast(self.syntax.to_owned()) } 752 fn to_owned(&self) -> TreeArc<EnumVariantList> { TreeArc::cast(self.syntax.to_owned()) }
661} 753}
662 754
@@ -742,6 +834,10 @@ impl AstNode for Expr {
742 } 834 }
743 } 835 }
744 fn syntax(&self) -> &SyntaxNode { &self.syntax } 836 fn syntax(&self) -> &SyntaxNode { &self.syntax }
837}
838
839impl ToOwned for Expr {
840 type Owned = TreeArc<Expr>;
745 fn to_owned(&self) -> TreeArc<Expr> { TreeArc::cast(self.syntax.to_owned()) } 841 fn to_owned(&self) -> TreeArc<Expr> { TreeArc::cast(self.syntax.to_owned()) }
746} 842}
747 843
@@ -800,6 +896,10 @@ impl AstNode for ExprStmt {
800 } 896 }
801 } 897 }
802 fn syntax(&self) -> &SyntaxNode { &self.syntax } 898 fn syntax(&self) -> &SyntaxNode { &self.syntax }
899}
900
901impl ToOwned for ExprStmt {
902 type Owned = TreeArc<ExprStmt>;
803 fn to_owned(&self) -> TreeArc<ExprStmt> { TreeArc::cast(self.syntax.to_owned()) } 903 fn to_owned(&self) -> TreeArc<ExprStmt> { TreeArc::cast(self.syntax.to_owned()) }
804} 904}
805 905
@@ -828,6 +928,10 @@ impl AstNode for ExternCrateItem {
828 } 928 }
829 } 929 }
830 fn syntax(&self) -> &SyntaxNode { &self.syntax } 930 fn syntax(&self) -> &SyntaxNode { &self.syntax }
931}
932
933impl ToOwned for ExternCrateItem {
934 type Owned = TreeArc<ExternCrateItem>;
831 fn to_owned(&self) -> TreeArc<ExternCrateItem> { TreeArc::cast(self.syntax.to_owned()) } 935 fn to_owned(&self) -> TreeArc<ExternCrateItem> { TreeArc::cast(self.syntax.to_owned()) }
832} 936}
833 937
@@ -852,6 +956,10 @@ impl AstNode for FalseKw {
852 } 956 }
853 } 957 }
854 fn syntax(&self) -> &SyntaxNode { &self.syntax } 958 fn syntax(&self) -> &SyntaxNode { &self.syntax }
959}
960
961impl ToOwned for FalseKw {
962 type Owned = TreeArc<FalseKw>;
855 fn to_owned(&self) -> TreeArc<FalseKw> { TreeArc::cast(self.syntax.to_owned()) } 963 fn to_owned(&self) -> TreeArc<FalseKw> { TreeArc::cast(self.syntax.to_owned()) }
856} 964}
857 965
@@ -877,6 +985,10 @@ impl AstNode for FieldExpr {
877 } 985 }
878 } 986 }
879 fn syntax(&self) -> &SyntaxNode { &self.syntax } 987 fn syntax(&self) -> &SyntaxNode { &self.syntax }
988}
989
990impl ToOwned for FieldExpr {
991 type Owned = TreeArc<FieldExpr>;
880 fn to_owned(&self) -> TreeArc<FieldExpr> { TreeArc::cast(self.syntax.to_owned()) } 992 fn to_owned(&self) -> TreeArc<FieldExpr> { TreeArc::cast(self.syntax.to_owned()) }
881} 993}
882 994
@@ -909,6 +1021,10 @@ impl AstNode for FieldPat {
909 } 1021 }
910 } 1022 }
911 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1023 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1024}
1025
1026impl ToOwned for FieldPat {
1027 type Owned = TreeArc<FieldPat>;
912 fn to_owned(&self) -> TreeArc<FieldPat> { TreeArc::cast(self.syntax.to_owned()) } 1028 fn to_owned(&self) -> TreeArc<FieldPat> { TreeArc::cast(self.syntax.to_owned()) }
913} 1029}
914 1030
@@ -938,6 +1054,10 @@ impl AstNode for FieldPatList {
938 } 1054 }
939 } 1055 }
940 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1056 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1057}
1058
1059impl ToOwned for FieldPatList {
1060 type Owned = TreeArc<FieldPatList>;
941 fn to_owned(&self) -> TreeArc<FieldPatList> { TreeArc::cast(self.syntax.to_owned()) } 1061 fn to_owned(&self) -> TreeArc<FieldPatList> { TreeArc::cast(self.syntax.to_owned()) }
942} 1062}
943 1063
@@ -970,6 +1090,10 @@ impl AstNode for FloatNumber {
970 } 1090 }
971 } 1091 }
972 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1092 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1093}
1094
1095impl ToOwned for FloatNumber {
1096 type Owned = TreeArc<FloatNumber>;
973 fn to_owned(&self) -> TreeArc<FloatNumber> { TreeArc::cast(self.syntax.to_owned()) } 1097 fn to_owned(&self) -> TreeArc<FloatNumber> { TreeArc::cast(self.syntax.to_owned()) }
974} 1098}
975 1099
@@ -995,6 +1119,10 @@ impl AstNode for FnDef {
995 } 1119 }
996 } 1120 }
997 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1121 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1122}
1123
1124impl ToOwned for FnDef {
1125 type Owned = TreeArc<FnDef>;
998 fn to_owned(&self) -> TreeArc<FnDef> { TreeArc::cast(self.syntax.to_owned()) } 1126 fn to_owned(&self) -> TreeArc<FnDef> { TreeArc::cast(self.syntax.to_owned()) }
999} 1127}
1000 1128
@@ -1036,6 +1164,10 @@ impl AstNode for FnPointerType {
1036 } 1164 }
1037 } 1165 }
1038 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1166 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1167}
1168
1169impl ToOwned for FnPointerType {
1170 type Owned = TreeArc<FnPointerType>;
1039 fn to_owned(&self) -> TreeArc<FnPointerType> { TreeArc::cast(self.syntax.to_owned()) } 1171 fn to_owned(&self) -> TreeArc<FnPointerType> { TreeArc::cast(self.syntax.to_owned()) }
1040} 1172}
1041 1173
@@ -1068,6 +1200,10 @@ impl AstNode for ForExpr {
1068 } 1200 }
1069 } 1201 }
1070 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1202 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1203}
1204
1205impl ToOwned for ForExpr {
1206 type Owned = TreeArc<ForExpr>;
1071 fn to_owned(&self) -> TreeArc<ForExpr> { TreeArc::cast(self.syntax.to_owned()) } 1207 fn to_owned(&self) -> TreeArc<ForExpr> { TreeArc::cast(self.syntax.to_owned()) }
1072} 1208}
1073 1209
@@ -1101,6 +1237,10 @@ impl AstNode for ForType {
1101 } 1237 }
1102 } 1238 }
1103 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1239 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1240}
1241
1242impl ToOwned for ForType {
1243 type Owned = TreeArc<ForType>;
1104 fn to_owned(&self) -> TreeArc<ForType> { TreeArc::cast(self.syntax.to_owned()) } 1244 fn to_owned(&self) -> TreeArc<ForType> { TreeArc::cast(self.syntax.to_owned()) }
1105} 1245}
1106 1246
@@ -1129,6 +1269,10 @@ impl AstNode for IfExpr {
1129 } 1269 }
1130 } 1270 }
1131 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1271 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1272}
1273
1274impl ToOwned for IfExpr {
1275 type Owned = TreeArc<IfExpr>;
1132 fn to_owned(&self) -> TreeArc<IfExpr> { TreeArc::cast(self.syntax.to_owned()) } 1276 fn to_owned(&self) -> TreeArc<IfExpr> { TreeArc::cast(self.syntax.to_owned()) }
1133} 1277}
1134 1278
@@ -1157,6 +1301,10 @@ impl AstNode for ImplBlock {
1157 } 1301 }
1158 } 1302 }
1159 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1303 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1304}
1305
1306impl ToOwned for ImplBlock {
1307 type Owned = TreeArc<ImplBlock>;
1160 fn to_owned(&self) -> TreeArc<ImplBlock> { TreeArc::cast(self.syntax.to_owned()) } 1308 fn to_owned(&self) -> TreeArc<ImplBlock> { TreeArc::cast(self.syntax.to_owned()) }
1161} 1309}
1162 1310
@@ -1194,6 +1342,10 @@ impl AstNode for ImplItem {
1194 } 1342 }
1195 } 1343 }
1196 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1344 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1345}
1346
1347impl ToOwned for ImplItem {
1348 type Owned = TreeArc<ImplItem>;
1197 fn to_owned(&self) -> TreeArc<ImplItem> { TreeArc::cast(self.syntax.to_owned()) } 1349 fn to_owned(&self) -> TreeArc<ImplItem> { TreeArc::cast(self.syntax.to_owned()) }
1198} 1350}
1199 1351
@@ -1228,6 +1380,10 @@ impl AstNode for ImplTraitType {
1228 } 1380 }
1229 } 1381 }
1230 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1382 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1383}
1384
1385impl ToOwned for ImplTraitType {
1386 type Owned = TreeArc<ImplTraitType>;
1231 fn to_owned(&self) -> TreeArc<ImplTraitType> { TreeArc::cast(self.syntax.to_owned()) } 1387 fn to_owned(&self) -> TreeArc<ImplTraitType> { TreeArc::cast(self.syntax.to_owned()) }
1232} 1388}
1233 1389
@@ -1252,6 +1408,10 @@ impl AstNode for IndexExpr {
1252 } 1408 }
1253 } 1409 }
1254 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1410 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1411}
1412
1413impl ToOwned for IndexExpr {
1414 type Owned = TreeArc<IndexExpr>;
1255 fn to_owned(&self) -> TreeArc<IndexExpr> { TreeArc::cast(self.syntax.to_owned()) } 1415 fn to_owned(&self) -> TreeArc<IndexExpr> { TreeArc::cast(self.syntax.to_owned()) }
1256} 1416}
1257 1417
@@ -1276,6 +1436,10 @@ impl AstNode for IntNumber {
1276 } 1436 }
1277 } 1437 }
1278 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1438 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1439}
1440
1441impl ToOwned for IntNumber {
1442 type Owned = TreeArc<IntNumber>;
1279 fn to_owned(&self) -> TreeArc<IntNumber> { TreeArc::cast(self.syntax.to_owned()) } 1443 fn to_owned(&self) -> TreeArc<IntNumber> { TreeArc::cast(self.syntax.to_owned()) }
1280} 1444}
1281 1445
@@ -1301,6 +1465,10 @@ impl AstNode for ItemList {
1301 } 1465 }
1302 } 1466 }
1303 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1467 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1468}
1469
1470impl ToOwned for ItemList {
1471 type Owned = TreeArc<ItemList>;
1304 fn to_owned(&self) -> TreeArc<ItemList> { TreeArc::cast(self.syntax.to_owned()) } 1472 fn to_owned(&self) -> TreeArc<ItemList> { TreeArc::cast(self.syntax.to_owned()) }
1305} 1473}
1306 1474
@@ -1331,6 +1499,10 @@ impl AstNode for Label {
1331 } 1499 }
1332 } 1500 }
1333 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1501 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1502}
1503
1504impl ToOwned for Label {
1505 type Owned = TreeArc<Label>;
1334 fn to_owned(&self) -> TreeArc<Label> { TreeArc::cast(self.syntax.to_owned()) } 1506 fn to_owned(&self) -> TreeArc<Label> { TreeArc::cast(self.syntax.to_owned()) }
1335} 1507}
1336 1508
@@ -1355,6 +1527,10 @@ impl AstNode for LambdaExpr {
1355 } 1527 }
1356 } 1528 }
1357 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1529 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1530}
1531
1532impl ToOwned for LambdaExpr {
1533 type Owned = TreeArc<LambdaExpr>;
1358 fn to_owned(&self) -> TreeArc<LambdaExpr> { TreeArc::cast(self.syntax.to_owned()) } 1534 fn to_owned(&self) -> TreeArc<LambdaExpr> { TreeArc::cast(self.syntax.to_owned()) }
1359} 1535}
1360 1536
@@ -1387,6 +1563,10 @@ impl AstNode for LetStmt {
1387 } 1563 }
1388 } 1564 }
1389 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1565 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1566}
1567
1568impl ToOwned for LetStmt {
1569 type Owned = TreeArc<LetStmt>;
1390 fn to_owned(&self) -> TreeArc<LetStmt> { TreeArc::cast(self.syntax.to_owned()) } 1570 fn to_owned(&self) -> TreeArc<LetStmt> { TreeArc::cast(self.syntax.to_owned()) }
1391} 1571}
1392 1572
@@ -1423,6 +1603,10 @@ impl AstNode for Lifetime {
1423 } 1603 }
1424 } 1604 }
1425 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1605 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1606}
1607
1608impl ToOwned for Lifetime {
1609 type Owned = TreeArc<Lifetime>;
1426 fn to_owned(&self) -> TreeArc<Lifetime> { TreeArc::cast(self.syntax.to_owned()) } 1610 fn to_owned(&self) -> TreeArc<Lifetime> { TreeArc::cast(self.syntax.to_owned()) }
1427} 1611}
1428 1612
@@ -1448,6 +1632,10 @@ impl AstNode for LifetimeArg {
1448 } 1632 }
1449 } 1633 }
1450 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1634 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1635}
1636
1637impl ToOwned for LifetimeArg {
1638 type Owned = TreeArc<LifetimeArg>;
1451 fn to_owned(&self) -> TreeArc<LifetimeArg> { TreeArc::cast(self.syntax.to_owned()) } 1639 fn to_owned(&self) -> TreeArc<LifetimeArg> { TreeArc::cast(self.syntax.to_owned()) }
1452} 1640}
1453 1641
@@ -1476,6 +1664,10 @@ impl AstNode for LifetimeParam {
1476 } 1664 }
1477 } 1665 }
1478 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1666 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1667}
1668
1669impl ToOwned for LifetimeParam {
1670 type Owned = TreeArc<LifetimeParam>;
1479 fn to_owned(&self) -> TreeArc<LifetimeParam> { TreeArc::cast(self.syntax.to_owned()) } 1671 fn to_owned(&self) -> TreeArc<LifetimeParam> { TreeArc::cast(self.syntax.to_owned()) }
1480} 1672}
1481 1673
@@ -1504,6 +1696,10 @@ impl AstNode for Literal {
1504 } 1696 }
1505 } 1697 }
1506 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1698 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1699}
1700
1701impl ToOwned for Literal {
1702 type Owned = TreeArc<Literal>;
1507 fn to_owned(&self) -> TreeArc<Literal> { TreeArc::cast(self.syntax.to_owned()) } 1703 fn to_owned(&self) -> TreeArc<Literal> { TreeArc::cast(self.syntax.to_owned()) }
1508} 1704}
1509 1705
@@ -1555,6 +1751,10 @@ impl AstNode for LiteralExpr {
1555 } 1751 }
1556 } 1752 }
1557 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1753 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1754}
1755
1756impl ToOwned for LiteralExpr {
1757 type Owned = TreeArc<LiteralExpr>;
1558 fn to_owned(&self) -> TreeArc<LiteralExpr> { TreeArc::cast(self.syntax.to_owned()) } 1758 fn to_owned(&self) -> TreeArc<LiteralExpr> { TreeArc::cast(self.syntax.to_owned()) }
1559} 1759}
1560 1760
@@ -1596,6 +1796,10 @@ impl AstNode for LoopExpr {
1596 } 1796 }
1597 } 1797 }
1598 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1798 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1799}
1800
1801impl ToOwned for LoopExpr {
1802 type Owned = TreeArc<LoopExpr>;
1599 fn to_owned(&self) -> TreeArc<LoopExpr> { TreeArc::cast(self.syntax.to_owned()) } 1803 fn to_owned(&self) -> TreeArc<LoopExpr> { TreeArc::cast(self.syntax.to_owned()) }
1600} 1804}
1601 1805
@@ -1621,6 +1825,10 @@ impl AstNode for MacroCall {
1621 } 1825 }
1622 } 1826 }
1623 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1827 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1828}
1829
1830impl ToOwned for MacroCall {
1831 type Owned = TreeArc<MacroCall>;
1624 fn to_owned(&self) -> TreeArc<MacroCall> { TreeArc::cast(self.syntax.to_owned()) } 1832 fn to_owned(&self) -> TreeArc<MacroCall> { TreeArc::cast(self.syntax.to_owned()) }
1625} 1833}
1626 1834
@@ -1653,6 +1861,10 @@ impl AstNode for MatchArm {
1653 } 1861 }
1654 } 1862 }
1655 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1863 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1864}
1865
1866impl ToOwned for MatchArm {
1867 type Owned = TreeArc<MatchArm>;
1656 fn to_owned(&self) -> TreeArc<MatchArm> { TreeArc::cast(self.syntax.to_owned()) } 1868 fn to_owned(&self) -> TreeArc<MatchArm> { TreeArc::cast(self.syntax.to_owned()) }
1657} 1869}
1658 1870
@@ -1689,6 +1901,10 @@ impl AstNode for MatchArmList {
1689 } 1901 }
1690 } 1902 }
1691 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1903 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1904}
1905
1906impl ToOwned for MatchArmList {
1907 type Owned = TreeArc<MatchArmList>;
1692 fn to_owned(&self) -> TreeArc<MatchArmList> { TreeArc::cast(self.syntax.to_owned()) } 1908 fn to_owned(&self) -> TreeArc<MatchArmList> { TreeArc::cast(self.syntax.to_owned()) }
1693} 1909}
1694 1910
@@ -1717,6 +1933,10 @@ impl AstNode for MatchExpr {
1717 } 1933 }
1718 } 1934 }
1719 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1935 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1936}
1937
1938impl ToOwned for MatchExpr {
1939 type Owned = TreeArc<MatchExpr>;
1720 fn to_owned(&self) -> TreeArc<MatchExpr> { TreeArc::cast(self.syntax.to_owned()) } 1940 fn to_owned(&self) -> TreeArc<MatchExpr> { TreeArc::cast(self.syntax.to_owned()) }
1721} 1941}
1722 1942
@@ -1749,6 +1969,10 @@ impl AstNode for MatchGuard {
1749 } 1969 }
1750 } 1970 }
1751 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1971 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1972}
1973
1974impl ToOwned for MatchGuard {
1975 type Owned = TreeArc<MatchGuard>;
1752 fn to_owned(&self) -> TreeArc<MatchGuard> { TreeArc::cast(self.syntax.to_owned()) } 1976 fn to_owned(&self) -> TreeArc<MatchGuard> { TreeArc::cast(self.syntax.to_owned()) }
1753} 1977}
1754 1978
@@ -1773,6 +1997,10 @@ impl AstNode for MethodCallExpr {
1773 } 1997 }
1774 } 1998 }
1775 fn syntax(&self) -> &SyntaxNode { &self.syntax } 1999 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2000}
2001
2002impl ToOwned for MethodCallExpr {
2003 type Owned = TreeArc<MethodCallExpr>;
1776 fn to_owned(&self) -> TreeArc<MethodCallExpr> { TreeArc::cast(self.syntax.to_owned()) } 2004 fn to_owned(&self) -> TreeArc<MethodCallExpr> { TreeArc::cast(self.syntax.to_owned()) }
1777} 2005}
1778 2006
@@ -1806,6 +2034,10 @@ impl AstNode for Module {
1806 } 2034 }
1807 } 2035 }
1808 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2036 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2037}
2038
2039impl ToOwned for Module {
2040 type Owned = TreeArc<Module>;
1809 fn to_owned(&self) -> TreeArc<Module> { TreeArc::cast(self.syntax.to_owned()) } 2041 fn to_owned(&self) -> TreeArc<Module> { TreeArc::cast(self.syntax.to_owned()) }
1810} 2042}
1811 2043
@@ -1863,6 +2095,10 @@ impl AstNode for ModuleItem {
1863 } 2095 }
1864 } 2096 }
1865 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2097 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2098}
2099
2100impl ToOwned for ModuleItem {
2101 type Owned = TreeArc<ModuleItem>;
1866 fn to_owned(&self) -> TreeArc<ModuleItem> { TreeArc::cast(self.syntax.to_owned()) } 2102 fn to_owned(&self) -> TreeArc<ModuleItem> { TreeArc::cast(self.syntax.to_owned()) }
1867} 2103}
1868 2104
@@ -1905,6 +2141,10 @@ impl AstNode for Name {
1905 } 2141 }
1906 } 2142 }
1907 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2143 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2144}
2145
2146impl ToOwned for Name {
2147 type Owned = TreeArc<Name>;
1908 fn to_owned(&self) -> TreeArc<Name> { TreeArc::cast(self.syntax.to_owned()) } 2148 fn to_owned(&self) -> TreeArc<Name> { TreeArc::cast(self.syntax.to_owned()) }
1909} 2149}
1910 2150
@@ -1929,6 +2169,10 @@ impl AstNode for NameRef {
1929 } 2169 }
1930 } 2170 }
1931 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2171 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2172}
2173
2174impl ToOwned for NameRef {
2175 type Owned = TreeArc<NameRef>;
1932 fn to_owned(&self) -> TreeArc<NameRef> { TreeArc::cast(self.syntax.to_owned()) } 2176 fn to_owned(&self) -> TreeArc<NameRef> { TreeArc::cast(self.syntax.to_owned()) }
1933} 2177}
1934 2178
@@ -1953,6 +2197,10 @@ impl AstNode for NamedField {
1953 } 2197 }
1954 } 2198 }
1955 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2199 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2200}
2201
2202impl ToOwned for NamedField {
2203 type Owned = TreeArc<NamedField>;
1956 fn to_owned(&self) -> TreeArc<NamedField> { TreeArc::cast(self.syntax.to_owned()) } 2204 fn to_owned(&self) -> TreeArc<NamedField> { TreeArc::cast(self.syntax.to_owned()) }
1957} 2205}
1958 2206
@@ -1985,6 +2233,10 @@ impl AstNode for NamedFieldDef {
1985 } 2233 }
1986 } 2234 }
1987 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2235 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2236}
2237
2238impl ToOwned for NamedFieldDef {
2239 type Owned = TreeArc<NamedFieldDef>;
1988 fn to_owned(&self) -> TreeArc<NamedFieldDef> { TreeArc::cast(self.syntax.to_owned()) } 2240 fn to_owned(&self) -> TreeArc<NamedFieldDef> { TreeArc::cast(self.syntax.to_owned()) }
1989} 2241}
1990 2242
@@ -2016,6 +2268,10 @@ impl AstNode for NamedFieldDefList {
2016 } 2268 }
2017 } 2269 }
2018 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2270 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2271}
2272
2273impl ToOwned for NamedFieldDefList {
2274 type Owned = TreeArc<NamedFieldDefList>;
2019 fn to_owned(&self) -> TreeArc<NamedFieldDefList> { TreeArc::cast(self.syntax.to_owned()) } 2275 fn to_owned(&self) -> TreeArc<NamedFieldDefList> { TreeArc::cast(self.syntax.to_owned()) }
2020} 2276}
2021 2277
@@ -2044,6 +2300,10 @@ impl AstNode for NamedFieldList {
2044 } 2300 }
2045 } 2301 }
2046 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2302 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2303}
2304
2305impl ToOwned for NamedFieldList {
2306 type Owned = TreeArc<NamedFieldList>;
2047 fn to_owned(&self) -> TreeArc<NamedFieldList> { TreeArc::cast(self.syntax.to_owned()) } 2307 fn to_owned(&self) -> TreeArc<NamedFieldList> { TreeArc::cast(self.syntax.to_owned()) }
2048} 2308}
2049 2309
@@ -2072,6 +2332,10 @@ impl AstNode for NeverType {
2072 } 2332 }
2073 } 2333 }
2074 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2334 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2335}
2336
2337impl ToOwned for NeverType {
2338 type Owned = TreeArc<NeverType>;
2075 fn to_owned(&self) -> TreeArc<NeverType> { TreeArc::cast(self.syntax.to_owned()) } 2339 fn to_owned(&self) -> TreeArc<NeverType> { TreeArc::cast(self.syntax.to_owned()) }
2076} 2340}
2077 2341
@@ -2103,6 +2367,10 @@ impl AstNode for NominalDef {
2103 } 2367 }
2104 } 2368 }
2105 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2369 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2370}
2371
2372impl ToOwned for NominalDef {
2373 type Owned = TreeArc<NominalDef>;
2106 fn to_owned(&self) -> TreeArc<NominalDef> { TreeArc::cast(self.syntax.to_owned()) } 2374 fn to_owned(&self) -> TreeArc<NominalDef> { TreeArc::cast(self.syntax.to_owned()) }
2107} 2375}
2108 2376
@@ -2139,6 +2407,10 @@ impl AstNode for Param {
2139 } 2407 }
2140 } 2408 }
2141 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2409 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2410}
2411
2412impl ToOwned for Param {
2413 type Owned = TreeArc<Param>;
2142 fn to_owned(&self) -> TreeArc<Param> { TreeArc::cast(self.syntax.to_owned()) } 2414 fn to_owned(&self) -> TreeArc<Param> { TreeArc::cast(self.syntax.to_owned()) }
2143} 2415}
2144 2416
@@ -2171,6 +2443,10 @@ impl AstNode for ParamList {
2171 } 2443 }
2172 } 2444 }
2173 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2445 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2446}
2447
2448impl ToOwned for ParamList {
2449 type Owned = TreeArc<ParamList>;
2174 fn to_owned(&self) -> TreeArc<ParamList> { TreeArc::cast(self.syntax.to_owned()) } 2450 fn to_owned(&self) -> TreeArc<ParamList> { TreeArc::cast(self.syntax.to_owned()) }
2175} 2451}
2176 2452
@@ -2203,6 +2479,10 @@ impl AstNode for ParenExpr {
2203 } 2479 }
2204 } 2480 }
2205 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2481 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2482}
2483
2484impl ToOwned for ParenExpr {
2485 type Owned = TreeArc<ParenExpr>;
2206 fn to_owned(&self) -> TreeArc<ParenExpr> { TreeArc::cast(self.syntax.to_owned()) } 2486 fn to_owned(&self) -> TreeArc<ParenExpr> { TreeArc::cast(self.syntax.to_owned()) }
2207} 2487}
2208 2488
@@ -2231,6 +2511,10 @@ impl AstNode for ParenType {
2231 } 2511 }
2232 } 2512 }
2233 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2513 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2514}
2515
2516impl ToOwned for ParenType {
2517 type Owned = TreeArc<ParenType>;
2234 fn to_owned(&self) -> TreeArc<ParenType> { TreeArc::cast(self.syntax.to_owned()) } 2518 fn to_owned(&self) -> TreeArc<ParenType> { TreeArc::cast(self.syntax.to_owned()) }
2235} 2519}
2236 2520
@@ -2280,6 +2564,10 @@ impl AstNode for Pat {
2280 } 2564 }
2281 } 2565 }
2282 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2566 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2567}
2568
2569impl ToOwned for Pat {
2570 type Owned = TreeArc<Pat>;
2283 fn to_owned(&self) -> TreeArc<Pat> { TreeArc::cast(self.syntax.to_owned()) } 2571 fn to_owned(&self) -> TreeArc<Pat> { TreeArc::cast(self.syntax.to_owned()) }
2284} 2572}
2285 2573
@@ -2320,6 +2608,10 @@ impl AstNode for Path {
2320 } 2608 }
2321 } 2609 }
2322 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2610 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2611}
2612
2613impl ToOwned for Path {
2614 type Owned = TreeArc<Path>;
2323 fn to_owned(&self) -> TreeArc<Path> { TreeArc::cast(self.syntax.to_owned()) } 2615 fn to_owned(&self) -> TreeArc<Path> { TreeArc::cast(self.syntax.to_owned()) }
2324} 2616}
2325 2617
@@ -2352,6 +2644,10 @@ impl AstNode for PathExpr {
2352 } 2644 }
2353 } 2645 }
2354 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2646 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2647}
2648
2649impl ToOwned for PathExpr {
2650 type Owned = TreeArc<PathExpr>;
2355 fn to_owned(&self) -> TreeArc<PathExpr> { TreeArc::cast(self.syntax.to_owned()) } 2651 fn to_owned(&self) -> TreeArc<PathExpr> { TreeArc::cast(self.syntax.to_owned()) }
2356} 2652}
2357 2653
@@ -2380,6 +2676,10 @@ impl AstNode for PathPat {
2380 } 2676 }
2381 } 2677 }
2382 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2678 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2679}
2680
2681impl ToOwned for PathPat {
2682 type Owned = TreeArc<PathPat>;
2383 fn to_owned(&self) -> TreeArc<PathPat> { TreeArc::cast(self.syntax.to_owned()) } 2683 fn to_owned(&self) -> TreeArc<PathPat> { TreeArc::cast(self.syntax.to_owned()) }
2384} 2684}
2385 2685
@@ -2408,6 +2708,10 @@ impl AstNode for PathSegment {
2408 } 2708 }
2409 } 2709 }
2410 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2710 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2711}
2712
2713impl ToOwned for PathSegment {
2714 type Owned = TreeArc<PathSegment>;
2411 fn to_owned(&self) -> TreeArc<PathSegment> { TreeArc::cast(self.syntax.to_owned()) } 2715 fn to_owned(&self) -> TreeArc<PathSegment> { TreeArc::cast(self.syntax.to_owned()) }
2412} 2716}
2413 2717
@@ -2440,6 +2744,10 @@ impl AstNode for PathType {
2440 } 2744 }
2441 } 2745 }
2442 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2746 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2747}
2748
2749impl ToOwned for PathType {
2750 type Owned = TreeArc<PathType>;
2443 fn to_owned(&self) -> TreeArc<PathType> { TreeArc::cast(self.syntax.to_owned()) } 2751 fn to_owned(&self) -> TreeArc<PathType> { TreeArc::cast(self.syntax.to_owned()) }
2444} 2752}
2445 2753
@@ -2468,6 +2776,10 @@ impl AstNode for PlaceholderPat {
2468 } 2776 }
2469 } 2777 }
2470 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2778 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2779}
2780
2781impl ToOwned for PlaceholderPat {
2782 type Owned = TreeArc<PlaceholderPat>;
2471 fn to_owned(&self) -> TreeArc<PlaceholderPat> { TreeArc::cast(self.syntax.to_owned()) } 2783 fn to_owned(&self) -> TreeArc<PlaceholderPat> { TreeArc::cast(self.syntax.to_owned()) }
2472} 2784}
2473 2785
@@ -2492,6 +2804,10 @@ impl AstNode for PlaceholderType {
2492 } 2804 }
2493 } 2805 }
2494 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2806 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2807}
2808
2809impl ToOwned for PlaceholderType {
2810 type Owned = TreeArc<PlaceholderType>;
2495 fn to_owned(&self) -> TreeArc<PlaceholderType> { TreeArc::cast(self.syntax.to_owned()) } 2811 fn to_owned(&self) -> TreeArc<PlaceholderType> { TreeArc::cast(self.syntax.to_owned()) }
2496} 2812}
2497 2813
@@ -2516,6 +2832,10 @@ impl AstNode for PointerType {
2516 } 2832 }
2517 } 2833 }
2518 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2834 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2835}
2836
2837impl ToOwned for PointerType {
2838 type Owned = TreeArc<PointerType>;
2519 fn to_owned(&self) -> TreeArc<PointerType> { TreeArc::cast(self.syntax.to_owned()) } 2839 fn to_owned(&self) -> TreeArc<PointerType> { TreeArc::cast(self.syntax.to_owned()) }
2520} 2840}
2521 2841
@@ -2544,6 +2864,10 @@ impl AstNode for PosField {
2544 } 2864 }
2545 } 2865 }
2546 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2866 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2867}
2868
2869impl ToOwned for PosField {
2870 type Owned = TreeArc<PosField>;
2547 fn to_owned(&self) -> TreeArc<PosField> { TreeArc::cast(self.syntax.to_owned()) } 2871 fn to_owned(&self) -> TreeArc<PosField> { TreeArc::cast(self.syntax.to_owned()) }
2548} 2872}
2549 2873
@@ -2574,6 +2898,10 @@ impl AstNode for PosFieldList {
2574 } 2898 }
2575 } 2899 }
2576 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2900 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2901}
2902
2903impl ToOwned for PosFieldList {
2904 type Owned = TreeArc<PosFieldList>;
2577 fn to_owned(&self) -> TreeArc<PosFieldList> { TreeArc::cast(self.syntax.to_owned()) } 2905 fn to_owned(&self) -> TreeArc<PosFieldList> { TreeArc::cast(self.syntax.to_owned()) }
2578} 2906}
2579 2907
@@ -2602,6 +2930,10 @@ impl AstNode for PrefixExpr {
2602 } 2930 }
2603 } 2931 }
2604 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2932 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2933}
2934
2935impl ToOwned for PrefixExpr {
2936 type Owned = TreeArc<PrefixExpr>;
2605 fn to_owned(&self) -> TreeArc<PrefixExpr> { TreeArc::cast(self.syntax.to_owned()) } 2937 fn to_owned(&self) -> TreeArc<PrefixExpr> { TreeArc::cast(self.syntax.to_owned()) }
2606} 2938}
2607 2939
@@ -2630,6 +2962,10 @@ impl AstNode for RangeExpr {
2630 } 2962 }
2631 } 2963 }
2632 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2964 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2965}
2966
2967impl ToOwned for RangeExpr {
2968 type Owned = TreeArc<RangeExpr>;
2633 fn to_owned(&self) -> TreeArc<RangeExpr> { TreeArc::cast(self.syntax.to_owned()) } 2969 fn to_owned(&self) -> TreeArc<RangeExpr> { TreeArc::cast(self.syntax.to_owned()) }
2634} 2970}
2635 2971
@@ -2654,6 +2990,10 @@ impl AstNode for RangePat {
2654 } 2990 }
2655 } 2991 }
2656 fn syntax(&self) -> &SyntaxNode { &self.syntax } 2992 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2993}
2994
2995impl ToOwned for RangePat {
2996 type Owned = TreeArc<RangePat>;
2657 fn to_owned(&self) -> TreeArc<RangePat> { TreeArc::cast(self.syntax.to_owned()) } 2997 fn to_owned(&self) -> TreeArc<RangePat> { TreeArc::cast(self.syntax.to_owned()) }
2658} 2998}
2659 2999
@@ -2678,6 +3018,10 @@ impl AstNode for RawByteString {
2678 } 3018 }
2679 } 3019 }
2680 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3020 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3021}
3022
3023impl ToOwned for RawByteString {
3024 type Owned = TreeArc<RawByteString>;
2681 fn to_owned(&self) -> TreeArc<RawByteString> { TreeArc::cast(self.syntax.to_owned()) } 3025 fn to_owned(&self) -> TreeArc<RawByteString> { TreeArc::cast(self.syntax.to_owned()) }
2682} 3026}
2683 3027
@@ -2703,6 +3047,10 @@ impl AstNode for RawString {
2703 } 3047 }
2704 } 3048 }
2705 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3049 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3050}
3051
3052impl ToOwned for RawString {
3053 type Owned = TreeArc<RawString>;
2706 fn to_owned(&self) -> TreeArc<RawString> { TreeArc::cast(self.syntax.to_owned()) } 3054 fn to_owned(&self) -> TreeArc<RawString> { TreeArc::cast(self.syntax.to_owned()) }
2707} 3055}
2708 3056
@@ -2728,6 +3076,10 @@ impl AstNode for RefExpr {
2728 } 3076 }
2729 } 3077 }
2730 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3078 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3079}
3080
3081impl ToOwned for RefExpr {
3082 type Owned = TreeArc<RefExpr>;
2731 fn to_owned(&self) -> TreeArc<RefExpr> { TreeArc::cast(self.syntax.to_owned()) } 3083 fn to_owned(&self) -> TreeArc<RefExpr> { TreeArc::cast(self.syntax.to_owned()) }
2732} 3084}
2733 3085
@@ -2756,6 +3108,10 @@ impl AstNode for RefPat {
2756 } 3108 }
2757 } 3109 }
2758 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3110 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3111}
3112
3113impl ToOwned for RefPat {
3114 type Owned = TreeArc<RefPat>;
2759 fn to_owned(&self) -> TreeArc<RefPat> { TreeArc::cast(self.syntax.to_owned()) } 3115 fn to_owned(&self) -> TreeArc<RefPat> { TreeArc::cast(self.syntax.to_owned()) }
2760} 3116}
2761 3117
@@ -2784,6 +3140,10 @@ impl AstNode for ReferenceType {
2784 } 3140 }
2785 } 3141 }
2786 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3142 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3143}
3144
3145impl ToOwned for ReferenceType {
3146 type Owned = TreeArc<ReferenceType>;
2787 fn to_owned(&self) -> TreeArc<ReferenceType> { TreeArc::cast(self.syntax.to_owned()) } 3147 fn to_owned(&self) -> TreeArc<ReferenceType> { TreeArc::cast(self.syntax.to_owned()) }
2788} 3148}
2789 3149
@@ -2812,6 +3172,10 @@ impl AstNode for RetType {
2812 } 3172 }
2813 } 3173 }
2814 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3174 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3175}
3176
3177impl ToOwned for RetType {
3178 type Owned = TreeArc<RetType>;
2815 fn to_owned(&self) -> TreeArc<RetType> { TreeArc::cast(self.syntax.to_owned()) } 3179 fn to_owned(&self) -> TreeArc<RetType> { TreeArc::cast(self.syntax.to_owned()) }
2816} 3180}
2817 3181
@@ -2840,6 +3204,10 @@ impl AstNode for ReturnExpr {
2840 } 3204 }
2841 } 3205 }
2842 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3206 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3207}
3208
3209impl ToOwned for ReturnExpr {
3210 type Owned = TreeArc<ReturnExpr>;
2843 fn to_owned(&self) -> TreeArc<ReturnExpr> { TreeArc::cast(self.syntax.to_owned()) } 3211 fn to_owned(&self) -> TreeArc<ReturnExpr> { TreeArc::cast(self.syntax.to_owned()) }
2844} 3212}
2845 3213
@@ -2868,6 +3236,10 @@ impl AstNode for SelfKw {
2868 } 3236 }
2869 } 3237 }
2870 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3238 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3239}
3240
3241impl ToOwned for SelfKw {
3242 type Owned = TreeArc<SelfKw>;
2871 fn to_owned(&self) -> TreeArc<SelfKw> { TreeArc::cast(self.syntax.to_owned()) } 3243 fn to_owned(&self) -> TreeArc<SelfKw> { TreeArc::cast(self.syntax.to_owned()) }
2872} 3244}
2873 3245
@@ -2892,6 +3264,10 @@ impl AstNode for SelfParam {
2892 } 3264 }
2893 } 3265 }
2894 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3266 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3267}
3268
3269impl ToOwned for SelfParam {
3270 type Owned = TreeArc<SelfParam>;
2895 fn to_owned(&self) -> TreeArc<SelfParam> { TreeArc::cast(self.syntax.to_owned()) } 3271 fn to_owned(&self) -> TreeArc<SelfParam> { TreeArc::cast(self.syntax.to_owned()) }
2896} 3272}
2897 3273
@@ -2924,6 +3300,10 @@ impl AstNode for SlicePat {
2924 } 3300 }
2925 } 3301 }
2926 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3302 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3303}
3304
3305impl ToOwned for SlicePat {
3306 type Owned = TreeArc<SlicePat>;
2927 fn to_owned(&self) -> TreeArc<SlicePat> { TreeArc::cast(self.syntax.to_owned()) } 3307 fn to_owned(&self) -> TreeArc<SlicePat> { TreeArc::cast(self.syntax.to_owned()) }
2928} 3308}
2929 3309
@@ -2948,6 +3328,10 @@ impl AstNode for SliceType {
2948 } 3328 }
2949 } 3329 }
2950 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3330 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3331}
3332
3333impl ToOwned for SliceType {
3334 type Owned = TreeArc<SliceType>;
2951 fn to_owned(&self) -> TreeArc<SliceType> { TreeArc::cast(self.syntax.to_owned()) } 3335 fn to_owned(&self) -> TreeArc<SliceType> { TreeArc::cast(self.syntax.to_owned()) }
2952} 3336}
2953 3337
@@ -2976,6 +3360,10 @@ impl AstNode for SourceFile {
2976 } 3360 }
2977 } 3361 }
2978 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3362 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3363}
3364
3365impl ToOwned for SourceFile {
3366 type Owned = TreeArc<SourceFile>;
2979 fn to_owned(&self) -> TreeArc<SourceFile> { TreeArc::cast(self.syntax.to_owned()) } 3367 fn to_owned(&self) -> TreeArc<SourceFile> { TreeArc::cast(self.syntax.to_owned()) }
2980} 3368}
2981 3369
@@ -3006,6 +3394,10 @@ impl AstNode for StaticDef {
3006 } 3394 }
3007 } 3395 }
3008 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3396 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3397}
3398
3399impl ToOwned for StaticDef {
3400 type Owned = TreeArc<StaticDef>;
3009 fn to_owned(&self) -> TreeArc<StaticDef> { TreeArc::cast(self.syntax.to_owned()) } 3401 fn to_owned(&self) -> TreeArc<StaticDef> { TreeArc::cast(self.syntax.to_owned()) }
3010} 3402}
3011 3403
@@ -3042,6 +3434,10 @@ impl AstNode for Stmt {
3042 } 3434 }
3043 } 3435 }
3044 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3436 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3437}
3438
3439impl ToOwned for Stmt {
3440 type Owned = TreeArc<Stmt>;
3045 fn to_owned(&self) -> TreeArc<Stmt> { TreeArc::cast(self.syntax.to_owned()) } 3441 fn to_owned(&self) -> TreeArc<Stmt> { TreeArc::cast(self.syntax.to_owned()) }
3046} 3442}
3047 3443
@@ -3075,6 +3471,10 @@ impl AstNode for String {
3075 } 3471 }
3076 } 3472 }
3077 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3473 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3474}
3475
3476impl ToOwned for String {
3477 type Owned = TreeArc<String>;
3078 fn to_owned(&self) -> TreeArc<String> { TreeArc::cast(self.syntax.to_owned()) } 3478 fn to_owned(&self) -> TreeArc<String> { TreeArc::cast(self.syntax.to_owned()) }
3079} 3479}
3080 3480
@@ -3100,6 +3500,10 @@ impl AstNode for StructDef {
3100 } 3500 }
3101 } 3501 }
3102 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3502 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3503}
3504
3505impl ToOwned for StructDef {
3506 type Owned = TreeArc<StructDef>;
3103 fn to_owned(&self) -> TreeArc<StructDef> { TreeArc::cast(self.syntax.to_owned()) } 3507 fn to_owned(&self) -> TreeArc<StructDef> { TreeArc::cast(self.syntax.to_owned()) }
3104} 3508}
3105 3509
@@ -3129,6 +3533,10 @@ impl AstNode for StructLit {
3129 } 3533 }
3130 } 3534 }
3131 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3535 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3536}
3537
3538impl ToOwned for StructLit {
3539 type Owned = TreeArc<StructLit>;
3132 fn to_owned(&self) -> TreeArc<StructLit> { TreeArc::cast(self.syntax.to_owned()) } 3540 fn to_owned(&self) -> TreeArc<StructLit> { TreeArc::cast(self.syntax.to_owned()) }
3133} 3541}
3134 3542
@@ -3165,6 +3573,10 @@ impl AstNode for StructPat {
3165 } 3573 }
3166 } 3574 }
3167 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3575 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3576}
3577
3578impl ToOwned for StructPat {
3579 type Owned = TreeArc<StructPat>;
3168 fn to_owned(&self) -> TreeArc<StructPat> { TreeArc::cast(self.syntax.to_owned()) } 3580 fn to_owned(&self) -> TreeArc<StructPat> { TreeArc::cast(self.syntax.to_owned()) }
3169} 3581}
3170 3582
@@ -3197,6 +3609,10 @@ impl AstNode for TokenTree {
3197 } 3609 }
3198 } 3610 }
3199 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3611 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3612}
3613
3614impl ToOwned for TokenTree {
3615 type Owned = TreeArc<TokenTree>;
3200 fn to_owned(&self) -> TreeArc<TokenTree> { TreeArc::cast(self.syntax.to_owned()) } 3616 fn to_owned(&self) -> TreeArc<TokenTree> { TreeArc::cast(self.syntax.to_owned()) }
3201} 3617}
3202 3618
@@ -3221,6 +3637,10 @@ impl AstNode for TraitDef {
3221 } 3637 }
3222 } 3638 }
3223 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3639 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3640}
3641
3642impl ToOwned for TraitDef {
3643 type Owned = TreeArc<TraitDef>;
3224 fn to_owned(&self) -> TreeArc<TraitDef> { TreeArc::cast(self.syntax.to_owned()) } 3644 fn to_owned(&self) -> TreeArc<TraitDef> { TreeArc::cast(self.syntax.to_owned()) }
3225} 3645}
3226 3646
@@ -3250,6 +3670,10 @@ impl AstNode for TrueKw {
3250 } 3670 }
3251 } 3671 }
3252 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3672 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3673}
3674
3675impl ToOwned for TrueKw {
3676 type Owned = TreeArc<TrueKw>;
3253 fn to_owned(&self) -> TreeArc<TrueKw> { TreeArc::cast(self.syntax.to_owned()) } 3677 fn to_owned(&self) -> TreeArc<TrueKw> { TreeArc::cast(self.syntax.to_owned()) }
3254} 3678}
3255 3679
@@ -3275,6 +3699,10 @@ impl AstNode for TryExpr {
3275 } 3699 }
3276 } 3700 }
3277 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3701 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3702}
3703
3704impl ToOwned for TryExpr {
3705 type Owned = TreeArc<TryExpr>;
3278 fn to_owned(&self) -> TreeArc<TryExpr> { TreeArc::cast(self.syntax.to_owned()) } 3706 fn to_owned(&self) -> TreeArc<TryExpr> { TreeArc::cast(self.syntax.to_owned()) }
3279} 3707}
3280 3708
@@ -3303,6 +3731,10 @@ impl AstNode for TupleExpr {
3303 } 3731 }
3304 } 3732 }
3305 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3733 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3734}
3735
3736impl ToOwned for TupleExpr {
3737 type Owned = TreeArc<TupleExpr>;
3306 fn to_owned(&self) -> TreeArc<TupleExpr> { TreeArc::cast(self.syntax.to_owned()) } 3738 fn to_owned(&self) -> TreeArc<TupleExpr> { TreeArc::cast(self.syntax.to_owned()) }
3307} 3739}
3308 3740
@@ -3331,6 +3763,10 @@ impl AstNode for TuplePat {
3331 } 3763 }
3332 } 3764 }
3333 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3765 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3766}
3767
3768impl ToOwned for TuplePat {
3769 type Owned = TreeArc<TuplePat>;
3334 fn to_owned(&self) -> TreeArc<TuplePat> { TreeArc::cast(self.syntax.to_owned()) } 3770 fn to_owned(&self) -> TreeArc<TuplePat> { TreeArc::cast(self.syntax.to_owned()) }
3335} 3771}
3336 3772
@@ -3359,6 +3795,10 @@ impl AstNode for TupleStructPat {
3359 } 3795 }
3360 } 3796 }
3361 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3797 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3798}
3799
3800impl ToOwned for TupleStructPat {
3801 type Owned = TreeArc<TupleStructPat>;
3362 fn to_owned(&self) -> TreeArc<TupleStructPat> { TreeArc::cast(self.syntax.to_owned()) } 3802 fn to_owned(&self) -> TreeArc<TupleStructPat> { TreeArc::cast(self.syntax.to_owned()) }
3363} 3803}
3364 3804
@@ -3391,6 +3831,10 @@ impl AstNode for TupleType {
3391 } 3831 }
3392 } 3832 }
3393 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3833 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3834}
3835
3836impl ToOwned for TupleType {
3837 type Owned = TreeArc<TupleType>;
3394 fn to_owned(&self) -> TreeArc<TupleType> { TreeArc::cast(self.syntax.to_owned()) } 3838 fn to_owned(&self) -> TreeArc<TupleType> { TreeArc::cast(self.syntax.to_owned()) }
3395} 3839}
3396 3840
@@ -3419,6 +3863,10 @@ impl AstNode for TypeArg {
3419 } 3863 }
3420 } 3864 }
3421 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3865 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3866}
3867
3868impl ToOwned for TypeArg {
3869 type Owned = TreeArc<TypeArg>;
3422 fn to_owned(&self) -> TreeArc<TypeArg> { TreeArc::cast(self.syntax.to_owned()) } 3870 fn to_owned(&self) -> TreeArc<TypeArg> { TreeArc::cast(self.syntax.to_owned()) }
3423} 3871}
3424 3872
@@ -3447,6 +3895,10 @@ impl AstNode for TypeArgList {
3447 } 3895 }
3448 } 3896 }
3449 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3897 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3898}
3899
3900impl ToOwned for TypeArgList {
3901 type Owned = TreeArc<TypeArgList>;
3450 fn to_owned(&self) -> TreeArc<TypeArgList> { TreeArc::cast(self.syntax.to_owned()) } 3902 fn to_owned(&self) -> TreeArc<TypeArgList> { TreeArc::cast(self.syntax.to_owned()) }
3451} 3903}
3452 3904
@@ -3483,6 +3935,10 @@ impl AstNode for TypeDef {
3483 } 3935 }
3484 } 3936 }
3485 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3937 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3938}
3939
3940impl ToOwned for TypeDef {
3941 type Owned = TreeArc<TypeDef>;
3486 fn to_owned(&self) -> TreeArc<TypeDef> { TreeArc::cast(self.syntax.to_owned()) } 3942 fn to_owned(&self) -> TreeArc<TypeDef> { TreeArc::cast(self.syntax.to_owned()) }
3487} 3943}
3488 3944
@@ -3512,6 +3968,10 @@ impl AstNode for TypeParam {
3512 } 3968 }
3513 } 3969 }
3514 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3970 fn syntax(&self) -> &SyntaxNode { &self.syntax }
3971}
3972
3973impl ToOwned for TypeParam {
3974 type Owned = TreeArc<TypeParam>;
3515 fn to_owned(&self) -> TreeArc<TypeParam> { TreeArc::cast(self.syntax.to_owned()) } 3975 fn to_owned(&self) -> TreeArc<TypeParam> { TreeArc::cast(self.syntax.to_owned()) }
3516} 3976}
3517 3977
@@ -3537,6 +3997,10 @@ impl AstNode for TypeParamList {
3537 } 3997 }
3538 } 3998 }
3539 fn syntax(&self) -> &SyntaxNode { &self.syntax } 3999 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4000}
4001
4002impl ToOwned for TypeParamList {
4003 type Owned = TreeArc<TypeParamList>;
3540 fn to_owned(&self) -> TreeArc<TypeParamList> { TreeArc::cast(self.syntax.to_owned()) } 4004 fn to_owned(&self) -> TreeArc<TypeParamList> { TreeArc::cast(self.syntax.to_owned()) }
3541} 4005}
3542 4006
@@ -3598,6 +4062,10 @@ impl AstNode for TypeRef {
3598 } 4062 }
3599 } 4063 }
3600 fn syntax(&self) -> &SyntaxNode { &self.syntax } 4064 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4065}
4066
4067impl ToOwned for TypeRef {
4068 type Owned = TreeArc<TypeRef>;
3601 fn to_owned(&self) -> TreeArc<TypeRef> { TreeArc::cast(self.syntax.to_owned()) } 4069 fn to_owned(&self) -> TreeArc<TypeRef> { TreeArc::cast(self.syntax.to_owned()) }
3602} 4070}
3603 4071
@@ -3642,6 +4110,10 @@ impl AstNode for UseItem {
3642 } 4110 }
3643 } 4111 }
3644 fn syntax(&self) -> &SyntaxNode { &self.syntax } 4112 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4113}
4114
4115impl ToOwned for UseItem {
4116 type Owned = TreeArc<UseItem>;
3645 fn to_owned(&self) -> TreeArc<UseItem> { TreeArc::cast(self.syntax.to_owned()) } 4117 fn to_owned(&self) -> TreeArc<UseItem> { TreeArc::cast(self.syntax.to_owned()) }
3646} 4118}
3647 4119
@@ -3670,6 +4142,10 @@ impl AstNode for UseTree {
3670 } 4142 }
3671 } 4143 }
3672 fn syntax(&self) -> &SyntaxNode { &self.syntax } 4144 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4145}
4146
4147impl ToOwned for UseTree {
4148 type Owned = TreeArc<UseTree>;
3673 fn to_owned(&self) -> TreeArc<UseTree> { TreeArc::cast(self.syntax.to_owned()) } 4149 fn to_owned(&self) -> TreeArc<UseTree> { TreeArc::cast(self.syntax.to_owned()) }
3674} 4150}
3675 4151
@@ -3702,6 +4178,10 @@ impl AstNode for UseTreeList {
3702 } 4178 }
3703 } 4179 }
3704 fn syntax(&self) -> &SyntaxNode { &self.syntax } 4180 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4181}
4182
4183impl ToOwned for UseTreeList {
4184 type Owned = TreeArc<UseTreeList>;
3705 fn to_owned(&self) -> TreeArc<UseTreeList> { TreeArc::cast(self.syntax.to_owned()) } 4185 fn to_owned(&self) -> TreeArc<UseTreeList> { TreeArc::cast(self.syntax.to_owned()) }
3706} 4186}
3707 4187
@@ -3730,6 +4210,10 @@ impl AstNode for Visibility {
3730 } 4210 }
3731 } 4211 }
3732 fn syntax(&self) -> &SyntaxNode { &self.syntax } 4212 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4213}
4214
4215impl ToOwned for Visibility {
4216 type Owned = TreeArc<Visibility>;
3733 fn to_owned(&self) -> TreeArc<Visibility> { TreeArc::cast(self.syntax.to_owned()) } 4217 fn to_owned(&self) -> TreeArc<Visibility> { TreeArc::cast(self.syntax.to_owned()) }
3734} 4218}
3735 4219
@@ -3754,6 +4238,10 @@ impl AstNode for WhereClause {
3754 } 4238 }
3755 } 4239 }
3756 fn syntax(&self) -> &SyntaxNode { &self.syntax } 4240 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4241}
4242
4243impl ToOwned for WhereClause {
4244 type Owned = TreeArc<WhereClause>;
3757 fn to_owned(&self) -> TreeArc<WhereClause> { TreeArc::cast(self.syntax.to_owned()) } 4245 fn to_owned(&self) -> TreeArc<WhereClause> { TreeArc::cast(self.syntax.to_owned()) }
3758} 4246}
3759 4247
@@ -3778,6 +4266,10 @@ impl AstNode for WhileExpr {
3778 } 4266 }
3779 } 4267 }
3780 fn syntax(&self) -> &SyntaxNode { &self.syntax } 4268 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4269}
4270
4271impl ToOwned for WhileExpr {
4272 type Owned = TreeArc<WhileExpr>;
3781 fn to_owned(&self) -> TreeArc<WhileExpr> { TreeArc::cast(self.syntax.to_owned()) } 4273 fn to_owned(&self) -> TreeArc<WhileExpr> { TreeArc::cast(self.syntax.to_owned()) }
3782} 4274}
3783 4275
@@ -3807,6 +4299,10 @@ impl AstNode for Whitespace {
3807 } 4299 }
3808 } 4300 }
3809 fn syntax(&self) -> &SyntaxNode { &self.syntax } 4301 fn syntax(&self) -> &SyntaxNode { &self.syntax }
4302}
4303
4304impl ToOwned for Whitespace {
4305 type Owned = TreeArc<Whitespace>;
3810 fn to_owned(&self) -> TreeArc<Whitespace> { TreeArc::cast(self.syntax.to_owned()) } 4306 fn to_owned(&self) -> TreeArc<Whitespace> { TreeArc::cast(self.syntax.to_owned()) }
3811} 4307}
3812 4308
diff --git a/crates/ra_syntax/src/ast/generated.rs.tera b/crates/ra_syntax/src/ast/generated.rs.tera
index bf9db4ee8..ea0fc35fd 100644
--- a/crates/ra_syntax/src/ast/generated.rs.tera
+++ b/crates/ra_syntax/src/ast/generated.rs.tera
@@ -48,6 +48,10 @@ impl AstNode for {{ node }} {
48 } 48 }
49 } 49 }
50 fn syntax(&self) -> &SyntaxNode { &self.syntax } 50 fn syntax(&self) -> &SyntaxNode { &self.syntax }
51}
52
53impl ToOwned for {{ node }} {
54 type Owned = TreeArc<{{ node }}>;
51 fn to_owned(&self) -> TreeArc<{{ node }}> { TreeArc::cast(self.syntax.to_owned()) } 55 fn to_owned(&self) -> TreeArc<{{ node }}> { TreeArc::cast(self.syntax.to_owned()) }
52} 56}
53 57
@@ -79,6 +83,10 @@ impl AstNode for {{ node }} {
79 } 83 }
80 } 84 }
81 fn syntax(&self) -> &SyntaxNode { &self.syntax } 85 fn syntax(&self) -> &SyntaxNode { &self.syntax }
86}
87
88impl ToOwned for {{ node }} {
89 type Owned = TreeArc<{{ node }}>;
82 fn to_owned(&self) -> TreeArc<{{ node }}> { TreeArc::cast(self.syntax.to_owned()) } 90 fn to_owned(&self) -> TreeArc<{{ node }}> { TreeArc::cast(self.syntax.to_owned()) }
83} 91}
84 92
diff --git a/crates/ra_syntax/src/yellow.rs b/crates/ra_syntax/src/yellow.rs
index a7bfb80e2..ed48739f8 100644
--- a/crates/ra_syntax/src/yellow.rs
+++ b/crates/ra_syntax/src/yellow.rs
@@ -2,10 +2,11 @@ mod builder;
2pub mod syntax_error; 2pub mod syntax_error;
3mod syntax_text; 3mod syntax_text;
4 4
5use std::{fmt, borrow::Borrow};
6
5use self::syntax_text::SyntaxText; 7use self::syntax_text::SyntaxText;
6use crate::{SmolStr, SyntaxKind, TextRange}; 8use crate::{SmolStr, SyntaxKind, TextRange};
7use rowan::{Types, TransparentNewType}; 9use rowan::{Types, TransparentNewType};
8use std::fmt;
9 10
10pub(crate) use self::builder::GreenBuilder; 11pub(crate) use self::builder::GreenBuilder;
11pub use self::syntax_error::{SyntaxError, SyntaxErrorKind, Location}; 12pub use self::syntax_error::{SyntaxError, SyntaxErrorKind, Location};
@@ -25,6 +26,12 @@ pub struct TreeArc<T: TransparentNewType<Repr = rowan::SyntaxNode<RaTypes>>>(
25 pub(crate) rowan::TreeArc<RaTypes, T>, 26 pub(crate) rowan::TreeArc<RaTypes, T>,
26); 27);
27 28
29impl<T: TransparentNewType<Repr = rowan::SyntaxNode<RaTypes>>> Borrow<T> for TreeArc<T> {
30 fn borrow(&self) -> &T {
31 &*self
32 }
33}
34
28impl<T> TreeArc<T> 35impl<T> TreeArc<T>
29where 36where
30 T: TransparentNewType<Repr = rowan::SyntaxNode<RaTypes>>, 37 T: TransparentNewType<Repr = rowan::SyntaxNode<RaTypes>>,
@@ -124,6 +131,14 @@ impl SyntaxNode {
124 } 131 }
125} 132}
126 133
134impl ToOwned for SyntaxNode {
135 type Owned = TreeArc<SyntaxNode>;
136 fn to_owned(&self) -> TreeArc<SyntaxNode> {
137 let ptr = TreeArc(self.0.to_owned());
138 TreeArc::cast(ptr)
139 }
140}
141
127impl SyntaxNode { 142impl SyntaxNode {
128 pub(crate) fn root_data(&self) -> &Vec<SyntaxError> { 143 pub(crate) fn root_data(&self) -> &Vec<SyntaxError> {
129 self.0.root_data() 144 self.0.root_data()
@@ -133,11 +148,6 @@ impl SyntaxNode {
133 self.0.replace_self(replacement) 148 self.0.replace_self(replacement)
134 } 149 }
135 150
136 pub fn to_owned(&self) -> TreeArc<SyntaxNode> {
137 let ptr = TreeArc(self.0.to_owned());
138 TreeArc::cast(ptr)
139 }
140
141 pub fn kind(&self) -> SyntaxKind { 151 pub fn kind(&self) -> SyntaxKind {
142 self.0.kind() 152 self.0.kind()
143 } 153 }