Skip to content

Commit

Permalink
Add parent node information when providing error about printing empty…
Browse files Browse the repository at this point in the history
… selections

Reviewed By: josephsavona

Differential Revision: D44369237

fbshipit-source-id: 81e5732c765043b71b080ef65e40f765df14c632
  • Loading branch information
cuhtis authored and facebook-github-bot committed Mar 27, 2023
1 parent 2ce2aae commit 35fea88
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions compiler/crates/graphql-text-printer/src/print_to_text.rs
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ pub fn write_selections(
mut result: &mut impl Write,
) -> FmtResult {
let mut printer = Printer::new(schema, &mut result, PrinterOptions::default());
printer.print_selections(selections)
printer.print_selections(selections, "unknown".intern())
}

pub fn write_selection(
Expand Down Expand Up @@ -222,7 +222,7 @@ impl<'schema, 'writer, W: Write> Printer<'schema, 'writer, W> {
write!(self.writer, "{} {}", operation.kind, operation.name.item)?;
self.print_variable_definitions(&operation.variable_definitions)?;
self.print_directives(&operation.directives, None, None)?;
self.print_selections(&operation.selections)
self.print_selections(&operation.selections, operation.name.item.0)
}

fn print_fragment(mut self, fragment: &FragmentDefinition) -> FmtResult {
Expand All @@ -243,10 +243,10 @@ impl<'schema, 'writer, W: Write> Printer<'schema, 'writer, W> {
None,
Some(&fragment.variable_definitions),
)?;
self.print_selections(&fragment.selections)
self.print_selections(&fragment.selections, fragment_name.0)
}

fn print_selections(&mut self, selections: &[Selection]) -> FmtResult {
fn print_selections(&mut self, selections: &[Selection], name: StringKey) -> FmtResult {
let len = selections.len();
if len > 0 {
self.print_optional_space()?;
Expand All @@ -266,7 +266,8 @@ impl<'schema, 'writer, W: Write> Printer<'schema, 'writer, W> {
write!(self.writer, "}}")?;
} else {
panic!(
"Cannot print empty selections. Please, check transforms that may produce invalid selections."
"Cannot print empty selections for {}. Please, check transforms that may produce invalid selections.",
name
);
}
Ok(())
Expand Down Expand Up @@ -306,7 +307,7 @@ impl<'schema, 'writer, W: Write> Printer<'schema, 'writer, W> {
self.print_alias_and_name(&field.alias, schema_field.name.item)?;
self.print_arguments(&field.arguments)?;
self.print_directives(&field.directives, conditions, None)?;
self.print_selections(&field.selections)?;
self.print_selections(&field.selections, schema_field.name.item)?;
Ok(())
}

Expand Down Expand Up @@ -342,7 +343,17 @@ impl<'schema, 'writer, W: Write> Printer<'schema, 'writer, W> {
)?;
};
self.print_directives(&field.directives, conditions, None)?;
self.print_selections(&field.selections)

let name = if let Some(type_condition) = field.type_condition {
format!(
"... on {}",
self.schema.get_type_name(type_condition).lookup()
)
.intern()
} else {
"...".intern()
};
self.print_selections(&field.selections, name)
}

fn print_condition(
Expand Down

0 comments on commit 35fea88

Please sign in to comment.