Skip to content

Commit 6687ad8

Browse files
Gracefully handle const _ items in ConstData
1 parent 2d79a1a commit 6687ad8

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

crates/ra_hir/src/code_model.rs

+8-4
Original file line numberDiff line numberDiff line change
@@ -773,13 +773,17 @@ impl Const {
773773

774774
#[derive(Debug, Clone, PartialEq, Eq)]
775775
pub struct ConstData {
776-
pub(crate) name: Name,
776+
pub(crate) name: Option<Name>,
777777
pub(crate) type_ref: TypeRef,
778778
}
779779

780780
impl ConstData {
781-
pub fn name(&self) -> &Name {
782-
&self.name
781+
pub fn name(&self) -> Option<&Name> {
782+
self.name.as_ref()
783+
}
784+
785+
pub fn is_underscore(&self) -> bool {
786+
self.name.is_none()
783787
}
784788

785789
pub fn type_ref(&self) -> &TypeRef {
@@ -804,7 +808,7 @@ impl ConstData {
804808
}
805809

806810
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);
811+
let name = node.name().map(|n| n.as_name());
808812
let type_ref = TypeRef::from_ast_opt(node.ascribed_type());
809813
let sig = ConstData { name, type_ref };
810814
Arc::new(sig)

crates/ra_hir/src/ty/infer.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> {
577577

578578
crate::ImplItem::Const(konst) => {
579579
let data = konst.data(self.db);
580-
if segment.name == *data.name() {
580+
if Some(&segment.name) == data.name() {
581581
Some(ValueNs::Const(konst))
582582
} else {
583583
None

0 commit comments

Comments
 (0)