diff options
author | Aleksey Kladov <[email protected]> | 2019-01-08 12:27:00 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-01-08 12:28:08 +0000 |
commit | 2d0ab52212f62345ba9f9d5040c553e59460b349 (patch) | |
tree | 52d0212de29792eea89deaf1fff7efeca15dc299 /crates/ra_hir/src/code_model_api.rs | |
parent | 71c7936932c7471ce968223c20fd9bb812524c7a (diff) |
move variants to API
Diffstat (limited to 'crates/ra_hir/src/code_model_api.rs')
-rw-r--r-- | crates/ra_hir/src/code_model_api.rs | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index 25d710c73..3bb42ac58 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs | |||
@@ -4,7 +4,12 @@ use relative_path::RelativePathBuf; | |||
4 | use ra_db::{CrateId, Cancelable, FileId}; | 4 | use ra_db::{CrateId, Cancelable, FileId}; |
5 | use ra_syntax::{ast, TreePtr, SyntaxNode}; | 5 | use ra_syntax::{ast, TreePtr, SyntaxNode}; |
6 | 6 | ||
7 | use crate::{Name, db::HirDatabase, DefId, Path, PerNs, nameres::ModuleScope, adt::VariantData}; | 7 | use crate::{ |
8 | Name, DefId, Path, PerNs, | ||
9 | type_ref::TypeRef, | ||
10 | nameres::ModuleScope, | ||
11 | db::HirDatabase, | ||
12 | }; | ||
8 | 13 | ||
9 | /// hir::Crate describes a single crate. It's the main inteface with which | 14 | /// hir::Crate describes a single crate. It's the main inteface with which |
10 | /// crate's dependencies interact. Mostly, it should be just a proxy for the | 15 | /// crate's dependencies interact. Mostly, it should be just a proxy for the |
@@ -114,6 +119,30 @@ impl Module { | |||
114 | } | 119 | } |
115 | } | 120 | } |
116 | 121 | ||
122 | /// A single field of an enum variant or struct | ||
123 | #[derive(Debug, Clone, PartialEq, Eq)] | ||
124 | pub struct StructField { | ||
125 | pub(crate) name: Name, | ||
126 | pub(crate) type_ref: TypeRef, | ||
127 | } | ||
128 | |||
129 | impl StructField { | ||
130 | pub fn name(&self) -> &Name { | ||
131 | &self.name | ||
132 | } | ||
133 | pub fn type_ref(&self) -> &TypeRef { | ||
134 | &self.type_ref | ||
135 | } | ||
136 | } | ||
137 | |||
138 | /// Fields of an enum variant or struct | ||
139 | #[derive(Debug, Clone, PartialEq, Eq)] | ||
140 | pub enum VariantData { | ||
141 | Struct(Vec<StructField>), | ||
142 | Tuple(Vec<StructField>), | ||
143 | Unit, | ||
144 | } | ||
145 | |||
117 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 146 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
118 | pub struct Struct { | 147 | pub struct Struct { |
119 | pub(crate) def_id: DefId, | 148 | pub(crate) def_id: DefId, |