diff options
Diffstat (limited to 'crates/ra_syntax/src')
-rw-r--r-- | crates/ra_syntax/src/ast/generated.rs | 37 | ||||
-rw-r--r-- | crates/ra_syntax/src/grammar.ron | 3 |
2 files changed, 38 insertions, 2 deletions
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs index a8a231ef3..591ac8ca3 100644 --- a/crates/ra_syntax/src/ast/generated.rs +++ b/crates/ra_syntax/src/ast/generated.rs | |||
@@ -532,6 +532,29 @@ impl AstNode for ContinueExpr { | |||
532 | } | 532 | } |
533 | impl ContinueExpr {} | 533 | impl ContinueExpr {} |
534 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 534 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
535 | pub struct DotDotPat { | ||
536 | pub(crate) syntax: SyntaxNode, | ||
537 | } | ||
538 | impl AstNode for DotDotPat { | ||
539 | fn can_cast(kind: SyntaxKind) -> bool { | ||
540 | match kind { | ||
541 | DOT_DOT_PAT => true, | ||
542 | _ => false, | ||
543 | } | ||
544 | } | ||
545 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
546 | if Self::can_cast(syntax.kind()) { | ||
547 | Some(Self { syntax }) | ||
548 | } else { | ||
549 | None | ||
550 | } | ||
551 | } | ||
552 | fn syntax(&self) -> &SyntaxNode { | ||
553 | &self.syntax | ||
554 | } | ||
555 | } | ||
556 | impl DotDotPat {} | ||
557 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
535 | pub struct DynTraitType { | 558 | pub struct DynTraitType { |
536 | pub(crate) syntax: SyntaxNode, | 559 | pub(crate) syntax: SyntaxNode, |
537 | } | 560 | } |
@@ -2128,6 +2151,7 @@ pub enum Pat { | |||
2128 | BoxPat(BoxPat), | 2151 | BoxPat(BoxPat), |
2129 | BindPat(BindPat), | 2152 | BindPat(BindPat), |
2130 | PlaceholderPat(PlaceholderPat), | 2153 | PlaceholderPat(PlaceholderPat), |
2154 | DotDotPat(DotDotPat), | ||
2131 | PathPat(PathPat), | 2155 | PathPat(PathPat), |
2132 | RecordPat(RecordPat), | 2156 | RecordPat(RecordPat), |
2133 | TupleStructPat(TupleStructPat), | 2157 | TupleStructPat(TupleStructPat), |
@@ -2156,6 +2180,11 @@ impl From<PlaceholderPat> for Pat { | |||
2156 | Pat::PlaceholderPat(node) | 2180 | Pat::PlaceholderPat(node) |
2157 | } | 2181 | } |
2158 | } | 2182 | } |
2183 | impl From<DotDotPat> for Pat { | ||
2184 | fn from(node: DotDotPat) -> Pat { | ||
2185 | Pat::DotDotPat(node) | ||
2186 | } | ||
2187 | } | ||
2159 | impl From<PathPat> for Pat { | 2188 | impl From<PathPat> for Pat { |
2160 | fn from(node: PathPat) -> Pat { | 2189 | fn from(node: PathPat) -> Pat { |
2161 | Pat::PathPat(node) | 2190 | Pat::PathPat(node) |
@@ -2194,8 +2223,10 @@ impl From<LiteralPat> for Pat { | |||
2194 | impl AstNode for Pat { | 2223 | impl AstNode for Pat { |
2195 | fn can_cast(kind: SyntaxKind) -> bool { | 2224 | fn can_cast(kind: SyntaxKind) -> bool { |
2196 | match kind { | 2225 | match kind { |
2197 | REF_PAT | BOX_PAT | BIND_PAT | PLACEHOLDER_PAT | PATH_PAT | RECORD_PAT | 2226 | REF_PAT | BOX_PAT | BIND_PAT | PLACEHOLDER_PAT | DOT_DOT_PAT | PATH_PAT |
2198 | | TUPLE_STRUCT_PAT | TUPLE_PAT | SLICE_PAT | RANGE_PAT | LITERAL_PAT => true, | 2227 | | RECORD_PAT | TUPLE_STRUCT_PAT | TUPLE_PAT | SLICE_PAT | RANGE_PAT | LITERAL_PAT => { |
2228 | true | ||
2229 | } | ||
2199 | _ => false, | 2230 | _ => false, |
2200 | } | 2231 | } |
2201 | } | 2232 | } |
@@ -2205,6 +2236,7 @@ impl AstNode for Pat { | |||
2205 | BOX_PAT => Pat::BoxPat(BoxPat { syntax }), | 2236 | BOX_PAT => Pat::BoxPat(BoxPat { syntax }), |
2206 | BIND_PAT => Pat::BindPat(BindPat { syntax }), | 2237 | BIND_PAT => Pat::BindPat(BindPat { syntax }), |
2207 | PLACEHOLDER_PAT => Pat::PlaceholderPat(PlaceholderPat { syntax }), | 2238 | PLACEHOLDER_PAT => Pat::PlaceholderPat(PlaceholderPat { syntax }), |
2239 | DOT_DOT_PAT => Pat::DotDotPat(DotDotPat { syntax }), | ||
2208 | PATH_PAT => Pat::PathPat(PathPat { syntax }), | 2240 | PATH_PAT => Pat::PathPat(PathPat { syntax }), |
2209 | RECORD_PAT => Pat::RecordPat(RecordPat { syntax }), | 2241 | RECORD_PAT => Pat::RecordPat(RecordPat { syntax }), |
2210 | TUPLE_STRUCT_PAT => Pat::TupleStructPat(TupleStructPat { syntax }), | 2242 | TUPLE_STRUCT_PAT => Pat::TupleStructPat(TupleStructPat { syntax }), |
@@ -2222,6 +2254,7 @@ impl AstNode for Pat { | |||
2222 | Pat::BoxPat(it) => &it.syntax, | 2254 | Pat::BoxPat(it) => &it.syntax, |
2223 | Pat::BindPat(it) => &it.syntax, | 2255 | Pat::BindPat(it) => &it.syntax, |
2224 | Pat::PlaceholderPat(it) => &it.syntax, | 2256 | Pat::PlaceholderPat(it) => &it.syntax, |
2257 | Pat::DotDotPat(it) => &it.syntax, | ||
2225 | Pat::PathPat(it) => &it.syntax, | 2258 | Pat::PathPat(it) => &it.syntax, |
2226 | Pat::RecordPat(it) => &it.syntax, | 2259 | Pat::RecordPat(it) => &it.syntax, |
2227 | Pat::TupleStructPat(it) => &it.syntax, | 2260 | Pat::TupleStructPat(it) => &it.syntax, |
diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron index 8f064711d..08cc6eeea 100644 --- a/crates/ra_syntax/src/grammar.ron +++ b/crates/ra_syntax/src/grammar.ron | |||
@@ -161,6 +161,7 @@ Grammar( | |||
161 | "BOX_PAT", | 161 | "BOX_PAT", |
162 | "BIND_PAT", | 162 | "BIND_PAT", |
163 | "PLACEHOLDER_PAT", | 163 | "PLACEHOLDER_PAT", |
164 | "DOT_DOT_PAT", | ||
164 | "PATH_PAT", | 165 | "PATH_PAT", |
165 | "RECORD_PAT", | 166 | "RECORD_PAT", |
166 | "RECORD_FIELD_PAT_LIST", | 167 | "RECORD_FIELD_PAT_LIST", |
@@ -532,6 +533,7 @@ Grammar( | |||
532 | traits: ["NameOwner"] | 533 | traits: ["NameOwner"] |
533 | ), | 534 | ), |
534 | "PlaceholderPat": (), | 535 | "PlaceholderPat": (), |
536 | "DotDotPat": (), | ||
535 | "PathPat": ( options: [ "Path" ] ), | 537 | "PathPat": ( options: [ "Path" ] ), |
536 | "RecordPat": ( options: ["RecordFieldPatList", "Path"] ), | 538 | "RecordPat": ( options: ["RecordFieldPatList", "Path"] ), |
537 | "RecordFieldPatList": ( | 539 | "RecordFieldPatList": ( |
@@ -559,6 +561,7 @@ Grammar( | |||
559 | "BoxPat", | 561 | "BoxPat", |
560 | "BindPat", | 562 | "BindPat", |
561 | "PlaceholderPat", | 563 | "PlaceholderPat", |
564 | "DotDotPat", | ||
562 | "PathPat", | 565 | "PathPat", |
563 | "RecordPat", | 566 | "RecordPat", |
564 | "TupleStructPat", | 567 | "TupleStructPat", |