aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2019-09-16 07:09:30 +0100
committerGitHub <[email protected]>2019-09-16 07:09:30 +0100
commit6b33b90091b0cecd4c092d34451aba9f2492063c (patch)
treedd87d2b240d84fe76fe585442fea1812d0d148dd /crates
parent2d79a1ad83cc39075c7c9e3230973013c8c58b17 (diff)
parentcd8155b7f73006ee7dae8b423557f25fd92912df (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.rs8
-rw-r--r--crates/ra_hir/src/ty/infer.rs2
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)]
775pub struct ConstData { 775pub 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
780impl ConstData { 780impl 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
806fn const_data_for<N: NameOwner + TypeAscriptionOwner>(node: &N) -> Arc<ConstData> { 806fn 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