diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-09-16 07:09:30 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-09-16 07:09:30 +0100 |
commit | 6b33b90091b0cecd4c092d34451aba9f2492063c (patch) | |
tree | dd87d2b240d84fe76fe585442fea1812d0d148dd /crates | |
parent | 2d79a1ad83cc39075c7c9e3230973013c8c58b17 (diff) | |
parent | cd8155b7f73006ee7dae8b423557f25fd92912df (diff) |
Merge #1852
1852: Gracefully handle `const _` items in `ConstData` r=ecstatic-morse a=ecstatic-morse
A follow-up to #1847.
This makes the `name` field of `ConstData` optional.
Co-authored-by: Dylan MacKenzie <[email protected]>
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ra_hir/src/code_model.rs | 8 | ||||
-rw-r--r-- | crates/ra_hir/src/ty/infer.rs | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index dad1c93c4..84e15385c 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs | |||
@@ -773,13 +773,13 @@ impl Const { | |||
773 | 773 | ||
774 | #[derive(Debug, Clone, PartialEq, Eq)] | 774 | #[derive(Debug, Clone, PartialEq, Eq)] |
775 | pub struct ConstData { | 775 | pub struct ConstData { |
776 | pub(crate) name: Name, | 776 | pub(crate) name: Option<Name>, |
777 | pub(crate) type_ref: TypeRef, | 777 | pub(crate) type_ref: TypeRef, |
778 | } | 778 | } |
779 | 779 | ||
780 | impl ConstData { | 780 | impl ConstData { |
781 | pub fn name(&self) -> &Name { | 781 | pub fn name(&self) -> Option<&Name> { |
782 | &self.name | 782 | self.name.as_ref() |
783 | } | 783 | } |
784 | 784 | ||
785 | pub fn type_ref(&self) -> &TypeRef { | 785 | pub fn type_ref(&self) -> &TypeRef { |
@@ -804,7 +804,7 @@ impl ConstData { | |||
804 | } | 804 | } |
805 | 805 | ||
806 | fn const_data_for<N: NameOwner + TypeAscriptionOwner>(node: &N) -> Arc<ConstData> { | 806 | fn const_data_for<N: NameOwner + TypeAscriptionOwner>(node: &N) -> Arc<ConstData> { |
807 | let name = node.name().map(|n| n.as_name()).unwrap_or_else(Name::missing); | 807 | let name = node.name().map(|n| n.as_name()); |
808 | let type_ref = TypeRef::from_ast_opt(node.ascribed_type()); | 808 | let type_ref = TypeRef::from_ast_opt(node.ascribed_type()); |
809 | let sig = ConstData { name, type_ref }; | 809 | let sig = ConstData { name, type_ref }; |
810 | Arc::new(sig) | 810 | Arc::new(sig) |
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs index bf57bb3b7..7d9b86752 100644 --- a/crates/ra_hir/src/ty/infer.rs +++ b/crates/ra_hir/src/ty/infer.rs | |||
@@ -577,7 +577,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
577 | 577 | ||
578 | crate::ImplItem::Const(konst) => { | 578 | crate::ImplItem::Const(konst) => { |
579 | let data = konst.data(self.db); | 579 | let data = konst.data(self.db); |
580 | if segment.name == *data.name() { | 580 | if Some(&segment.name) == data.name() { |
581 | Some(ValueNs::Const(konst)) | 581 | Some(ValueNs::Const(konst)) |
582 | } else { | 582 | } else { |
583 | None | 583 | None |