diff --git a/compiler/crates/relay-docblock/src/docblock_ir.rs b/compiler/crates/relay-docblock/src/docblock_ir.rs index 27c9fa2211c3b..ae2dd8d62bc54 100644 --- a/compiler/crates/relay-docblock/src/docblock_ir.rs +++ b/compiler/crates/relay-docblock/src/docblock_ir.rs @@ -32,6 +32,9 @@ use graphql_syntax::FragmentDefinition; use graphql_syntax::Identifier; use graphql_syntax::InputValueDefinition; use graphql_syntax::List; +use graphql_syntax::StringNode; +use graphql_syntax::Token; +use graphql_syntax::TokenKind; use graphql_syntax::TypeAnnotation; use intern::Lookup; @@ -102,6 +105,7 @@ pub(crate) fn parse_docblock_ir( if populated_ir_field.value.item.lookup().contains('.') { DocblockIr::TerseRelayResolver(parse_terse_relay_resolver_ir( &mut fields, + description, populated_ir_field, definitions_in_file, docblock_location, @@ -262,6 +266,7 @@ fn parse_weak_object_ir( fn parse_terse_relay_resolver_ir( fields: &mut HashMap, + description: Option>, relay_resolver_field: PopulatedIrField, definitions_in_file: Option<&Vec>, location: Location, @@ -295,12 +300,20 @@ fn parse_terse_relay_resolver_ir( } }; - let field = parse_field_definition( + let mut field = parse_field_definition( &remaining_source[1..], type_str.location.source_location(), span_start + 1, )?; + field.description = description.map(|description| StringNode { + token: Token { + span: description.location.span(), + kind: TokenKind::Empty, + }, + value: description.item, + }); + if let TypeAnnotation::NonNull(non_null) = field.type_ { return Err(vec![Diagnostic::error( IrParsingErrorMessages::FieldWithNonNullType, diff --git a/compiler/crates/relay-docblock/tests/parse/fixtures/terse-relay-resolver-non-nullable-list-item.expected b/compiler/crates/relay-docblock/tests/parse/fixtures/terse-relay-resolver-non-nullable-list-item.expected index f4e2d88efa7ca..ce6ef5320894f 100644 --- a/compiler/crates/relay-docblock/tests/parse/fixtures/terse-relay-resolver-non-nullable-list-item.expected +++ b/compiler/crates/relay-docblock/tests/parse/fixtures/terse-relay-resolver-non-nullable-list-item.expected @@ -58,7 +58,15 @@ TerseRelayResolver( ), arguments: None, directives: [], - description: None, + description: Some( + StringNode { + token: Token { + span: 58:70, + kind: Empty, + }, + value: "Non-nullable", + }, + ), hack_source: None, }, type_: WithLocation { diff --git a/compiler/crates/relay-docblock/tests/parse/fixtures/terse-relay-resolver.expected b/compiler/crates/relay-docblock/tests/parse/fixtures/terse-relay-resolver.expected index 68b407e345f32..612ee92ac0c7b 100644 --- a/compiler/crates/relay-docblock/tests/parse/fixtures/terse-relay-resolver.expected +++ b/compiler/crates/relay-docblock/tests/parse/fixtures/terse-relay-resolver.expected @@ -46,7 +46,15 @@ TerseRelayResolver( ), arguments: None, directives: [], - description: None, + description: Some( + StringNode { + token: Token { + span: 79:370, + kind: Empty, + }, + value: "\nThe user's favorite page! They probably clicked something in the UI\nto tell us that it was their favorite page and then we put that in a\ndatabase or something. Then we got that info out again and put it out\nagain. Anyway, I'm rambling now. Its a page that the user likes. A lot.", + }, + ), hack_source: None, }, type_: WithLocation {