aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/display/navigation_target.rs
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-05-23 18:23:17 +0100
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-05-23 18:23:17 +0100
commit1dc9adc6e27d603f05f794adda91bca8b6dec8ac (patch)
treec2ebe02614abf66618ed3975f7108cd03689416a /crates/ra_ide_api/src/display/navigation_target.rs
parentef00b5af1c7a7a7cac685eff661a10252825d84a (diff)
parent5d54aa678153d0af0edc8b4dd2d74709d10ca66c (diff)
Merge #1290
1290: Add Union to code_model r=matklad a=matklad @flodiebold I am conflicted about two possible implementation approaches: * we can add a separate `struct Union` to code model * we can add `fn is_union(&self)` to existing `Struct` This PR goes with the former approach, because it seems like Unions are sufficiently different in semantics to warrant a separate types. Which is in contrast to Syntax Tree, where both structs and unions share the same node kind, because their syntax is the same. What would be the right thing to do here? Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_ide_api/src/display/navigation_target.rs')
-rw-r--r--crates/ra_ide_api/src/display/navigation_target.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/crates/ra_ide_api/src/display/navigation_target.rs b/crates/ra_ide_api/src/display/navigation_target.rs
index 1c694cbc9..7f81483f7 100644
--- a/crates/ra_ide_api/src/display/navigation_target.rs
+++ b/crates/ra_ide_api/src/display/navigation_target.rs
@@ -154,6 +154,10 @@ impl NavigationTarget {
154 let (file_id, node) = s.source(db); 154 let (file_id, node) = s.source(db);
155 NavigationTarget::from_named(file_id.original_file(db), &*node) 155 NavigationTarget::from_named(file_id.original_file(db), &*node)
156 } 156 }
157 hir::AdtDef::Union(s) => {
158 let (file_id, node) = s.source(db);
159 NavigationTarget::from_named(file_id.original_file(db), &*node)
160 }
157 hir::AdtDef::Enum(s) => { 161 hir::AdtDef::Enum(s) => {
158 let (file_id, node) = s.source(db); 162 let (file_id, node) = s.source(db);
159 NavigationTarget::from_named(file_id.original_file(db), &*node) 163 NavigationTarget::from_named(file_id.original_file(db), &*node)
@@ -169,6 +173,10 @@ impl NavigationTarget {
169 let (file_id, node) = s.source(db); 173 let (file_id, node) = s.source(db);
170 NavigationTarget::from_named(file_id.original_file(db), &*node) 174 NavigationTarget::from_named(file_id.original_file(db), &*node)
171 } 175 }
176 hir::ModuleDef::Union(s) => {
177 let (file_id, node) = s.source(db);
178 NavigationTarget::from_named(file_id.original_file(db), &*node)
179 }
172 hir::ModuleDef::Const(s) => { 180 hir::ModuleDef::Const(s) => {
173 let (file_id, node) = s.source(db); 181 let (file_id, node) = s.source(db);
174 NavigationTarget::from_named(file_id.original_file(db), &*node) 182 NavigationTarget::from_named(file_id.original_file(db), &*node)