diff options
author | Aleksey Kladov <[email protected]> | 2019-09-12 22:31:04 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-09-12 22:31:04 +0100 |
commit | bcf30d389c3744ab517372431eb7e1e1dfcc50df (patch) | |
tree | 8b34525b463ba62d9b1acc90a790a438ba8f9ee0 /crates/ra_hir/src/lib.rs | |
parent | 45117c63884366ee82102a782a62a09fefff746b (diff) |
generalize impl_froms to nested enums
Diffstat (limited to 'crates/ra_hir/src/lib.rs')
-rw-r--r-- | crates/ra_hir/src/lib.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs index 2fe1a658e..639e97c3d 100644 --- a/crates/ra_hir/src/lib.rs +++ b/crates/ra_hir/src/lib.rs | |||
@@ -8,13 +8,20 @@ | |||
8 | //! applied. So, the relation between syntax and HIR is many-to-one. | 8 | //! applied. So, the relation between syntax and HIR is many-to-one. |
9 | 9 | ||
10 | macro_rules! impl_froms { | 10 | macro_rules! impl_froms { |
11 | ($e:ident: $($v:ident),*) => { | 11 | ($e:ident: $($v:ident $(($($sv:ident),*))?),*) => { |
12 | $( | 12 | $( |
13 | impl From<$v> for $e { | 13 | impl From<$v> for $e { |
14 | fn from(it: $v) -> $e { | 14 | fn from(it: $v) -> $e { |
15 | $e::$v(it) | 15 | $e::$v(it) |
16 | } | 16 | } |
17 | } | 17 | } |
18 | $($( | ||
19 | impl From<$sv> for $e { | ||
20 | fn from(it: $sv) -> $e { | ||
21 | $e::$v($v::$sv(it)) | ||
22 | } | ||
23 | } | ||
24 | )*)? | ||
18 | )* | 25 | )* |
19 | } | 26 | } |
20 | } | 27 | } |