diff --git a/compiler/crates/relay-lsp/src/docblock_resolution_info.rs b/compiler/crates/relay-lsp/src/docblock_resolution_info.rs index 37b7885780914..13a30b5b79a13 100644 --- a/compiler/crates/relay-lsp/src/docblock_resolution_info.rs +++ b/compiler/crates/relay-lsp/src/docblock_resolution_info.rs @@ -37,18 +37,21 @@ pub fn create_docblock_resolution_info( } }; + // Root fragment if let Some(root_fragment) = resolver_ir.root_fragment { if root_fragment.location.contains(position_span) { return Some(DocblockResolutionInfo::RootFragment(root_fragment.item)); } } + // Field name if resolver_ir.field.name.span.contains(position_span) { return Some(DocblockResolutionInfo::FieldName( resolver_ir.field.name.value, )); } + // Return type if let Some(output_type) = &resolver_ir.output_type { if output_type.inner().location.contains(position_span) { return Some(DocblockResolutionInfo::Type( @@ -57,6 +60,7 @@ pub fn create_docblock_resolution_info( } } + // @deprecated key if let Some(deprecated) = resolver_ir.deprecated { if deprecated.key_location().contains(position_span) { return Some(DocblockResolutionInfo::Deprecated); @@ -89,6 +93,13 @@ pub fn create_docblock_resolution_info( } } + // Field name + if resolver_ir.field.name.span.contains(position_span) { + return Some(DocblockResolutionInfo::FieldName( + resolver_ir.field.name.value, + )); + } + // @deprecated key if let Some(deprecated) = resolver_ir.deprecated { if deprecated.key_location().contains(position_span) { diff --git a/compiler/crates/relay-lsp/src/references/mod.rs b/compiler/crates/relay-lsp/src/references/mod.rs index 06983a8ca59d3..0bc4bd35dbf63 100644 --- a/compiler/crates/relay-lsp/src/references/mod.rs +++ b/compiler/crates/relay-lsp/src/references/mod.rs @@ -80,10 +80,7 @@ fn get_references_response( On::Type(type_) => type_.value.item, On::Interface(interface) => interface.value.item, }, - DocblockIr::TerseRelayResolver(_) => { - // TODO: Implement support for terse relay resolvers. - return Err(LSPRuntimeError::ExpectedError); - } + DocblockIr::TerseRelayResolver(terse_resolver) => terse_resolver.type_.item, DocblockIr::StrongObjectResolver(_) => { // TODO: Implement support for strong object. return Err(LSPRuntimeError::ExpectedError);