From 5e866c1f5482c4784b37ccf2055ab84992b64cdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=B5=20Ho=C3=A0ng=20Long?= <78085736+vohoanglong0107@users.noreply.github.com> Date: Sun, 30 Jun 2024 15:15:10 +0900 Subject: [PATCH] fix(graphql_parser): parse object value in list (#3315) --- .../src/parser/argument.rs | 3 - .../err/directive.graphql.snap | 522 +++++----- .../graphql_test_suite/err/operation.graphql | 2 +- .../err/operation.graphql.snap | 415 ++++---- .../err/selection_set.graphql | 2 +- .../err/selection_set.graphql.snap | 970 ++++++++++-------- .../tests/graphql_test_suite/ok/value.graphql | 1 + .../graphql_test_suite/ok/value.graphql.snap | 99 +- 8 files changed, 1100 insertions(+), 914 deletions(-) diff --git a/crates/biome_graphql_parser/src/parser/argument.rs b/crates/biome_graphql_parser/src/parser/argument.rs index 9eb2a0c0baaf..eb98e9e11265 100644 --- a/crates/biome_graphql_parser/src/parser/argument.rs +++ b/crates/biome_graphql_parser/src/parser/argument.rs @@ -91,9 +91,6 @@ pub(crate) fn is_at_argument_list_end(p: &mut GraphqlParser<'_>) -> bool { p.at(T![')']) // at the start af a new arguments list || p.at(T!['(']) - // at a selection set or body of a definition - || p.at(T!['{']) - || p.at(T!['}']) // at the start of a new directive || is_at_directive(p) // if we can't find any of the above, we can't be sure if we're outside of diff --git a/crates/biome_graphql_parser/tests/graphql_test_suite/err/directive.graphql.snap b/crates/biome_graphql_parser/tests/graphql_test_suite/err/directive.graphql.snap index f4658afde68f..6eb04154127b 100644 --- a/crates/biome_graphql_parser/tests/graphql_test_suite/err/directive.graphql.snap +++ b/crates/biome_graphql_parser/tests/graphql_test_suite/err/directive.graphql.snap @@ -173,86 +173,89 @@ GraphqlRoot { }, GraphqlSelectionSet { l_curly_token: L_CURLY@101..104 "{" [Newline("\n"), Newline("\n")] [], - selections: GraphqlSelectionList [ - GraphqlField { - alias: missing (optional), - name: GraphqlName { - value_token: GRAPHQL_NAME@104..112 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - arguments: missing (optional), - directives: GraphqlDirectiveList [ - GraphqlDirective { - at_token: AT@112..113 "@" [] [], - name: GraphqlName { - value_token: GRAPHQL_NAME@113..123 "deprecated" [] [], - }, - arguments: GraphqlArguments { - l_paren_token: L_PAREN@123..124 "(" [] [], - arguments: GraphqlArgumentList [ - GraphqlArgument { - name: GraphqlName { - value_token: GRAPHQL_NAME@124..130 "reason" [] [], - }, - colon_token: COLON@130..132 ":" [] [Whitespace(" ")], - value: GraphqlStringValue { - graphql_string_literal_token: GRAPHQL_STRING_LITERAL@132..144 "\"Deprecated\"" [] [], - }, - }, - ], - r_paren_token: missing (required), - }, - }, - ], - selection_set: missing (optional), - }, - ], - r_curly_token: R_CURLY@144..146 "}" [Newline("\n")] [], - }, - GraphqlSelectionSet { - l_curly_token: L_CURLY@146..149 "{" [Newline("\n"), Newline("\n")] [], - selections: GraphqlSelectionList [ - GraphqlField { - alias: missing (optional), - name: GraphqlName { - value_token: GRAPHQL_NAME@149..157 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - arguments: missing (optional), - directives: GraphqlDirectiveList [ - GraphqlDirective { - at_token: AT@157..158 "@" [] [], - name: missing (required), - arguments: GraphqlArguments { - l_paren_token: L_PAREN@158..159 "(" [] [], - arguments: GraphqlArgumentList [ - GraphqlArgument { - name: GraphqlName { - value_token: GRAPHQL_NAME@159..165 "reason" [] [], - }, - colon_token: COLON@165..167 ":" [] [Whitespace(" ")], - value: GraphqlStringValue { - graphql_string_literal_token: GRAPHQL_STRING_LITERAL@167..179 "\"Deprecated\"" [] [], - }, - }, - ], - r_paren_token: missing (required), - }, - }, - ], - selection_set: missing (optional), - }, - ], - r_curly_token: R_CURLY@179..181 "}" [Newline("\n")] [], - }, - GraphqlSelectionSet { - l_curly_token: L_CURLY@181..184 "{" [Newline("\n"), Newline("\n")] [], selections: GraphqlSelectionList [ GraphqlBogusSelection { items: [ GraphqlName { - value_token: GRAPHQL_NAME@184..192 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + value_token: GRAPHQL_NAME@104..112 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], }, GraphqlBogus { items: [ + GraphqlBogus { + items: [ + AT@112..113 "@" [] [], + GraphqlName { + value_token: GRAPHQL_NAME@113..123 "deprecated" [] [], + }, + GraphqlBogus { + items: [ + L_PAREN@123..124 "(" [] [], + GraphqlBogus { + items: [ + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@124..130 "reason" [] [], + }, + colon_token: COLON@130..132 ":" [] [Whitespace(" ")], + value: GraphqlStringValue { + graphql_string_literal_token: GRAPHQL_STRING_LITERAL@132..144 "\"Deprecated\"" [] [], + }, + }, + GraphqlBogus { + items: [ + R_CURLY@144..146 "}" [Newline("\n")] [], + L_CURLY@146..149 "{" [Newline("\n"), Newline("\n")] [], + ], + }, + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@149..157 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + colon_token: missing (required), + value: missing (required), + }, + ], + }, + ], + }, + ], + }, + GraphqlBogus { + items: [ + AT@157..158 "@" [] [], + GraphqlBogus { + items: [ + L_PAREN@158..159 "(" [] [], + GraphqlBogus { + items: [ + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@159..165 "reason" [] [], + }, + colon_token: COLON@165..167 ":" [] [Whitespace(" ")], + value: GraphqlStringValue { + graphql_string_literal_token: GRAPHQL_STRING_LITERAL@167..179 "\"Deprecated\"" [] [], + }, + }, + GraphqlBogus { + items: [ + R_CURLY@179..181 "}" [Newline("\n")] [], + L_CURLY@181..184 "{" [Newline("\n"), Newline("\n")] [], + ], + }, + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@184..192 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + colon_token: missing (required), + value: missing (required), + }, + ], + }, + ], + }, + ], + }, GraphqlBogus { items: [ AT@192..193 "@" [] [], @@ -265,79 +268,69 @@ GraphqlRoot { items: [ COLON@194..196 ":" [] [Whitespace(" ")], GRAPHQL_STRING_LITERAL@196..208 "\"Deprecated\"" [] [], + R_CURLY@208..210 "}" [Newline("\n")] [], + L_CURLY@210..213 "{" [Newline("\n"), Newline("\n")] [], ], }, + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@213..221 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + colon_token: missing (required), + value: missing (required), + }, ], }, ], }, ], }, - ], - }, - ], - }, - ], - r_curly_token: R_CURLY@208..210 "}" [Newline("\n")] [], - }, - GraphqlSelectionSet { - l_curly_token: L_CURLY@210..213 "{" [Newline("\n"), Newline("\n")] [], - selections: GraphqlSelectionList [ - GraphqlField { - alias: missing (optional), - name: GraphqlName { - value_token: GRAPHQL_NAME@213..221 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - arguments: missing (optional), - directives: GraphqlDirectiveList [ - GraphqlDirective { - at_token: AT@221..222 "@" [] [], - name: missing (required), - arguments: GraphqlArguments { - l_paren_token: L_PAREN@222..223 "(" [] [], - arguments: GraphqlArgumentList [ - GraphqlArgument { - name: missing (required), - colon_token: COLON@223..224 ":" [] [], - value: missing (required), - }, - ], - r_paren_token: missing (required), - }, - }, - ], - selection_set: missing (optional), - }, - ], - r_curly_token: R_CURLY@224..226 "}" [Newline("\n")] [], - }, - GraphqlSelectionSet { - l_curly_token: L_CURLY@226..229 "{" [Newline("\n"), Newline("\n")] [], - selections: GraphqlSelectionList [ - GraphqlField { - alias: missing (optional), - name: GraphqlName { - value_token: GRAPHQL_NAME@229..237 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - arguments: missing (optional), - directives: GraphqlDirectiveList [ - GraphqlDirective { - at_token: AT@237..238 "@" [] [], - name: missing (required), - arguments: GraphqlArguments { - l_paren_token: L_PAREN@238..239 "(" [] [], - arguments: GraphqlArgumentList [ - GraphqlArgument { - name: missing (required), - colon_token: COLON@239..240 ":" [] [], - value: missing (required), + GraphqlBogus { + items: [ + AT@221..222 "@" [] [], + GraphqlBogus { + items: [ + L_PAREN@222..223 "(" [] [], + GraphqlBogus { + items: [ + GraphqlBogus { + items: [ + COLON@223..224 ":" [] [], + R_CURLY@224..226 "}" [Newline("\n")] [], + L_CURLY@226..229 "{" [Newline("\n"), Newline("\n")] [], + ], + }, + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@229..237 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + colon_token: missing (required), + value: missing (required), + }, + ], + }, + ], + }, + ], + }, + GraphqlDirective { + at_token: AT@237..238 "@" [] [], + name: missing (required), + arguments: GraphqlArguments { + l_paren_token: L_PAREN@238..239 "(" [] [], + arguments: GraphqlArgumentList [ + GraphqlArgument { + name: missing (required), + colon_token: COLON@239..240 ":" [] [], + value: missing (required), + }, + ], + r_paren_token: R_PAREN@240..241 ")" [] [], }, - ], - r_paren_token: R_PAREN@240..241 ")" [] [], - }, + }, + ], }, ], - selection_set: missing (optional), }, ], r_curly_token: R_CURLY@241..243 "}" [Newline("\n")] [], @@ -430,103 +423,83 @@ GraphqlRoot { 2: R_PAREN@98..99 ")" [] [] 4: (empty) 2: R_CURLY@99..101 "}" [Newline("\n")] [] - 4: GRAPHQL_SELECTION_SET@101..146 + 4: GRAPHQL_SELECTION_SET@101..243 0: L_CURLY@101..104 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@104..144 - 0: GRAPHQL_FIELD@104..144 - 0: (empty) - 1: GRAPHQL_NAME@104..112 + 1: GRAPHQL_SELECTION_LIST@104..241 + 0: GRAPHQL_BOGUS_SELECTION@104..241 + 0: GRAPHQL_NAME@104..112 0: GRAPHQL_NAME@104..112 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@112..144 - 0: GRAPHQL_DIRECTIVE@112..144 + 1: GRAPHQL_BOGUS@112..241 + 0: GRAPHQL_BOGUS@112..157 0: AT@112..113 "@" [] [] 1: GRAPHQL_NAME@113..123 0: GRAPHQL_NAME@113..123 "deprecated" [] [] - 2: GRAPHQL_ARGUMENTS@123..144 + 2: GRAPHQL_BOGUS@123..157 0: L_PAREN@123..124 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@124..144 + 1: GRAPHQL_BOGUS@124..157 0: GRAPHQL_ARGUMENT@124..144 0: GRAPHQL_NAME@124..130 0: GRAPHQL_NAME@124..130 "reason" [] [] 1: COLON@130..132 ":" [] [Whitespace(" ")] 2: GRAPHQL_STRING_VALUE@132..144 0: GRAPHQL_STRING_LITERAL@132..144 "\"Deprecated\"" [] [] - 2: (empty) - 4: (empty) - 2: R_CURLY@144..146 "}" [Newline("\n")] [] - 5: GRAPHQL_SELECTION_SET@146..181 - 0: L_CURLY@146..149 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@149..179 - 0: GRAPHQL_FIELD@149..179 - 0: (empty) - 1: GRAPHQL_NAME@149..157 - 0: GRAPHQL_NAME@149..157 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@157..179 - 0: GRAPHQL_DIRECTIVE@157..179 + 1: GRAPHQL_BOGUS@144..149 + 0: R_CURLY@144..146 "}" [Newline("\n")] [] + 1: L_CURLY@146..149 "{" [Newline("\n"), Newline("\n")] [] + 2: GRAPHQL_ARGUMENT@149..157 + 0: GRAPHQL_NAME@149..157 + 0: GRAPHQL_NAME@149..157 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: (empty) + 2: (empty) + 1: GRAPHQL_BOGUS@157..192 0: AT@157..158 "@" [] [] - 1: (empty) - 2: GRAPHQL_ARGUMENTS@158..179 + 1: GRAPHQL_BOGUS@158..192 0: L_PAREN@158..159 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@159..179 + 1: GRAPHQL_BOGUS@159..192 0: GRAPHQL_ARGUMENT@159..179 0: GRAPHQL_NAME@159..165 0: GRAPHQL_NAME@159..165 "reason" [] [] 1: COLON@165..167 ":" [] [Whitespace(" ")] 2: GRAPHQL_STRING_VALUE@167..179 0: GRAPHQL_STRING_LITERAL@167..179 "\"Deprecated\"" [] [] - 2: (empty) - 4: (empty) - 2: R_CURLY@179..181 "}" [Newline("\n")] [] - 6: GRAPHQL_SELECTION_SET@181..210 - 0: L_CURLY@181..184 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@184..208 - 0: GRAPHQL_BOGUS_SELECTION@184..208 - 0: GRAPHQL_NAME@184..192 - 0: GRAPHQL_NAME@184..192 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 1: GRAPHQL_BOGUS@192..208 - 0: GRAPHQL_BOGUS@192..208 + 1: GRAPHQL_BOGUS@179..184 + 0: R_CURLY@179..181 "}" [Newline("\n")] [] + 1: L_CURLY@181..184 "{" [Newline("\n"), Newline("\n")] [] + 2: GRAPHQL_ARGUMENT@184..192 + 0: GRAPHQL_NAME@184..192 + 0: GRAPHQL_NAME@184..192 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: (empty) + 2: (empty) + 2: GRAPHQL_BOGUS@192..221 0: AT@192..193 "@" [] [] - 1: GRAPHQL_BOGUS@193..208 + 1: GRAPHQL_BOGUS@193..221 0: L_PAREN@193..194 "(" [] [] - 1: GRAPHQL_BOGUS@194..208 - 0: GRAPHQL_BOGUS@194..208 + 1: GRAPHQL_BOGUS@194..221 + 0: GRAPHQL_BOGUS@194..213 0: COLON@194..196 ":" [] [Whitespace(" ")] 1: GRAPHQL_STRING_LITERAL@196..208 "\"Deprecated\"" [] [] - 2: R_CURLY@208..210 "}" [Newline("\n")] [] - 7: GRAPHQL_SELECTION_SET@210..226 - 0: L_CURLY@210..213 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@213..224 - 0: GRAPHQL_FIELD@213..224 - 0: (empty) - 1: GRAPHQL_NAME@213..221 - 0: GRAPHQL_NAME@213..221 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@221..224 - 0: GRAPHQL_DIRECTIVE@221..224 + 2: R_CURLY@208..210 "}" [Newline("\n")] [] + 3: L_CURLY@210..213 "{" [Newline("\n"), Newline("\n")] [] + 1: GRAPHQL_ARGUMENT@213..221 + 0: GRAPHQL_NAME@213..221 + 0: GRAPHQL_NAME@213..221 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: (empty) + 2: (empty) + 3: GRAPHQL_BOGUS@221..237 0: AT@221..222 "@" [] [] - 1: (empty) - 2: GRAPHQL_ARGUMENTS@222..224 + 1: GRAPHQL_BOGUS@222..237 0: L_PAREN@222..223 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@223..224 - 0: GRAPHQL_ARGUMENT@223..224 - 0: (empty) - 1: COLON@223..224 ":" [] [] + 1: GRAPHQL_BOGUS@223..237 + 0: GRAPHQL_BOGUS@223..229 + 0: COLON@223..224 ":" [] [] + 1: R_CURLY@224..226 "}" [Newline("\n")] [] + 2: L_CURLY@226..229 "{" [Newline("\n"), Newline("\n")] [] + 1: GRAPHQL_ARGUMENT@229..237 + 0: GRAPHQL_NAME@229..237 + 0: GRAPHQL_NAME@229..237 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: (empty) 2: (empty) - 2: (empty) - 4: (empty) - 2: R_CURLY@224..226 "}" [Newline("\n")] [] - 8: GRAPHQL_SELECTION_SET@226..243 - 0: L_CURLY@226..229 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@229..241 - 0: GRAPHQL_FIELD@229..241 - 0: (empty) - 1: GRAPHQL_NAME@229..237 - 0: GRAPHQL_NAME@229..237 "hero" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] - 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@237..241 - 0: GRAPHQL_DIRECTIVE@237..241 + 4: GRAPHQL_DIRECTIVE@237..241 0: AT@237..238 "@" [] [] 1: (empty) 2: GRAPHQL_ARGUMENTS@238..241 @@ -537,7 +510,6 @@ GraphqlRoot { 1: COLON@239..240 ":" [] [] 2: (empty) 2: R_PAREN@240..241 ")" [] [] - 4: (empty) 2: R_CURLY@241..243 "}" [Newline("\n")] [] 2: EOF@243..244 "" [Newline("\n")] [] @@ -642,16 +614,43 @@ directive.graphql:14:27 parse ━━━━━━━━━━━━━━━━ directive.graphql:19:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × expected `)` but instead found `}` + × Expected an argument but instead found '} + + {'. 17 │ { 18 │ hero @deprecated(reason: "Deprecated" > 19 │ } │ ^ - 20 │ + > 20 │ + > 21 │ { + │ ^ + 22 │ hero @(reason: "Deprecated" + 23 │ } + + i Expected an argument here. + + 17 │ { + 18 │ hero @deprecated(reason: "Deprecated" + > 19 │ } + │ ^ + > 20 │ + > 21 │ { + │ ^ + 22 │ hero @(reason: "Deprecated" + 23 │ } + +directive.graphql:22:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected `:` but instead found `@` + 21 │ { + > 22 │ hero @(reason: "Deprecated" + │ ^ + 23 │ } + 24 │ - i Remove } + i Remove @ directive.graphql:22:9 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -673,16 +672,43 @@ directive.graphql:22:9 parse ━━━━━━━━━━━━━━━━━ directive.graphql:23:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × expected `)` but instead found `}` + × Expected an argument but instead found '} + + {'. 21 │ { 22 │ hero @(reason: "Deprecated" > 23 │ } │ ^ - 24 │ + > 24 │ + > 25 │ { + │ ^ + 26 │ hero @(: "Deprecated" + 27 │ } + + i Expected an argument here. + + 21 │ { + 22 │ hero @(reason: "Deprecated" + > 23 │ } + │ ^ + > 24 │ + > 25 │ { + │ ^ + 26 │ hero @(: "Deprecated" + 27 │ } + +directive.graphql:26:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected `:` but instead found `@` + 25 │ { + > 26 │ hero @(: "Deprecated" + │ ^ + 27 │ } + 28 │ - i Remove } + i Remove @ directive.graphql:26:9 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -704,34 +730,44 @@ directive.graphql:26:9 parse ━━━━━━━━━━━━━━━━━ directive.graphql:26:10 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Expected an argument but instead found ': "Deprecated"'. + × Expected an argument but instead found ': "Deprecated" + } + + {'. 25 │ { > 26 │ hero @(: "Deprecated" │ ^^^^^^^^^^^^^^ - 27 │ } - 28 │ + > 27 │ } + > 28 │ + > 29 │ { + │ ^ + 30 │ hero @(: + 31 │ } i Expected an argument here. 25 │ { > 26 │ hero @(: "Deprecated" │ ^^^^^^^^^^^^^^ - 27 │ } - 28 │ + > 27 │ } + > 28 │ + > 29 │ { + │ ^ + 30 │ hero @(: + 31 │ } -directive.graphql:27:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +directive.graphql:30:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × expected `)` but instead found `}` + × expected `:` but instead found `@` - 25 │ { - 26 │ hero @(: "Deprecated" - > 27 │ } - │ ^ - 28 │ 29 │ { + > 30 │ hero @(: + │ ^ + 31 │ } + 32 │ - i Remove } + i Remove @ directive.graphql:30:9 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -753,34 +789,44 @@ directive.graphql:30:9 parse ━━━━━━━━━━━━━━━━━ directive.graphql:30:10 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Expected an argument but instead found ':'. + × Expected an argument but instead found ': + } + + {'. 29 │ { > 30 │ hero @(: │ ^ - 31 │ } - 32 │ + > 31 │ } + > 32 │ + > 33 │ { + │ ^ + 34 │ hero @(:) + 35 │ } i Expected an argument here. 29 │ { > 30 │ hero @(: │ ^ - 31 │ } - 32 │ + > 31 │ } + > 32 │ + > 33 │ { + │ ^ + 34 │ hero @(:) + 35 │ } -directive.graphql:31:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +directive.graphql:34:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × expected `)` but instead found `}` + × expected `:` but instead found `@` - 29 │ { - 30 │ hero @(: - > 31 │ } - │ ^ - 32 │ 33 │ { + > 34 │ hero @(:) + │ ^ + 35 │ } + 36 │ - i Remove } + i Remove @ directive.graphql:34:9 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ diff --git a/crates/biome_graphql_parser/tests/graphql_test_suite/err/operation.graphql b/crates/biome_graphql_parser/tests/graphql_test_suite/err/operation.graphql index fe8f9da92bc1..4042e0ed412e 100644 --- a/crates/biome_graphql_parser/tests/graphql_test_suite/err/operation.graphql +++ b/crates/biome_graphql_parser/tests/graphql_test_suite/err/operation.graphql @@ -60,7 +60,7 @@ query { } query ($storyId: ID!) { - likeStory(storyId: $storyId + likeStory(storyId: $storyId) } query ($storyId: ID!) { diff --git a/crates/biome_graphql_parser/tests/graphql_test_suite/err/operation.graphql.snap b/crates/biome_graphql_parser/tests/graphql_test_suite/err/operation.graphql.snap index 739f02e779c1..cfd742b13993 100644 --- a/crates/biome_graphql_parser/tests/graphql_test_suite/err/operation.graphql.snap +++ b/crates/biome_graphql_parser/tests/graphql_test_suite/err/operation.graphql.snap @@ -66,7 +66,7 @@ query { } query ($storyId: ID!) { - likeStory(storyId: $storyId + likeStory(storyId: $storyId) } query ($storyId: ID!) { @@ -774,53 +774,53 @@ GraphqlRoot { }, }, ], - r_paren_token: missing (required), + r_paren_token: R_PAREN@627..628 ")" [] [], }, directives: GraphqlDirectiveList [], selection_set: missing (optional), }, ], - r_curly_token: R_CURLY@627..629 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@628..630 "}" [Newline("\n")] [], }, }, GraphqlOperationDefinition { ty: GraphqlOperationType { - value_token: QUERY_KW@629..637 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")], + value_token: QUERY_KW@630..638 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")], }, name: missing (optional), variables: GraphqlVariableDefinitions { - l_paren_token: L_PAREN@637..638 "(" [] [], + l_paren_token: L_PAREN@638..639 "(" [] [], elements: GraphqlVariableDefinitionList [ GraphqlVariableDefinition { variable: GraphqlVariable { - dollar_token: DOLLAR@638..639 "$" [] [], + dollar_token: DOLLAR@639..640 "$" [] [], name: GraphqlName { - value_token: GRAPHQL_NAME@639..646 "storyId" [] [], + value_token: GRAPHQL_NAME@640..647 "storyId" [] [], }, }, - colon_token: COLON@646..648 ":" [] [Whitespace(" ")], + colon_token: COLON@647..649 ":" [] [Whitespace(" ")], ty: GraphqlNonNullType { base: GraphqlNamedType { name: GraphqlName { - value_token: GRAPHQL_NAME@648..650 "ID" [] [], + value_token: GRAPHQL_NAME@649..651 "ID" [] [], }, }, - excl_token: BANG@650..651 "!" [] [], + excl_token: BANG@651..652 "!" [] [], }, default: missing (optional), directives: GraphqlDirectiveList [], }, ], - r_paren_token: R_PAREN@651..654 ")" [] [Whitespace(" ")], + r_paren_token: R_PAREN@652..655 ")" [] [Whitespace(" ")], }, directives: GraphqlDirectiveList [], selection_set: GraphqlSelectionSet { - l_curly_token: L_CURLY@654..655 "{" [] [], + l_curly_token: L_CURLY@655..656 "{" [] [], selections: GraphqlSelectionList [ GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@655..667 "likeStory" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")], + value_token: GRAPHQL_NAME@656..668 "likeStory" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")], }, arguments: missing (optional), directives: GraphqlDirectiveList [], @@ -829,9 +829,9 @@ GraphqlRoot { GraphqlField { alias: GraphqlAlias { value: GraphqlName { - value_token: GRAPHQL_NAME@667..674 "storyId" [] [], + value_token: GRAPHQL_NAME@668..675 "storyId" [] [], }, - colon_token: COLON@674..676 ":" [] [Whitespace(" ")], + colon_token: COLON@675..677 ":" [] [Whitespace(" ")], }, name: missing (required), arguments: missing (optional), @@ -840,60 +840,60 @@ GraphqlRoot { }, GraphqlBogusSelection { items: [ - DOLLAR@676..677 "$" [] [], + DOLLAR@677..678 "$" [] [], ], }, GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@677..684 "storyId" [] [], + value_token: GRAPHQL_NAME@678..685 "storyId" [] [], }, arguments: missing (optional), directives: GraphqlDirectiveList [], selection_set: missing (optional), }, ], - r_curly_token: R_CURLY@684..686 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@685..687 "}" [Newline("\n")] [], }, }, GraphqlOperationDefinition { ty: GraphqlOperationType { - value_token: QUERY_KW@686..694 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")], + value_token: QUERY_KW@687..695 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")], }, name: missing (optional), variables: GraphqlVariableDefinitions { - l_paren_token: L_PAREN@694..695 "(" [] [], + l_paren_token: L_PAREN@695..696 "(" [] [], elements: GraphqlVariableDefinitionList [ GraphqlVariableDefinition { variable: GraphqlVariable { - dollar_token: DOLLAR@695..696 "$" [] [], + dollar_token: DOLLAR@696..697 "$" [] [], name: GraphqlName { - value_token: GRAPHQL_NAME@696..703 "storyId" [] [], + value_token: GRAPHQL_NAME@697..704 "storyId" [] [], }, }, - colon_token: COLON@703..705 ":" [] [Whitespace(" ")], + colon_token: COLON@704..706 ":" [] [Whitespace(" ")], ty: GraphqlNonNullType { base: GraphqlNamedType { name: GraphqlName { - value_token: GRAPHQL_NAME@705..707 "ID" [] [], + value_token: GRAPHQL_NAME@706..708 "ID" [] [], }, }, - excl_token: BANG@707..708 "!" [] [], + excl_token: BANG@708..709 "!" [] [], }, default: missing (optional), directives: GraphqlDirectiveList [], }, ], - r_paren_token: R_PAREN@708..710 ")" [] [Whitespace(" ")], + r_paren_token: R_PAREN@709..711 ")" [] [Whitespace(" ")], }, directives: GraphqlDirectiveList [], selection_set: GraphqlSelectionSet { - l_curly_token: L_CURLY@710..711 "{" [] [], + l_curly_token: L_CURLY@711..712 "{" [] [], selections: GraphqlSelectionList [ GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@711..723 "likeStory" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")], + value_token: GRAPHQL_NAME@712..724 "likeStory" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")], }, arguments: missing (optional), directives: GraphqlDirectiveList [], @@ -902,9 +902,9 @@ GraphqlRoot { GraphqlField { alias: GraphqlAlias { value: GraphqlName { - value_token: GRAPHQL_NAME@723..730 "storyId" [] [], + value_token: GRAPHQL_NAME@724..731 "storyId" [] [], }, - colon_token: COLON@730..732 ":" [] [Whitespace(" ")], + colon_token: COLON@731..733 ":" [] [Whitespace(" ")], }, name: missing (required), arguments: missing (optional), @@ -913,26 +913,26 @@ GraphqlRoot { }, GraphqlBogusSelection { items: [ - DOLLAR@732..733 "$" [] [], + DOLLAR@733..734 "$" [] [], ], }, ], - r_curly_token: R_CURLY@733..735 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@734..736 "}" [Newline("\n")] [], }, }, GraphqlBogusDefinition { items: [ GraphqlOperationType { - value_token: QUERY_KW@735..743 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")], + value_token: QUERY_KW@736..744 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")], }, GraphqlBogus { items: [ - L_PAREN@743..744 "(" [] [], + L_PAREN@744..745 "(" [] [], GraphqlBogus { items: [ GraphqlVariableDefinition { variable: GraphqlVariable { - dollar_token: DOLLAR@744..745 "$" [] [], + dollar_token: DOLLAR@745..746 "$" [] [], name: missing (required), }, colon_token: missing (required), @@ -942,15 +942,15 @@ GraphqlRoot { }, GraphqlBogus { items: [ - GRAPHQL_INT_LITERAL@745..748 "156" [] [], - COLON@748..750 ":" [] [Whitespace(" ")], + GRAPHQL_INT_LITERAL@746..749 "156" [] [], + COLON@749..751 ":" [] [Whitespace(" ")], GraphqlDefaultValue { - eq_token: EQ@750..752 "=" [] [Whitespace(" ")], + eq_token: EQ@751..753 "=" [] [Whitespace(" ")], value: missing (required), }, GraphqlDirectiveList [ GraphqlDirective { - at_token: AT@752..753 "@" [] [], + at_token: AT@753..754 "@" [] [], name: missing (required), arguments: missing (optional), }, @@ -959,91 +959,91 @@ GraphqlRoot { }, ], }, - R_PAREN@753..755 ")" [] [Whitespace(" ")], + R_PAREN@754..756 ")" [] [Whitespace(" ")], ], }, GraphqlDirectiveList [], GraphqlSelectionSet { - l_curly_token: L_CURLY@755..756 "{" [] [], + l_curly_token: L_CURLY@756..757 "{" [] [], selections: GraphqlSelectionList [ GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@756..767 "likeStory" [Newline("\n"), Whitespace("\t")] [], + value_token: GRAPHQL_NAME@757..768 "likeStory" [Newline("\n"), Whitespace("\t")] [], }, arguments: missing (optional), directives: GraphqlDirectiveList [], selection_set: missing (optional), }, ], - r_curly_token: R_CURLY@767..769 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@768..770 "}" [Newline("\n")] [], }, ], }, GraphqlOperationDefinition { ty: GraphqlOperationType { - value_token: QUERY_KW@769..800 "query" [Newline("\n"), Newline("\n"), Comments("# malformed directives"), Newline("\n")] [Whitespace(" ")], + value_token: QUERY_KW@770..801 "query" [Newline("\n"), Newline("\n"), Comments("# malformed directives"), Newline("\n")] [Whitespace(" ")], }, name: missing (optional), variables: GraphqlVariableDefinitions { - l_paren_token: L_PAREN@800..801 "(" [] [], + l_paren_token: L_PAREN@801..802 "(" [] [], elements: GraphqlVariableDefinitionList [ GraphqlVariableDefinition { variable: GraphqlVariable { - dollar_token: DOLLAR@801..802 "$" [] [], + dollar_token: DOLLAR@802..803 "$" [] [], name: GraphqlName { - value_token: GRAPHQL_NAME@802..809 "storyId" [] [], + value_token: GRAPHQL_NAME@803..810 "storyId" [] [], }, }, - colon_token: COLON@809..811 ":" [] [Whitespace(" ")], + colon_token: COLON@810..812 ":" [] [Whitespace(" ")], ty: GraphqlNonNullType { base: GraphqlNamedType { name: GraphqlName { - value_token: GRAPHQL_NAME@811..813 "ID" [] [], + value_token: GRAPHQL_NAME@812..814 "ID" [] [], }, }, - excl_token: BANG@813..814 "!" [] [], + excl_token: BANG@814..815 "!" [] [], }, default: missing (optional), directives: GraphqlDirectiveList [], }, ], - r_paren_token: R_PAREN@814..816 ")" [] [Whitespace(" ")], + r_paren_token: R_PAREN@815..817 ")" [] [Whitespace(" ")], }, directives: GraphqlDirectiveList [ GraphqlDirective { - at_token: AT@816..818 "@" [] [Whitespace(" ")], + at_token: AT@817..819 "@" [] [Whitespace(" ")], name: missing (required), arguments: missing (optional), }, ], selection_set: GraphqlSelectionSet { - l_curly_token: L_CURLY@818..819 "{" [] [], + l_curly_token: L_CURLY@819..820 "{" [] [], selections: GraphqlSelectionList [ GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@819..830 "likeStory" [Newline("\n"), Whitespace("\t")] [], + value_token: GRAPHQL_NAME@820..831 "likeStory" [Newline("\n"), Whitespace("\t")] [], }, arguments: missing (optional), directives: GraphqlDirectiveList [], selection_set: missing (optional), }, ], - r_curly_token: R_CURLY@830..832 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@831..833 "}" [Newline("\n")] [], }, }, ], - eof_token: EOF@832..833 "" [Newline("\n")] [], + eof_token: EOF@833..834 "" [Newline("\n")] [], } ``` ## CST ``` -0: GRAPHQL_ROOT@0..833 +0: GRAPHQL_ROOT@0..834 0: (empty) - 1: GRAPHQL_DEFINITION_LIST@0..832 + 1: GRAPHQL_DEFINITION_LIST@0..833 0: GRAPHQL_OPERATION_DEFINITION@0..17 0: GRAPHQL_OPERATION_TYPE@0..6 0: QUERY_KW@0..6 "query" [] [Whitespace(" ")] @@ -1477,7 +1477,7 @@ GraphqlRoot { 4: GRAPHQL_BOGUS_SELECTION@570..571 0: R_PAREN@570..571 ")" [] [] 2: R_CURLY@571..573 "}" [Newline("\n")] [] - 15: GRAPHQL_OPERATION_DEFINITION@573..629 + 15: GRAPHQL_OPERATION_DEFINITION@573..630 0: GRAPHQL_OPERATION_TYPE@573..581 0: QUERY_KW@573..581 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")] 1: (empty) @@ -1499,14 +1499,14 @@ GraphqlRoot { 4: GRAPHQL_DIRECTIVE_LIST@595..595 2: R_PAREN@595..597 ")" [] [Whitespace(" ")] 3: GRAPHQL_DIRECTIVE_LIST@597..597 - 4: GRAPHQL_SELECTION_SET@597..629 + 4: GRAPHQL_SELECTION_SET@597..630 0: L_CURLY@597..598 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@598..627 - 0: GRAPHQL_FIELD@598..627 + 1: GRAPHQL_SELECTION_LIST@598..628 + 0: GRAPHQL_FIELD@598..628 0: (empty) 1: GRAPHQL_NAME@598..609 0: GRAPHQL_NAME@598..609 "likeStory" [Newline("\n"), Whitespace("\t")] [] - 2: GRAPHQL_ARGUMENTS@609..627 + 2: GRAPHQL_ARGUMENTS@609..628 0: L_PAREN@609..610 "(" [] [] 1: GRAPHQL_ARGUMENT_LIST@610..627 0: GRAPHQL_ARGUMENT@610..627 @@ -1517,181 +1517,181 @@ GraphqlRoot { 0: DOLLAR@619..620 "$" [] [] 1: GRAPHQL_NAME@620..627 0: GRAPHQL_NAME@620..627 "storyId" [] [] - 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@627..627 + 2: R_PAREN@627..628 ")" [] [] + 3: GRAPHQL_DIRECTIVE_LIST@628..628 4: (empty) - 2: R_CURLY@627..629 "}" [Newline("\n")] [] - 16: GRAPHQL_OPERATION_DEFINITION@629..686 - 0: GRAPHQL_OPERATION_TYPE@629..637 - 0: QUERY_KW@629..637 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")] + 2: R_CURLY@628..630 "}" [Newline("\n")] [] + 16: GRAPHQL_OPERATION_DEFINITION@630..687 + 0: GRAPHQL_OPERATION_TYPE@630..638 + 0: QUERY_KW@630..638 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")] 1: (empty) - 2: GRAPHQL_VARIABLE_DEFINITIONS@637..654 - 0: L_PAREN@637..638 "(" [] [] - 1: GRAPHQL_VARIABLE_DEFINITION_LIST@638..651 - 0: GRAPHQL_VARIABLE_DEFINITION@638..651 - 0: GRAPHQL_VARIABLE@638..646 - 0: DOLLAR@638..639 "$" [] [] - 1: GRAPHQL_NAME@639..646 - 0: GRAPHQL_NAME@639..646 "storyId" [] [] - 1: COLON@646..648 ":" [] [Whitespace(" ")] - 2: GRAPHQL_NON_NULL_TYPE@648..651 - 0: GRAPHQL_NAMED_TYPE@648..650 - 0: GRAPHQL_NAME@648..650 - 0: GRAPHQL_NAME@648..650 "ID" [] [] - 1: BANG@650..651 "!" [] [] + 2: GRAPHQL_VARIABLE_DEFINITIONS@638..655 + 0: L_PAREN@638..639 "(" [] [] + 1: GRAPHQL_VARIABLE_DEFINITION_LIST@639..652 + 0: GRAPHQL_VARIABLE_DEFINITION@639..652 + 0: GRAPHQL_VARIABLE@639..647 + 0: DOLLAR@639..640 "$" [] [] + 1: GRAPHQL_NAME@640..647 + 0: GRAPHQL_NAME@640..647 "storyId" [] [] + 1: COLON@647..649 ":" [] [Whitespace(" ")] + 2: GRAPHQL_NON_NULL_TYPE@649..652 + 0: GRAPHQL_NAMED_TYPE@649..651 + 0: GRAPHQL_NAME@649..651 + 0: GRAPHQL_NAME@649..651 "ID" [] [] + 1: BANG@651..652 "!" [] [] 3: (empty) - 4: GRAPHQL_DIRECTIVE_LIST@651..651 - 2: R_PAREN@651..654 ")" [] [Whitespace(" ")] - 3: GRAPHQL_DIRECTIVE_LIST@654..654 - 4: GRAPHQL_SELECTION_SET@654..686 - 0: L_CURLY@654..655 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@655..684 - 0: GRAPHQL_FIELD@655..667 + 4: GRAPHQL_DIRECTIVE_LIST@652..652 + 2: R_PAREN@652..655 ")" [] [Whitespace(" ")] + 3: GRAPHQL_DIRECTIVE_LIST@655..655 + 4: GRAPHQL_SELECTION_SET@655..687 + 0: L_CURLY@655..656 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@656..685 + 0: GRAPHQL_FIELD@656..668 0: (empty) - 1: GRAPHQL_NAME@655..667 - 0: GRAPHQL_NAME@655..667 "likeStory" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")] + 1: GRAPHQL_NAME@656..668 + 0: GRAPHQL_NAME@656..668 "likeStory" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@667..667 + 3: GRAPHQL_DIRECTIVE_LIST@668..668 4: (empty) - 1: GRAPHQL_FIELD@667..676 - 0: GRAPHQL_ALIAS@667..676 - 0: GRAPHQL_NAME@667..674 - 0: GRAPHQL_NAME@667..674 "storyId" [] [] - 1: COLON@674..676 ":" [] [Whitespace(" ")] + 1: GRAPHQL_FIELD@668..677 + 0: GRAPHQL_ALIAS@668..677 + 0: GRAPHQL_NAME@668..675 + 0: GRAPHQL_NAME@668..675 "storyId" [] [] + 1: COLON@675..677 ":" [] [Whitespace(" ")] 1: (empty) 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@676..676 + 3: GRAPHQL_DIRECTIVE_LIST@677..677 4: (empty) - 2: GRAPHQL_BOGUS_SELECTION@676..677 - 0: DOLLAR@676..677 "$" [] [] - 3: GRAPHQL_FIELD@677..684 + 2: GRAPHQL_BOGUS_SELECTION@677..678 + 0: DOLLAR@677..678 "$" [] [] + 3: GRAPHQL_FIELD@678..685 0: (empty) - 1: GRAPHQL_NAME@677..684 - 0: GRAPHQL_NAME@677..684 "storyId" [] [] + 1: GRAPHQL_NAME@678..685 + 0: GRAPHQL_NAME@678..685 "storyId" [] [] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@684..684 + 3: GRAPHQL_DIRECTIVE_LIST@685..685 4: (empty) - 2: R_CURLY@684..686 "}" [Newline("\n")] [] - 17: GRAPHQL_OPERATION_DEFINITION@686..735 - 0: GRAPHQL_OPERATION_TYPE@686..694 - 0: QUERY_KW@686..694 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")] + 2: R_CURLY@685..687 "}" [Newline("\n")] [] + 17: GRAPHQL_OPERATION_DEFINITION@687..736 + 0: GRAPHQL_OPERATION_TYPE@687..695 + 0: QUERY_KW@687..695 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")] 1: (empty) - 2: GRAPHQL_VARIABLE_DEFINITIONS@694..710 - 0: L_PAREN@694..695 "(" [] [] - 1: GRAPHQL_VARIABLE_DEFINITION_LIST@695..708 - 0: GRAPHQL_VARIABLE_DEFINITION@695..708 - 0: GRAPHQL_VARIABLE@695..703 - 0: DOLLAR@695..696 "$" [] [] - 1: GRAPHQL_NAME@696..703 - 0: GRAPHQL_NAME@696..703 "storyId" [] [] - 1: COLON@703..705 ":" [] [Whitespace(" ")] - 2: GRAPHQL_NON_NULL_TYPE@705..708 - 0: GRAPHQL_NAMED_TYPE@705..707 - 0: GRAPHQL_NAME@705..707 - 0: GRAPHQL_NAME@705..707 "ID" [] [] - 1: BANG@707..708 "!" [] [] + 2: GRAPHQL_VARIABLE_DEFINITIONS@695..711 + 0: L_PAREN@695..696 "(" [] [] + 1: GRAPHQL_VARIABLE_DEFINITION_LIST@696..709 + 0: GRAPHQL_VARIABLE_DEFINITION@696..709 + 0: GRAPHQL_VARIABLE@696..704 + 0: DOLLAR@696..697 "$" [] [] + 1: GRAPHQL_NAME@697..704 + 0: GRAPHQL_NAME@697..704 "storyId" [] [] + 1: COLON@704..706 ":" [] [Whitespace(" ")] + 2: GRAPHQL_NON_NULL_TYPE@706..709 + 0: GRAPHQL_NAMED_TYPE@706..708 + 0: GRAPHQL_NAME@706..708 + 0: GRAPHQL_NAME@706..708 "ID" [] [] + 1: BANG@708..709 "!" [] [] 3: (empty) - 4: GRAPHQL_DIRECTIVE_LIST@708..708 - 2: R_PAREN@708..710 ")" [] [Whitespace(" ")] - 3: GRAPHQL_DIRECTIVE_LIST@710..710 - 4: GRAPHQL_SELECTION_SET@710..735 - 0: L_CURLY@710..711 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@711..733 - 0: GRAPHQL_FIELD@711..723 + 4: GRAPHQL_DIRECTIVE_LIST@709..709 + 2: R_PAREN@709..711 ")" [] [Whitespace(" ")] + 3: GRAPHQL_DIRECTIVE_LIST@711..711 + 4: GRAPHQL_SELECTION_SET@711..736 + 0: L_CURLY@711..712 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@712..734 + 0: GRAPHQL_FIELD@712..724 0: (empty) - 1: GRAPHQL_NAME@711..723 - 0: GRAPHQL_NAME@711..723 "likeStory" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")] + 1: GRAPHQL_NAME@712..724 + 0: GRAPHQL_NAME@712..724 "likeStory" [Newline("\n"), Whitespace("\t")] [Whitespace(" ")] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@723..723 + 3: GRAPHQL_DIRECTIVE_LIST@724..724 4: (empty) - 1: GRAPHQL_FIELD@723..732 - 0: GRAPHQL_ALIAS@723..732 - 0: GRAPHQL_NAME@723..730 - 0: GRAPHQL_NAME@723..730 "storyId" [] [] - 1: COLON@730..732 ":" [] [Whitespace(" ")] + 1: GRAPHQL_FIELD@724..733 + 0: GRAPHQL_ALIAS@724..733 + 0: GRAPHQL_NAME@724..731 + 0: GRAPHQL_NAME@724..731 "storyId" [] [] + 1: COLON@731..733 ":" [] [Whitespace(" ")] 1: (empty) 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@732..732 + 3: GRAPHQL_DIRECTIVE_LIST@733..733 4: (empty) - 2: GRAPHQL_BOGUS_SELECTION@732..733 - 0: DOLLAR@732..733 "$" [] [] - 2: R_CURLY@733..735 "}" [Newline("\n")] [] - 18: GRAPHQL_BOGUS_DEFINITION@735..769 - 0: GRAPHQL_OPERATION_TYPE@735..743 - 0: QUERY_KW@735..743 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")] - 1: GRAPHQL_BOGUS@743..755 - 0: L_PAREN@743..744 "(" [] [] - 1: GRAPHQL_BOGUS@744..753 - 0: GRAPHQL_VARIABLE_DEFINITION@744..745 - 0: GRAPHQL_VARIABLE@744..745 - 0: DOLLAR@744..745 "$" [] [] + 2: GRAPHQL_BOGUS_SELECTION@733..734 + 0: DOLLAR@733..734 "$" [] [] + 2: R_CURLY@734..736 "}" [Newline("\n")] [] + 18: GRAPHQL_BOGUS_DEFINITION@736..770 + 0: GRAPHQL_OPERATION_TYPE@736..744 + 0: QUERY_KW@736..744 "query" [Newline("\n"), Newline("\n")] [Whitespace(" ")] + 1: GRAPHQL_BOGUS@744..756 + 0: L_PAREN@744..745 "(" [] [] + 1: GRAPHQL_BOGUS@745..754 + 0: GRAPHQL_VARIABLE_DEFINITION@745..746 + 0: GRAPHQL_VARIABLE@745..746 + 0: DOLLAR@745..746 "$" [] [] 1: (empty) 1: (empty) 2: (empty) 3: (empty) - 4: GRAPHQL_DIRECTIVE_LIST@745..745 - 1: GRAPHQL_BOGUS@745..753 - 0: GRAPHQL_INT_LITERAL@745..748 "156" [] [] - 1: COLON@748..750 ":" [] [Whitespace(" ")] - 2: GRAPHQL_DEFAULT_VALUE@750..752 - 0: EQ@750..752 "=" [] [Whitespace(" ")] + 4: GRAPHQL_DIRECTIVE_LIST@746..746 + 1: GRAPHQL_BOGUS@746..754 + 0: GRAPHQL_INT_LITERAL@746..749 "156" [] [] + 1: COLON@749..751 ":" [] [Whitespace(" ")] + 2: GRAPHQL_DEFAULT_VALUE@751..753 + 0: EQ@751..753 "=" [] [Whitespace(" ")] 1: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@752..753 - 0: GRAPHQL_DIRECTIVE@752..753 - 0: AT@752..753 "@" [] [] + 3: GRAPHQL_DIRECTIVE_LIST@753..754 + 0: GRAPHQL_DIRECTIVE@753..754 + 0: AT@753..754 "@" [] [] 1: (empty) 2: (empty) - 2: R_PAREN@753..755 ")" [] [Whitespace(" ")] - 2: GRAPHQL_DIRECTIVE_LIST@755..755 - 3: GRAPHQL_SELECTION_SET@755..769 - 0: L_CURLY@755..756 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@756..767 - 0: GRAPHQL_FIELD@756..767 + 2: R_PAREN@754..756 ")" [] [Whitespace(" ")] + 2: GRAPHQL_DIRECTIVE_LIST@756..756 + 3: GRAPHQL_SELECTION_SET@756..770 + 0: L_CURLY@756..757 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@757..768 + 0: GRAPHQL_FIELD@757..768 0: (empty) - 1: GRAPHQL_NAME@756..767 - 0: GRAPHQL_NAME@756..767 "likeStory" [Newline("\n"), Whitespace("\t")] [] + 1: GRAPHQL_NAME@757..768 + 0: GRAPHQL_NAME@757..768 "likeStory" [Newline("\n"), Whitespace("\t")] [] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@767..767 + 3: GRAPHQL_DIRECTIVE_LIST@768..768 4: (empty) - 2: R_CURLY@767..769 "}" [Newline("\n")] [] - 19: GRAPHQL_OPERATION_DEFINITION@769..832 - 0: GRAPHQL_OPERATION_TYPE@769..800 - 0: QUERY_KW@769..800 "query" [Newline("\n"), Newline("\n"), Comments("# malformed directives"), Newline("\n")] [Whitespace(" ")] + 2: R_CURLY@768..770 "}" [Newline("\n")] [] + 19: GRAPHQL_OPERATION_DEFINITION@770..833 + 0: GRAPHQL_OPERATION_TYPE@770..801 + 0: QUERY_KW@770..801 "query" [Newline("\n"), Newline("\n"), Comments("# malformed directives"), Newline("\n")] [Whitespace(" ")] 1: (empty) - 2: GRAPHQL_VARIABLE_DEFINITIONS@800..816 - 0: L_PAREN@800..801 "(" [] [] - 1: GRAPHQL_VARIABLE_DEFINITION_LIST@801..814 - 0: GRAPHQL_VARIABLE_DEFINITION@801..814 - 0: GRAPHQL_VARIABLE@801..809 - 0: DOLLAR@801..802 "$" [] [] - 1: GRAPHQL_NAME@802..809 - 0: GRAPHQL_NAME@802..809 "storyId" [] [] - 1: COLON@809..811 ":" [] [Whitespace(" ")] - 2: GRAPHQL_NON_NULL_TYPE@811..814 - 0: GRAPHQL_NAMED_TYPE@811..813 - 0: GRAPHQL_NAME@811..813 - 0: GRAPHQL_NAME@811..813 "ID" [] [] - 1: BANG@813..814 "!" [] [] + 2: GRAPHQL_VARIABLE_DEFINITIONS@801..817 + 0: L_PAREN@801..802 "(" [] [] + 1: GRAPHQL_VARIABLE_DEFINITION_LIST@802..815 + 0: GRAPHQL_VARIABLE_DEFINITION@802..815 + 0: GRAPHQL_VARIABLE@802..810 + 0: DOLLAR@802..803 "$" [] [] + 1: GRAPHQL_NAME@803..810 + 0: GRAPHQL_NAME@803..810 "storyId" [] [] + 1: COLON@810..812 ":" [] [Whitespace(" ")] + 2: GRAPHQL_NON_NULL_TYPE@812..815 + 0: GRAPHQL_NAMED_TYPE@812..814 + 0: GRAPHQL_NAME@812..814 + 0: GRAPHQL_NAME@812..814 "ID" [] [] + 1: BANG@814..815 "!" [] [] 3: (empty) - 4: GRAPHQL_DIRECTIVE_LIST@814..814 - 2: R_PAREN@814..816 ")" [] [Whitespace(" ")] - 3: GRAPHQL_DIRECTIVE_LIST@816..818 - 0: GRAPHQL_DIRECTIVE@816..818 - 0: AT@816..818 "@" [] [Whitespace(" ")] + 4: GRAPHQL_DIRECTIVE_LIST@815..815 + 2: R_PAREN@815..817 ")" [] [Whitespace(" ")] + 3: GRAPHQL_DIRECTIVE_LIST@817..819 + 0: GRAPHQL_DIRECTIVE@817..819 + 0: AT@817..819 "@" [] [Whitespace(" ")] 1: (empty) 2: (empty) - 4: GRAPHQL_SELECTION_SET@818..832 - 0: L_CURLY@818..819 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@819..830 - 0: GRAPHQL_FIELD@819..830 + 4: GRAPHQL_SELECTION_SET@819..833 + 0: L_CURLY@819..820 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@820..831 + 0: GRAPHQL_FIELD@820..831 0: (empty) - 1: GRAPHQL_NAME@819..830 - 0: GRAPHQL_NAME@819..830 "likeStory" [Newline("\n"), Whitespace("\t")] [] + 1: GRAPHQL_NAME@820..831 + 0: GRAPHQL_NAME@820..831 "likeStory" [Newline("\n"), Whitespace("\t")] [] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@830..830 + 3: GRAPHQL_DIRECTIVE_LIST@831..831 4: (empty) - 2: R_CURLY@830..832 "}" [Newline("\n")] [] - 2: EOF@832..833 "" [Newline("\n")] [] + 2: R_CURLY@831..833 "}" [Newline("\n")] [] + 2: EOF@833..834 "" [Newline("\n")] [] ``` @@ -2157,19 +2157,6 @@ operation.graphql:59:29 parse ━━━━━━━━━━━━━━━━ 60 │ } 61 │ -operation.graphql:64:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - - × expected `)` but instead found `}` - - 62 │ query ($storyId: ID!) { - 63 │ likeStory(storyId: $storyId - > 64 │ } - │ ^ - 65 │ - 66 │ query ($storyId: ID!) { - - i Remove } - operation.graphql:67:21 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Expected a name but instead found '$'. diff --git a/crates/biome_graphql_parser/tests/graphql_test_suite/err/selection_set.graphql b/crates/biome_graphql_parser/tests/graphql_test_suite/err/selection_set.graphql index 331d3ca7286e..349844cf41cb 100644 --- a/crates/biome_graphql_parser/tests/graphql_test_suite/err/selection_set.graphql +++ b/crates/biome_graphql_parser/tests/graphql_test_suite/err/selection_set.graphql @@ -37,7 +37,7 @@ query } } { - ironMan: hero(name: "Tony Stark" { + ironMan: hero(name: "Tony Stark") { country, firstWife: wife(name: "Pepper"){ } diff --git a/crates/biome_graphql_parser/tests/graphql_test_suite/err/selection_set.graphql.snap b/crates/biome_graphql_parser/tests/graphql_test_suite/err/selection_set.graphql.snap index 193fa9495c5f..aee11ad08e98 100644 --- a/crates/biome_graphql_parser/tests/graphql_test_suite/err/selection_set.graphql.snap +++ b/crates/biome_graphql_parser/tests/graphql_test_suite/err/selection_set.graphql.snap @@ -43,7 +43,7 @@ query } } { - ironMan: hero(name: "Tony Stark" { + ironMan: hero(name: "Tony Stark") { country, firstWife: wife(name: "Pepper"){ } @@ -148,58 +148,65 @@ GraphqlRoot { GraphqlSelectionSet { l_curly_token: L_CURLY@35..38 "{" [Newline("\n"), Newline("\n")] [], selections: GraphqlSelectionList [ - GraphqlField { - alias: missing (optional), - name: GraphqlName { - value_token: GRAPHQL_NAME@38..44 "hero" [Newline("\n"), Whitespace("\t")] [], - }, - arguments: GraphqlArguments { - l_paren_token: L_PAREN@44..45 "(" [] [], - arguments: GraphqlArgumentList [ - GraphqlArgument { - name: GraphqlName { - value_token: GRAPHQL_NAME@45..49 "name" [] [], - }, - colon_token: COLON@49..51 ":" [] [Whitespace(" ")], - value: GraphqlStringValue { - graphql_string_literal_token: GRAPHQL_STRING_LITERAL@51..63 "\"Tony Stark\"" [] [], + GraphqlBogusSelection { + items: [ + GraphqlName { + value_token: GRAPHQL_NAME@38..44 "hero" [Newline("\n"), Whitespace("\t")] [], + }, + GraphqlBogus { + items: [ + L_PAREN@44..45 "(" [] [], + GraphqlBogus { + items: [ + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@45..49 "name" [] [], + }, + colon_token: COLON@49..51 ":" [] [Whitespace(" ")], + value: GraphqlStringValue { + graphql_string_literal_token: GRAPHQL_STRING_LITERAL@51..63 "\"Tony Stark\"" [] [], + }, + }, + GraphqlBogus { + items: [ + R_CURLY@63..65 "}" [Newline("\n")] [], + L_CURLY@65..68 "{" [Newline("\n"), Newline("\n")] [], + ], + }, + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@68..74 "hero" [Newline("\n"), Whitespace("\t")] [], + }, + colon_token: missing (required), + value: missing (required), + }, + ], }, - }, - ], - r_paren_token: missing (required), - }, - directives: GraphqlDirectiveList [], - selection_set: missing (optional), + ], + }, + GraphqlDirectiveList [], + ], + }, + GraphqlBogusSelection { + items: [ + L_PAREN@74..75 "(" [] [], + ], }, - ], - r_curly_token: R_CURLY@63..65 "}" [Newline("\n")] [], - }, - GraphqlSelectionSet { - l_curly_token: L_CURLY@65..68 "{" [Newline("\n"), Newline("\n")] [], - selections: GraphqlSelectionList [ GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@68..74 "hero" [Newline("\n"), Whitespace("\t")] [], - }, - arguments: GraphqlArguments { - l_paren_token: L_PAREN@74..75 "(" [] [], - arguments: GraphqlArgumentList [ - GraphqlArgument { - name: GraphqlName { - value_token: GRAPHQL_NAME@75..80 "name" [] [Whitespace(" ")], - }, - colon_token: missing (required), - value: GraphqlStringValue { - graphql_string_literal_token: GRAPHQL_STRING_LITERAL@80..92 "\"Tony Stark\"" [] [], - }, - }, - ], - r_paren_token: R_PAREN@92..93 ")" [] [], + value_token: GRAPHQL_NAME@75..80 "name" [] [Whitespace(" ")], }, + arguments: missing (optional), directives: GraphqlDirectiveList [], selection_set: missing (optional), }, + GraphqlBogusSelection { + items: [ + GRAPHQL_STRING_LITERAL@80..92 "\"Tony Stark\"" [] [], + R_PAREN@92..93 ")" [] [], + ], + }, GraphqlField { alias: missing (optional), name: GraphqlName { @@ -289,73 +296,80 @@ GraphqlRoot { directives: GraphqlDirectiveList [], selection_set: missing (optional), }, - GraphqlField { - alias: missing (optional), - name: GraphqlName { - value_token: GRAPHQL_NAME@180..189 "height" [Newline("\n"), Whitespace("\t\t")] [], - }, - arguments: GraphqlArguments { - l_paren_token: L_PAREN@189..190 "(" [] [], - arguments: GraphqlArgumentList [ - GraphqlArgument { - name: GraphqlName { - value_token: GRAPHQL_NAME@190..195 "unit" [] [Whitespace(" ")], - }, - colon_token: missing (required), - value: GraphqlEnumValue { - graphql_name: GraphqlName { - value_token: GRAPHQL_NAME@195..200 "FOOT" [] [Skipped(",")], - }, + GraphqlBogusSelection { + items: [ + GraphqlName { + value_token: GRAPHQL_NAME@180..189 "height" [Newline("\n"), Whitespace("\t\t")] [], + }, + GraphqlBogus { + items: [ + L_PAREN@189..190 "(" [] [], + GraphqlBogus { + items: [ + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@190..195 "unit" [] [Whitespace(" ")], + }, + colon_token: missing (required), + value: GraphqlEnumValue { + graphql_name: GraphqlName { + value_token: GRAPHQL_NAME@195..200 "FOOT" [] [Skipped(",")], + }, + }, + }, + GraphqlBogus { + items: [ + R_CURLY@200..203 "}" [Newline("\n"), Whitespace("\t")] [], + R_CURLY@203..205 "}" [Newline("\n")] [], + L_CURLY@205..208 "{" [Newline("\n"), Newline("\n")] [], + ], + }, + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@208..218 "ironMan" [Newline("\n"), Whitespace(" ")] [], + }, + colon_token: COLON@218..220 ":" [] [Whitespace(" ")], + value: missing (required), + }, + ], }, - }, - ], - r_paren_token: missing (required), + ], + }, + GraphqlDirectiveList [], + ], + }, + GraphqlBogusSelection { + items: [ + L_PAREN@220..221 "(" [] [], + ], + }, + GraphqlField { + alias: GraphqlAlias { + value: GraphqlName { + value_token: GRAPHQL_NAME@221..225 "name" [] [], + }, + colon_token: COLON@225..227 ":" [] [Whitespace(" ")], }, + name: missing (required), + arguments: missing (optional), directives: GraphqlDirectiveList [], selection_set: missing (optional), }, - ], - r_curly_token: R_CURLY@200..203 "}" [Newline("\n"), Whitespace("\t")] [], - }, - }, - ], - r_curly_token: R_CURLY@203..205 "}" [Newline("\n")] [], - }, - GraphqlSelectionSet { - l_curly_token: L_CURLY@205..208 "{" [Newline("\n"), Newline("\n")] [], - selections: GraphqlSelectionList [ - GraphqlField { - alias: GraphqlAlias { - value: GraphqlName { - value_token: GRAPHQL_NAME@208..218 "ironMan" [Newline("\n"), Whitespace(" ")] [], - }, - colon_token: COLON@218..220 ":" [] [Whitespace(" ")], - }, - name: missing (required), - arguments: GraphqlArguments { - l_paren_token: L_PAREN@220..221 "(" [] [], - arguments: GraphqlArgumentList [ - GraphqlArgument { - name: GraphqlName { - value_token: GRAPHQL_NAME@221..225 "name" [] [], - }, - colon_token: COLON@225..227 ":" [] [Whitespace(" ")], - value: GraphqlStringValue { - graphql_string_literal_token: GRAPHQL_STRING_LITERAL@227..239 "\"Tony Stark\"" [] [], - }, + GraphqlBogusSelection { + items: [ + GRAPHQL_STRING_LITERAL@227..239 "\"Tony Stark\"" [] [], + R_PAREN@239..240 ")" [] [], + ], }, ], - r_paren_token: R_PAREN@239..240 ")" [] [], + r_curly_token: R_CURLY@240..242 "}" [Newline("\n")] [], }, - directives: GraphqlDirectiveList [], - selection_set: missing (optional), }, - ], - r_curly_token: R_CURLY@240..242 "}" [Newline("\n")] [], - }, - GraphqlSelectionSet { - l_curly_token: L_CURLY@242..245 "{" [Newline("\n"), Newline("\n")] [], - selections: GraphqlSelectionList [ + GraphqlBogusSelection { + items: [ + L_CURLY@242..245 "{" [Newline("\n"), Newline("\n")] [], + ], + }, GraphqlBogusSelection { items: [ GraphqlBogus { @@ -407,20 +421,20 @@ GraphqlRoot { }, colon_token: COLON@297..299 ":" [] [Whitespace(" ")], value: GraphqlStringValue { - graphql_string_literal_token: GRAPHQL_STRING_LITERAL@299..312 "\"Tony Stark\"" [] [Whitespace(" ")], + graphql_string_literal_token: GRAPHQL_STRING_LITERAL@299..311 "\"Tony Stark\"" [] [], }, }, ], - r_paren_token: missing (required), + r_paren_token: R_PAREN@311..313 ")" [] [Whitespace(" ")], }, directives: GraphqlDirectiveList [], selection_set: GraphqlSelectionSet { - l_curly_token: L_CURLY@312..313 "{" [] [], + l_curly_token: L_CURLY@313..314 "{" [] [], selections: GraphqlSelectionList [ GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@313..324 "country" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")], + value_token: GRAPHQL_NAME@314..325 "country" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")], }, arguments: missing (optional), directives: GraphqlDirectiveList [], @@ -429,91 +443,91 @@ GraphqlRoot { GraphqlField { alias: GraphqlAlias { value: GraphqlName { - value_token: GRAPHQL_NAME@324..336 "firstWife" [Newline("\n"), Whitespace("\t\t")] [], + value_token: GRAPHQL_NAME@325..337 "firstWife" [Newline("\n"), Whitespace("\t\t")] [], }, - colon_token: COLON@336..338 ":" [] [Whitespace(" ")], + colon_token: COLON@337..339 ":" [] [Whitespace(" ")], }, name: GraphqlName { - value_token: GRAPHQL_NAME@338..342 "wife" [] [], + value_token: GRAPHQL_NAME@339..343 "wife" [] [], }, arguments: GraphqlArguments { - l_paren_token: L_PAREN@342..343 "(" [] [], + l_paren_token: L_PAREN@343..344 "(" [] [], arguments: GraphqlArgumentList [ GraphqlArgument { name: GraphqlName { - value_token: GRAPHQL_NAME@343..347 "name" [] [], + value_token: GRAPHQL_NAME@344..348 "name" [] [], }, - colon_token: COLON@347..349 ":" [] [Whitespace(" ")], + colon_token: COLON@348..350 ":" [] [Whitespace(" ")], value: GraphqlStringValue { - graphql_string_literal_token: GRAPHQL_STRING_LITERAL@349..357 "\"Pepper\"" [] [], + graphql_string_literal_token: GRAPHQL_STRING_LITERAL@350..358 "\"Pepper\"" [] [], }, }, ], - r_paren_token: R_PAREN@357..358 ")" [] [], + r_paren_token: R_PAREN@358..359 ")" [] [], }, directives: GraphqlDirectiveList [], selection_set: GraphqlSelectionSet { - l_curly_token: L_CURLY@358..359 "{" [] [], + l_curly_token: L_CURLY@359..360 "{" [] [], selections: GraphqlSelectionList [], - r_curly_token: R_CURLY@359..363 "}" [Newline("\n"), Whitespace("\t\t")] [], + r_curly_token: R_CURLY@360..364 "}" [Newline("\n"), Whitespace("\t\t")] [], }, }, ], - r_curly_token: R_CURLY@363..366 "}" [Newline("\n"), Whitespace("\t")] [], + r_curly_token: R_CURLY@364..367 "}" [Newline("\n"), Whitespace("\t")] [], }, }, ], - r_curly_token: R_CURLY@366..368 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@367..369 "}" [Newline("\n")] [], }, GraphqlSelectionSet { - l_curly_token: L_CURLY@368..371 "{" [Newline("\n"), Newline("\n")] [], + l_curly_token: L_CURLY@369..372 "{" [Newline("\n"), Newline("\n")] [], selections: GraphqlSelectionList [ GraphqlField { alias: GraphqlAlias { value: GraphqlName { - value_token: GRAPHQL_NAME@371..381 "ironMan" [Newline("\n"), Whitespace(" ")] [], + value_token: GRAPHQL_NAME@372..382 "ironMan" [Newline("\n"), Whitespace(" ")] [], }, - colon_token: COLON@381..383 ":" [] [Whitespace(" ")], + colon_token: COLON@382..384 ":" [] [Whitespace(" ")], }, name: GraphqlName { - value_token: GRAPHQL_NAME@383..387 "hero" [] [], + value_token: GRAPHQL_NAME@384..388 "hero" [] [], }, arguments: GraphqlArguments { - l_paren_token: L_PAREN@387..388 "(" [] [], + l_paren_token: L_PAREN@388..389 "(" [] [], arguments: GraphqlArgumentList [ GraphqlArgument { name: GraphqlName { - value_token: GRAPHQL_NAME@388..392 "name" [] [], + value_token: GRAPHQL_NAME@389..393 "name" [] [], }, - colon_token: COLON@392..394 ":" [] [Whitespace(" ")], + colon_token: COLON@393..395 ":" [] [Whitespace(" ")], value: GraphqlStringValue { - graphql_string_literal_token: GRAPHQL_STRING_LITERAL@394..406 "\"Tony Stark\"" [] [], + graphql_string_literal_token: GRAPHQL_STRING_LITERAL@395..407 "\"Tony Stark\"" [] [], }, }, ], - r_paren_token: R_PAREN@406..408 ")" [] [Whitespace(" ")], + r_paren_token: R_PAREN@407..409 ")" [] [Whitespace(" ")], }, directives: GraphqlDirectiveList [ GraphqlDirective { - at_token: AT@408..409 "@" [] [], + at_token: AT@409..410 "@" [] [], name: missing (required), arguments: missing (optional), }, ], selection_set: GraphqlSelectionSet { - l_curly_token: L_CURLY@409..410 "{" [] [], + l_curly_token: L_CURLY@410..411 "{" [] [], selections: GraphqlSelectionList [ GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@410..421 "country" [Newline("\n"), Whitespace("\t\t")] [Whitespace(" ")], + value_token: GRAPHQL_NAME@411..422 "country" [Newline("\n"), Whitespace("\t\t")] [Whitespace(" ")], }, arguments: missing (optional), directives: GraphqlDirectiveList [ GraphqlDirective { - at_token: AT@421..423 "@" [] [Skipped(",")], + at_token: AT@422..424 "@" [] [Skipped(",")], name: GraphqlName { - value_token: GRAPHQL_NAME@423..431 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")], + value_token: GRAPHQL_NAME@424..432 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")], }, arguments: missing (optional), }, @@ -523,111 +537,111 @@ GraphqlRoot { GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@431..437 "age" [Newline("\n"), Whitespace("\t\t")] [], + value_token: GRAPHQL_NAME@432..438 "age" [Newline("\n"), Whitespace("\t\t")] [], }, arguments: missing (optional), directives: GraphqlDirectiveList [], selection_set: missing (optional), }, ], - r_curly_token: R_CURLY@437..440 "}" [Newline("\n"), Whitespace("\t")] [], + r_curly_token: R_CURLY@438..441 "}" [Newline("\n"), Whitespace("\t")] [], }, }, ], - r_curly_token: R_CURLY@440..442 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@441..443 "}" [Newline("\n")] [], }, GraphqlSelectionSet { - l_curly_token: L_CURLY@442..463 "{" [Newline("\n"), Newline("\n"), Comments("# Fragment spread"), Newline("\n")] [], + l_curly_token: L_CURLY@443..464 "{" [Newline("\n"), Newline("\n"), Comments("# Fragment spread"), Newline("\n")] [], selections: GraphqlSelectionList [ GraphqlBogusSelection { items: [ GraphqlAlias { value: GraphqlName { - value_token: GRAPHQL_NAME@463..473 "ironMan" [Newline("\n"), Whitespace(" ")] [], + value_token: GRAPHQL_NAME@464..474 "ironMan" [Newline("\n"), Whitespace(" ")] [], }, - colon_token: COLON@473..475 ":" [] [Whitespace(" ")], + colon_token: COLON@474..476 ":" [] [Whitespace(" ")], }, GraphqlBogus { items: [ - L_PAREN@475..476 "(" [] [], + L_PAREN@476..477 "(" [] [], GraphqlBogus { items: [ GraphqlBogus { items: [ - COLON@476..478 ":" [] [Whitespace(" ")], - GRAPHQL_STRING_LITERAL@478..490 "\"Tony Stark\"" [] [], + COLON@477..479 ":" [] [Whitespace(" ")], + GRAPHQL_STRING_LITERAL@479..491 "\"Tony Stark\"" [] [], ], }, ], }, - R_PAREN@490..492 ")" [] [Whitespace(" ")], + R_PAREN@491..493 ")" [] [Whitespace(" ")], ], }, GraphqlDirectiveList [ GraphqlDirective { - at_token: AT@492..494 "@" [] [Whitespace(" ")], + at_token: AT@493..495 "@" [] [Whitespace(" ")], name: missing (required), arguments: missing (optional), }, ], GraphqlSelectionSet { - l_curly_token: L_CURLY@494..495 "{" [] [], + l_curly_token: L_CURLY@495..496 "{" [] [], selections: GraphqlSelectionList [ GraphqlInlineFragment { - dotdotdot_token: DOT3@495..501 "..." [Newline("\n"), Whitespace("\t\t")] [], + dotdotdot_token: DOT3@496..502 "..." [Newline("\n"), Whitespace("\t\t")] [], type_condition: missing (optional), directives: GraphqlDirectiveList [], selection_set: GraphqlSelectionSet { l_curly_token: missing (required), selections: GraphqlSelectionList [], - r_curly_token: R_CURLY@501..504 "}" [Newline("\n"), Whitespace("\t")] [], + r_curly_token: R_CURLY@502..505 "}" [Newline("\n"), Whitespace("\t")] [], }, }, ], - r_curly_token: R_CURLY@504..506 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@505..507 "}" [Newline("\n")] [], }, ], }, ], - r_curly_token: R_CURLY@506..508 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@507..509 "}" [Newline("\n")] [], }, GraphqlSelectionSet { - l_curly_token: L_CURLY@508..511 "{" [Newline("\n"), Newline("\n")] [], + l_curly_token: L_CURLY@509..512 "{" [Newline("\n"), Newline("\n")] [], selections: GraphqlSelectionList [ GraphqlInlineFragment { - dotdotdot_token: DOT3@511..518 "..." [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + dotdotdot_token: DOT3@512..519 "..." [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], type_condition: missing (optional), directives: GraphqlDirectiveList [], selection_set: GraphqlSelectionSet { - l_curly_token: L_CURLY@518..519 "{" [] [], + l_curly_token: L_CURLY@519..520 "{" [] [], selections: GraphqlSelectionList [ GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@519..526 "hero" [Newline("\n"), Whitespace("\t\t")] [], + value_token: GRAPHQL_NAME@520..527 "hero" [Newline("\n"), Whitespace("\t\t")] [], }, arguments: missing (optional), directives: GraphqlDirectiveList [], selection_set: missing (optional), }, ], - r_curly_token: R_CURLY@526..529 "}" [Newline("\n"), Whitespace("\t")] [], + r_curly_token: R_CURLY@527..530 "}" [Newline("\n"), Whitespace("\t")] [], }, }, ], - r_curly_token: R_CURLY@529..531 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@530..532 "}" [Newline("\n")] [], }, GraphqlSelectionSet { - l_curly_token: L_CURLY@531..534 "{" [Newline("\n"), Newline("\n")] [], + l_curly_token: L_CURLY@532..535 "{" [Newline("\n"), Newline("\n")] [], selections: GraphqlSelectionList [ GraphqlInlineFragment { - dotdotdot_token: DOT3@534..541 "..." [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + dotdotdot_token: DOT3@535..542 "..." [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], type_condition: missing (optional), directives: GraphqlDirectiveList [ GraphqlDirective { - at_token: AT@541..542 "@" [] [], + at_token: AT@542..543 "@" [] [], name: GraphqlName { - value_token: GRAPHQL_NAME@542..549 "hero" [Newline("\n"), Whitespace("\t\t")] [], + value_token: GRAPHQL_NAME@543..550 "hero" [Newline("\n"), Whitespace("\t\t")] [], }, arguments: missing (optional), }, @@ -635,23 +649,23 @@ GraphqlRoot { selection_set: GraphqlSelectionSet { l_curly_token: missing (required), selections: GraphqlSelectionList [], - r_curly_token: R_CURLY@549..552 "}" [Newline("\n"), Whitespace("\t")] [], + r_curly_token: R_CURLY@550..553 "}" [Newline("\n"), Whitespace("\t")] [], }, }, ], - r_curly_token: R_CURLY@552..554 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@553..555 "}" [Newline("\n")] [], }, GraphqlSelectionSet { - l_curly_token: L_CURLY@554..557 "{" [Newline("\n"), Newline("\n")] [], + l_curly_token: L_CURLY@555..558 "{" [Newline("\n"), Newline("\n")] [], selections: GraphqlSelectionList [ GraphqlFragmentSpread { - dotdotdot_token: DOT3@557..564 "..." [Newline("\n"), Whitespace("\t")] [Whitespace(" ")], + dotdotdot_token: DOT3@558..565 "..." [Newline("\n"), Whitespace("\t")] [Whitespace(" ")], name: GraphqlName { - value_token: GRAPHQL_NAME@564..569 "Hero" [] [Whitespace(" ")], + value_token: GRAPHQL_NAME@565..570 "Hero" [] [Whitespace(" ")], }, directives: GraphqlDirectiveList [ GraphqlDirective { - at_token: AT@569..571 "@" [] [Whitespace(" ")], + at_token: AT@570..572 "@" [] [Whitespace(" ")], name: missing (required), arguments: missing (optional), }, @@ -659,13 +673,13 @@ GraphqlRoot { }, GraphqlBogusSelection { items: [ - L_CURLY@571..572 "{" [] [], + L_CURLY@572..573 "{" [] [], ], }, GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@572..580 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")], + value_token: GRAPHQL_NAME@573..581 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")], }, arguments: missing (optional), directives: GraphqlDirectiveList [], @@ -674,47 +688,47 @@ GraphqlRoot { GraphqlField { alias: missing (optional), name: GraphqlName { - value_token: GRAPHQL_NAME@580..586 "age" [Newline("\n"), Whitespace("\t\t")] [], + value_token: GRAPHQL_NAME@581..587 "age" [Newline("\n"), Whitespace("\t\t")] [], }, arguments: missing (optional), directives: GraphqlDirectiveList [], selection_set: missing (optional), }, ], - r_curly_token: R_CURLY@586..589 "}" [Newline("\n"), Whitespace("\t")] [], + r_curly_token: R_CURLY@587..590 "}" [Newline("\n"), Whitespace("\t")] [], }, GraphqlBogusDefinition { items: [ - R_CURLY@589..591 "}" [Newline("\n")] [], + R_CURLY@590..592 "}" [Newline("\n")] [], ], }, GraphqlSelectionSet { - l_curly_token: L_CURLY@591..594 "{" [Newline("\n"), Newline("\n")] [], + l_curly_token: L_CURLY@592..595 "{" [Newline("\n"), Newline("\n")] [], selections: GraphqlSelectionList [ GraphqlInlineFragment { - dotdotdot_token: DOT3@594..600 "..." [Newline("\n"), Whitespace(" ")] [], + dotdotdot_token: DOT3@595..601 "..." [Newline("\n"), Whitespace(" ")] [], type_condition: missing (optional), directives: GraphqlDirectiveList [], selection_set: GraphqlSelectionSet { l_curly_token: missing (required), selections: GraphqlSelectionList [], - r_curly_token: R_CURLY@600..602 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@601..603 "}" [Newline("\n")] [], }, }, ], r_curly_token: missing (required), }, ], - eof_token: EOF@602..604 "" [Newline("\n"), Newline("\n")] [], + eof_token: EOF@603..605 "" [Newline("\n"), Newline("\n")] [], } ``` ## CST ``` -0: GRAPHQL_ROOT@0..604 +0: GRAPHQL_ROOT@0..605 0: (empty) - 1: GRAPHQL_DEFINITION_LIST@0..602 + 1: GRAPHQL_DEFINITION_LIST@0..603 0: GRAPHQL_SELECTION_SET@0..35 0: L_CURLY@0..1 "{" [] [] 1: GRAPHQL_SELECTION_LIST@1..34 @@ -750,60 +764,57 @@ GraphqlRoot { 3: GRAPHQL_DIRECTIVE_LIST@34..34 4: (empty) 2: R_CURLY@34..35 "}" [] [] - 1: GRAPHQL_SELECTION_SET@35..65 + 1: GRAPHQL_SELECTION_SET@35..121 0: L_CURLY@35..38 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@38..63 - 0: GRAPHQL_FIELD@38..63 - 0: (empty) - 1: GRAPHQL_NAME@38..44 + 1: GRAPHQL_SELECTION_LIST@38..118 + 0: GRAPHQL_BOGUS_SELECTION@38..74 + 0: GRAPHQL_NAME@38..44 0: GRAPHQL_NAME@38..44 "hero" [Newline("\n"), Whitespace("\t")] [] - 2: GRAPHQL_ARGUMENTS@44..63 + 1: GRAPHQL_BOGUS@44..74 0: L_PAREN@44..45 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@45..63 + 1: GRAPHQL_BOGUS@45..74 0: GRAPHQL_ARGUMENT@45..63 0: GRAPHQL_NAME@45..49 0: GRAPHQL_NAME@45..49 "name" [] [] 1: COLON@49..51 ":" [] [Whitespace(" ")] 2: GRAPHQL_STRING_VALUE@51..63 0: GRAPHQL_STRING_LITERAL@51..63 "\"Tony Stark\"" [] [] - 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@63..63 - 4: (empty) - 2: R_CURLY@63..65 "}" [Newline("\n")] [] - 2: GRAPHQL_SELECTION_SET@65..121 - 0: L_CURLY@65..68 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@68..118 - 0: GRAPHQL_FIELD@68..93 - 0: (empty) - 1: GRAPHQL_NAME@68..74 - 0: GRAPHQL_NAME@68..74 "hero" [Newline("\n"), Whitespace("\t")] [] - 2: GRAPHQL_ARGUMENTS@74..93 - 0: L_PAREN@74..75 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@75..92 - 0: GRAPHQL_ARGUMENT@75..92 - 0: GRAPHQL_NAME@75..80 - 0: GRAPHQL_NAME@75..80 "name" [] [Whitespace(" ")] + 1: GRAPHQL_BOGUS@63..68 + 0: R_CURLY@63..65 "}" [Newline("\n")] [] + 1: L_CURLY@65..68 "{" [Newline("\n"), Newline("\n")] [] + 2: GRAPHQL_ARGUMENT@68..74 + 0: GRAPHQL_NAME@68..74 + 0: GRAPHQL_NAME@68..74 "hero" [Newline("\n"), Whitespace("\t")] [] 1: (empty) - 2: GRAPHQL_STRING_VALUE@80..92 - 0: GRAPHQL_STRING_LITERAL@80..92 "\"Tony Stark\"" [] [] - 2: R_PAREN@92..93 ")" [] [] - 3: GRAPHQL_DIRECTIVE_LIST@93..93 + 2: (empty) + 2: GRAPHQL_DIRECTIVE_LIST@74..74 + 1: GRAPHQL_BOGUS_SELECTION@74..75 + 0: L_PAREN@74..75 "(" [] [] + 2: GRAPHQL_FIELD@75..80 + 0: (empty) + 1: GRAPHQL_NAME@75..80 + 0: GRAPHQL_NAME@75..80 "name" [] [Whitespace(" ")] + 2: (empty) + 3: GRAPHQL_DIRECTIVE_LIST@80..80 4: (empty) - 1: GRAPHQL_FIELD@93..104 + 3: GRAPHQL_BOGUS_SELECTION@80..93 + 0: GRAPHQL_STRING_LITERAL@80..92 "\"Tony Stark\"" [] [] + 1: R_PAREN@92..93 ")" [] [] + 4: GRAPHQL_FIELD@93..104 0: (empty) 1: GRAPHQL_NAME@93..104 0: GRAPHQL_NAME@93..104 "country" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")] 2: (empty) 3: GRAPHQL_DIRECTIVE_LIST@104..104 4: (empty) - 2: GRAPHQL_FIELD@104..112 + 5: GRAPHQL_FIELD@104..112 0: (empty) 1: GRAPHQL_NAME@104..112 0: GRAPHQL_NAME@104..112 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")] 2: (empty) 3: GRAPHQL_DIRECTIVE_LIST@112..112 4: (empty) - 3: GRAPHQL_FIELD@112..118 + 6: GRAPHQL_FIELD@112..118 0: (empty) 1: GRAPHQL_NAME@112..118 0: GRAPHQL_NAME@112..118 "age" [Newline("\n"), Whitespace("\t\t")] [] @@ -811,12 +822,12 @@ GraphqlRoot { 3: GRAPHQL_DIRECTIVE_LIST@118..118 4: (empty) 2: R_CURLY@118..121 "}" [Newline("\n"), Whitespace("\t")] [] - 3: GRAPHQL_BOGUS_DEFINITION@121..123 + 2: GRAPHQL_BOGUS_DEFINITION@121..123 0: R_CURLY@121..123 "}" [Newline("\n")] [] - 4: GRAPHQL_SELECTION_SET@123..205 + 3: GRAPHQL_SELECTION_SET@123..273 0: L_CURLY@123..126 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@126..203 - 0: GRAPHQL_FIELD@126..203 + 1: GRAPHQL_SELECTION_LIST@126..271 + 0: GRAPHQL_FIELD@126..242 0: (empty) 1: GRAPHQL_NAME@126..132 0: GRAPHQL_NAME@126..132 "hero" [Newline("\n"), Whitespace("\t")] [] @@ -831,9 +842,9 @@ GraphqlRoot { 0: GRAPHQL_STRING_LITERAL@139..151 "\"Tony Stark\"" [] [] 2: R_PAREN@151..153 ")" [] [Whitespace(" ")] 3: GRAPHQL_DIRECTIVE_LIST@153..153 - 4: GRAPHQL_SELECTION_SET@153..203 + 4: GRAPHQL_SELECTION_SET@153..242 0: L_CURLY@153..154 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@154..200 + 1: GRAPHQL_SELECTION_LIST@154..240 0: GRAPHQL_FIELD@154..165 0: (empty) 1: GRAPHQL_NAME@154..165 @@ -855,13 +866,12 @@ GraphqlRoot { 2: (empty) 3: GRAPHQL_DIRECTIVE_LIST@180..180 4: (empty) - 3: GRAPHQL_FIELD@180..200 - 0: (empty) - 1: GRAPHQL_NAME@180..189 + 3: GRAPHQL_BOGUS_SELECTION@180..220 + 0: GRAPHQL_NAME@180..189 0: GRAPHQL_NAME@180..189 "height" [Newline("\n"), Whitespace("\t\t")] [] - 2: GRAPHQL_ARGUMENTS@189..200 + 1: GRAPHQL_BOGUS@189..220 0: L_PAREN@189..190 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@190..200 + 1: GRAPHQL_BOGUS@190..220 0: GRAPHQL_ARGUMENT@190..200 0: GRAPHQL_NAME@190..195 0: GRAPHQL_NAME@190..195 "unit" [] [Whitespace(" ")] @@ -869,37 +879,34 @@ GraphqlRoot { 2: GRAPHQL_ENUM_VALUE@195..200 0: GRAPHQL_NAME@195..200 0: GRAPHQL_NAME@195..200 "FOOT" [] [Skipped(",")] - 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@200..200 + 1: GRAPHQL_BOGUS@200..208 + 0: R_CURLY@200..203 "}" [Newline("\n"), Whitespace("\t")] [] + 1: R_CURLY@203..205 "}" [Newline("\n")] [] + 2: L_CURLY@205..208 "{" [Newline("\n"), Newline("\n")] [] + 2: GRAPHQL_ARGUMENT@208..220 + 0: GRAPHQL_NAME@208..218 + 0: GRAPHQL_NAME@208..218 "ironMan" [Newline("\n"), Whitespace(" ")] [] + 1: COLON@218..220 ":" [] [Whitespace(" ")] + 2: (empty) + 2: GRAPHQL_DIRECTIVE_LIST@220..220 + 4: GRAPHQL_BOGUS_SELECTION@220..221 + 0: L_PAREN@220..221 "(" [] [] + 5: GRAPHQL_FIELD@221..227 + 0: GRAPHQL_ALIAS@221..227 + 0: GRAPHQL_NAME@221..225 + 0: GRAPHQL_NAME@221..225 "name" [] [] + 1: COLON@225..227 ":" [] [Whitespace(" ")] + 1: (empty) + 2: (empty) + 3: GRAPHQL_DIRECTIVE_LIST@227..227 4: (empty) - 2: R_CURLY@200..203 "}" [Newline("\n"), Whitespace("\t")] [] - 2: R_CURLY@203..205 "}" [Newline("\n")] [] - 5: GRAPHQL_SELECTION_SET@205..242 - 0: L_CURLY@205..208 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@208..240 - 0: GRAPHQL_FIELD@208..240 - 0: GRAPHQL_ALIAS@208..220 - 0: GRAPHQL_NAME@208..218 - 0: GRAPHQL_NAME@208..218 "ironMan" [Newline("\n"), Whitespace(" ")] [] - 1: COLON@218..220 ":" [] [Whitespace(" ")] - 1: (empty) - 2: GRAPHQL_ARGUMENTS@220..240 - 0: L_PAREN@220..221 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@221..239 - 0: GRAPHQL_ARGUMENT@221..239 - 0: GRAPHQL_NAME@221..225 - 0: GRAPHQL_NAME@221..225 "name" [] [] - 1: COLON@225..227 ":" [] [Whitespace(" ")] - 2: GRAPHQL_STRING_VALUE@227..239 - 0: GRAPHQL_STRING_LITERAL@227..239 "\"Tony Stark\"" [] [] - 2: R_PAREN@239..240 ")" [] [] - 3: GRAPHQL_DIRECTIVE_LIST@240..240 - 4: (empty) - 2: R_CURLY@240..242 "}" [Newline("\n")] [] - 6: GRAPHQL_SELECTION_SET@242..273 - 0: L_CURLY@242..245 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@245..271 - 0: GRAPHQL_BOGUS_SELECTION@245..271 + 6: GRAPHQL_BOGUS_SELECTION@227..240 + 0: GRAPHQL_STRING_LITERAL@227..239 "\"Tony Stark\"" [] [] + 1: R_PAREN@239..240 ")" [] [] + 2: R_CURLY@240..242 "}" [Newline("\n")] [] + 1: GRAPHQL_BOGUS_SELECTION@242..245 + 0: L_CURLY@242..245 "{" [Newline("\n"), Newline("\n")] [] + 2: GRAPHQL_BOGUS_SELECTION@245..271 0: GRAPHQL_BOGUS@245..251 0: GRAPHQL_INT_LITERAL@245..249 "0" [Newline("\n"), Whitespace(" ")] [] 1: COLON@249..251 ":" [] [Whitespace(" ")] @@ -915,223 +922,223 @@ GraphqlRoot { 2: R_PAREN@270..271 ")" [] [] 2: GRAPHQL_DIRECTIVE_LIST@271..271 2: R_CURLY@271..273 "}" [Newline("\n")] [] - 7: GRAPHQL_SELECTION_SET@273..368 + 4: GRAPHQL_SELECTION_SET@273..369 0: L_CURLY@273..276 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@276..366 - 0: GRAPHQL_FIELD@276..366 + 1: GRAPHQL_SELECTION_LIST@276..367 + 0: GRAPHQL_FIELD@276..367 0: GRAPHQL_ALIAS@276..288 0: GRAPHQL_NAME@276..286 0: GRAPHQL_NAME@276..286 "ironMan" [Newline("\n"), Whitespace(" ")] [] 1: COLON@286..288 ":" [] [Whitespace(" ")] 1: GRAPHQL_NAME@288..292 0: GRAPHQL_NAME@288..292 "hero" [] [] - 2: GRAPHQL_ARGUMENTS@292..312 + 2: GRAPHQL_ARGUMENTS@292..313 0: L_PAREN@292..293 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@293..312 - 0: GRAPHQL_ARGUMENT@293..312 + 1: GRAPHQL_ARGUMENT_LIST@293..311 + 0: GRAPHQL_ARGUMENT@293..311 0: GRAPHQL_NAME@293..297 0: GRAPHQL_NAME@293..297 "name" [] [] 1: COLON@297..299 ":" [] [Whitespace(" ")] - 2: GRAPHQL_STRING_VALUE@299..312 - 0: GRAPHQL_STRING_LITERAL@299..312 "\"Tony Stark\"" [] [Whitespace(" ")] - 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@312..312 - 4: GRAPHQL_SELECTION_SET@312..366 - 0: L_CURLY@312..313 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@313..363 - 0: GRAPHQL_FIELD@313..324 + 2: GRAPHQL_STRING_VALUE@299..311 + 0: GRAPHQL_STRING_LITERAL@299..311 "\"Tony Stark\"" [] [] + 2: R_PAREN@311..313 ")" [] [Whitespace(" ")] + 3: GRAPHQL_DIRECTIVE_LIST@313..313 + 4: GRAPHQL_SELECTION_SET@313..367 + 0: L_CURLY@313..314 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@314..364 + 0: GRAPHQL_FIELD@314..325 0: (empty) - 1: GRAPHQL_NAME@313..324 - 0: GRAPHQL_NAME@313..324 "country" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")] + 1: GRAPHQL_NAME@314..325 + 0: GRAPHQL_NAME@314..325 "country" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@324..324 + 3: GRAPHQL_DIRECTIVE_LIST@325..325 4: (empty) - 1: GRAPHQL_FIELD@324..363 - 0: GRAPHQL_ALIAS@324..338 - 0: GRAPHQL_NAME@324..336 - 0: GRAPHQL_NAME@324..336 "firstWife" [Newline("\n"), Whitespace("\t\t")] [] - 1: COLON@336..338 ":" [] [Whitespace(" ")] - 1: GRAPHQL_NAME@338..342 - 0: GRAPHQL_NAME@338..342 "wife" [] [] - 2: GRAPHQL_ARGUMENTS@342..358 - 0: L_PAREN@342..343 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@343..357 - 0: GRAPHQL_ARGUMENT@343..357 - 0: GRAPHQL_NAME@343..347 - 0: GRAPHQL_NAME@343..347 "name" [] [] - 1: COLON@347..349 ":" [] [Whitespace(" ")] - 2: GRAPHQL_STRING_VALUE@349..357 - 0: GRAPHQL_STRING_LITERAL@349..357 "\"Pepper\"" [] [] - 2: R_PAREN@357..358 ")" [] [] - 3: GRAPHQL_DIRECTIVE_LIST@358..358 - 4: GRAPHQL_SELECTION_SET@358..363 - 0: L_CURLY@358..359 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@359..359 - 2: R_CURLY@359..363 "}" [Newline("\n"), Whitespace("\t\t")] [] - 2: R_CURLY@363..366 "}" [Newline("\n"), Whitespace("\t")] [] - 2: R_CURLY@366..368 "}" [Newline("\n")] [] - 8: GRAPHQL_SELECTION_SET@368..442 - 0: L_CURLY@368..371 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@371..440 - 0: GRAPHQL_FIELD@371..440 - 0: GRAPHQL_ALIAS@371..383 - 0: GRAPHQL_NAME@371..381 - 0: GRAPHQL_NAME@371..381 "ironMan" [Newline("\n"), Whitespace(" ")] [] - 1: COLON@381..383 ":" [] [Whitespace(" ")] - 1: GRAPHQL_NAME@383..387 - 0: GRAPHQL_NAME@383..387 "hero" [] [] - 2: GRAPHQL_ARGUMENTS@387..408 - 0: L_PAREN@387..388 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@388..406 - 0: GRAPHQL_ARGUMENT@388..406 - 0: GRAPHQL_NAME@388..392 - 0: GRAPHQL_NAME@388..392 "name" [] [] - 1: COLON@392..394 ":" [] [Whitespace(" ")] - 2: GRAPHQL_STRING_VALUE@394..406 - 0: GRAPHQL_STRING_LITERAL@394..406 "\"Tony Stark\"" [] [] - 2: R_PAREN@406..408 ")" [] [Whitespace(" ")] - 3: GRAPHQL_DIRECTIVE_LIST@408..409 - 0: GRAPHQL_DIRECTIVE@408..409 - 0: AT@408..409 "@" [] [] + 1: GRAPHQL_FIELD@325..364 + 0: GRAPHQL_ALIAS@325..339 + 0: GRAPHQL_NAME@325..337 + 0: GRAPHQL_NAME@325..337 "firstWife" [Newline("\n"), Whitespace("\t\t")] [] + 1: COLON@337..339 ":" [] [Whitespace(" ")] + 1: GRAPHQL_NAME@339..343 + 0: GRAPHQL_NAME@339..343 "wife" [] [] + 2: GRAPHQL_ARGUMENTS@343..359 + 0: L_PAREN@343..344 "(" [] [] + 1: GRAPHQL_ARGUMENT_LIST@344..358 + 0: GRAPHQL_ARGUMENT@344..358 + 0: GRAPHQL_NAME@344..348 + 0: GRAPHQL_NAME@344..348 "name" [] [] + 1: COLON@348..350 ":" [] [Whitespace(" ")] + 2: GRAPHQL_STRING_VALUE@350..358 + 0: GRAPHQL_STRING_LITERAL@350..358 "\"Pepper\"" [] [] + 2: R_PAREN@358..359 ")" [] [] + 3: GRAPHQL_DIRECTIVE_LIST@359..359 + 4: GRAPHQL_SELECTION_SET@359..364 + 0: L_CURLY@359..360 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@360..360 + 2: R_CURLY@360..364 "}" [Newline("\n"), Whitespace("\t\t")] [] + 2: R_CURLY@364..367 "}" [Newline("\n"), Whitespace("\t")] [] + 2: R_CURLY@367..369 "}" [Newline("\n")] [] + 5: GRAPHQL_SELECTION_SET@369..443 + 0: L_CURLY@369..372 "{" [Newline("\n"), Newline("\n")] [] + 1: GRAPHQL_SELECTION_LIST@372..441 + 0: GRAPHQL_FIELD@372..441 + 0: GRAPHQL_ALIAS@372..384 + 0: GRAPHQL_NAME@372..382 + 0: GRAPHQL_NAME@372..382 "ironMan" [Newline("\n"), Whitespace(" ")] [] + 1: COLON@382..384 ":" [] [Whitespace(" ")] + 1: GRAPHQL_NAME@384..388 + 0: GRAPHQL_NAME@384..388 "hero" [] [] + 2: GRAPHQL_ARGUMENTS@388..409 + 0: L_PAREN@388..389 "(" [] [] + 1: GRAPHQL_ARGUMENT_LIST@389..407 + 0: GRAPHQL_ARGUMENT@389..407 + 0: GRAPHQL_NAME@389..393 + 0: GRAPHQL_NAME@389..393 "name" [] [] + 1: COLON@393..395 ":" [] [Whitespace(" ")] + 2: GRAPHQL_STRING_VALUE@395..407 + 0: GRAPHQL_STRING_LITERAL@395..407 "\"Tony Stark\"" [] [] + 2: R_PAREN@407..409 ")" [] [Whitespace(" ")] + 3: GRAPHQL_DIRECTIVE_LIST@409..410 + 0: GRAPHQL_DIRECTIVE@409..410 + 0: AT@409..410 "@" [] [] 1: (empty) 2: (empty) - 4: GRAPHQL_SELECTION_SET@409..440 - 0: L_CURLY@409..410 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@410..437 - 0: GRAPHQL_FIELD@410..431 + 4: GRAPHQL_SELECTION_SET@410..441 + 0: L_CURLY@410..411 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@411..438 + 0: GRAPHQL_FIELD@411..432 0: (empty) - 1: GRAPHQL_NAME@410..421 - 0: GRAPHQL_NAME@410..421 "country" [Newline("\n"), Whitespace("\t\t")] [Whitespace(" ")] + 1: GRAPHQL_NAME@411..422 + 0: GRAPHQL_NAME@411..422 "country" [Newline("\n"), Whitespace("\t\t")] [Whitespace(" ")] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@421..431 - 0: GRAPHQL_DIRECTIVE@421..431 - 0: AT@421..423 "@" [] [Skipped(",")] - 1: GRAPHQL_NAME@423..431 - 0: GRAPHQL_NAME@423..431 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")] + 3: GRAPHQL_DIRECTIVE_LIST@422..432 + 0: GRAPHQL_DIRECTIVE@422..432 + 0: AT@422..424 "@" [] [Skipped(",")] + 1: GRAPHQL_NAME@424..432 + 0: GRAPHQL_NAME@424..432 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")] 2: (empty) 4: (empty) - 1: GRAPHQL_FIELD@431..437 + 1: GRAPHQL_FIELD@432..438 0: (empty) - 1: GRAPHQL_NAME@431..437 - 0: GRAPHQL_NAME@431..437 "age" [Newline("\n"), Whitespace("\t\t")] [] + 1: GRAPHQL_NAME@432..438 + 0: GRAPHQL_NAME@432..438 "age" [Newline("\n"), Whitespace("\t\t")] [] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@437..437 + 3: GRAPHQL_DIRECTIVE_LIST@438..438 4: (empty) - 2: R_CURLY@437..440 "}" [Newline("\n"), Whitespace("\t")] [] - 2: R_CURLY@440..442 "}" [Newline("\n")] [] - 9: GRAPHQL_SELECTION_SET@442..508 - 0: L_CURLY@442..463 "{" [Newline("\n"), Newline("\n"), Comments("# Fragment spread"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@463..506 - 0: GRAPHQL_BOGUS_SELECTION@463..506 - 0: GRAPHQL_ALIAS@463..475 - 0: GRAPHQL_NAME@463..473 - 0: GRAPHQL_NAME@463..473 "ironMan" [Newline("\n"), Whitespace(" ")] [] - 1: COLON@473..475 ":" [] [Whitespace(" ")] - 1: GRAPHQL_BOGUS@475..492 - 0: L_PAREN@475..476 "(" [] [] - 1: GRAPHQL_BOGUS@476..490 - 0: GRAPHQL_BOGUS@476..490 - 0: COLON@476..478 ":" [] [Whitespace(" ")] - 1: GRAPHQL_STRING_LITERAL@478..490 "\"Tony Stark\"" [] [] - 2: R_PAREN@490..492 ")" [] [Whitespace(" ")] - 2: GRAPHQL_DIRECTIVE_LIST@492..494 - 0: GRAPHQL_DIRECTIVE@492..494 - 0: AT@492..494 "@" [] [Whitespace(" ")] + 2: R_CURLY@438..441 "}" [Newline("\n"), Whitespace("\t")] [] + 2: R_CURLY@441..443 "}" [Newline("\n")] [] + 6: GRAPHQL_SELECTION_SET@443..509 + 0: L_CURLY@443..464 "{" [Newline("\n"), Newline("\n"), Comments("# Fragment spread"), Newline("\n")] [] + 1: GRAPHQL_SELECTION_LIST@464..507 + 0: GRAPHQL_BOGUS_SELECTION@464..507 + 0: GRAPHQL_ALIAS@464..476 + 0: GRAPHQL_NAME@464..474 + 0: GRAPHQL_NAME@464..474 "ironMan" [Newline("\n"), Whitespace(" ")] [] + 1: COLON@474..476 ":" [] [Whitespace(" ")] + 1: GRAPHQL_BOGUS@476..493 + 0: L_PAREN@476..477 "(" [] [] + 1: GRAPHQL_BOGUS@477..491 + 0: GRAPHQL_BOGUS@477..491 + 0: COLON@477..479 ":" [] [Whitespace(" ")] + 1: GRAPHQL_STRING_LITERAL@479..491 "\"Tony Stark\"" [] [] + 2: R_PAREN@491..493 ")" [] [Whitespace(" ")] + 2: GRAPHQL_DIRECTIVE_LIST@493..495 + 0: GRAPHQL_DIRECTIVE@493..495 + 0: AT@493..495 "@" [] [Whitespace(" ")] 1: (empty) 2: (empty) - 3: GRAPHQL_SELECTION_SET@494..506 - 0: L_CURLY@494..495 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@495..504 - 0: GRAPHQL_INLINE_FRAGMENT@495..504 - 0: DOT3@495..501 "..." [Newline("\n"), Whitespace("\t\t")] [] + 3: GRAPHQL_SELECTION_SET@495..507 + 0: L_CURLY@495..496 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@496..505 + 0: GRAPHQL_INLINE_FRAGMENT@496..505 + 0: DOT3@496..502 "..." [Newline("\n"), Whitespace("\t\t")] [] 1: (empty) - 2: GRAPHQL_DIRECTIVE_LIST@501..501 - 3: GRAPHQL_SELECTION_SET@501..504 + 2: GRAPHQL_DIRECTIVE_LIST@502..502 + 3: GRAPHQL_SELECTION_SET@502..505 0: (empty) - 1: GRAPHQL_SELECTION_LIST@501..501 - 2: R_CURLY@501..504 "}" [Newline("\n"), Whitespace("\t")] [] - 2: R_CURLY@504..506 "}" [Newline("\n")] [] - 2: R_CURLY@506..508 "}" [Newline("\n")] [] - 10: GRAPHQL_SELECTION_SET@508..531 - 0: L_CURLY@508..511 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@511..529 - 0: GRAPHQL_INLINE_FRAGMENT@511..529 - 0: DOT3@511..518 "..." [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 1: GRAPHQL_SELECTION_LIST@502..502 + 2: R_CURLY@502..505 "}" [Newline("\n"), Whitespace("\t")] [] + 2: R_CURLY@505..507 "}" [Newline("\n")] [] + 2: R_CURLY@507..509 "}" [Newline("\n")] [] + 7: GRAPHQL_SELECTION_SET@509..532 + 0: L_CURLY@509..512 "{" [Newline("\n"), Newline("\n")] [] + 1: GRAPHQL_SELECTION_LIST@512..530 + 0: GRAPHQL_INLINE_FRAGMENT@512..530 + 0: DOT3@512..519 "..." [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] 1: (empty) - 2: GRAPHQL_DIRECTIVE_LIST@518..518 - 3: GRAPHQL_SELECTION_SET@518..529 - 0: L_CURLY@518..519 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@519..526 - 0: GRAPHQL_FIELD@519..526 + 2: GRAPHQL_DIRECTIVE_LIST@519..519 + 3: GRAPHQL_SELECTION_SET@519..530 + 0: L_CURLY@519..520 "{" [] [] + 1: GRAPHQL_SELECTION_LIST@520..527 + 0: GRAPHQL_FIELD@520..527 0: (empty) - 1: GRAPHQL_NAME@519..526 - 0: GRAPHQL_NAME@519..526 "hero" [Newline("\n"), Whitespace("\t\t")] [] + 1: GRAPHQL_NAME@520..527 + 0: GRAPHQL_NAME@520..527 "hero" [Newline("\n"), Whitespace("\t\t")] [] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@526..526 + 3: GRAPHQL_DIRECTIVE_LIST@527..527 4: (empty) - 2: R_CURLY@526..529 "}" [Newline("\n"), Whitespace("\t")] [] - 2: R_CURLY@529..531 "}" [Newline("\n")] [] - 11: GRAPHQL_SELECTION_SET@531..554 - 0: L_CURLY@531..534 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@534..552 - 0: GRAPHQL_INLINE_FRAGMENT@534..552 - 0: DOT3@534..541 "..." [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] + 2: R_CURLY@527..530 "}" [Newline("\n"), Whitespace("\t")] [] + 2: R_CURLY@530..532 "}" [Newline("\n")] [] + 8: GRAPHQL_SELECTION_SET@532..555 + 0: L_CURLY@532..535 "{" [Newline("\n"), Newline("\n")] [] + 1: GRAPHQL_SELECTION_LIST@535..553 + 0: GRAPHQL_INLINE_FRAGMENT@535..553 + 0: DOT3@535..542 "..." [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] 1: (empty) - 2: GRAPHQL_DIRECTIVE_LIST@541..549 - 0: GRAPHQL_DIRECTIVE@541..549 - 0: AT@541..542 "@" [] [] - 1: GRAPHQL_NAME@542..549 - 0: GRAPHQL_NAME@542..549 "hero" [Newline("\n"), Whitespace("\t\t")] [] + 2: GRAPHQL_DIRECTIVE_LIST@542..550 + 0: GRAPHQL_DIRECTIVE@542..550 + 0: AT@542..543 "@" [] [] + 1: GRAPHQL_NAME@543..550 + 0: GRAPHQL_NAME@543..550 "hero" [Newline("\n"), Whitespace("\t\t")] [] 2: (empty) - 3: GRAPHQL_SELECTION_SET@549..552 + 3: GRAPHQL_SELECTION_SET@550..553 0: (empty) - 1: GRAPHQL_SELECTION_LIST@549..549 - 2: R_CURLY@549..552 "}" [Newline("\n"), Whitespace("\t")] [] - 2: R_CURLY@552..554 "}" [Newline("\n")] [] - 12: GRAPHQL_SELECTION_SET@554..589 - 0: L_CURLY@554..557 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@557..586 - 0: GRAPHQL_FRAGMENT_SPREAD@557..571 - 0: DOT3@557..564 "..." [Newline("\n"), Whitespace("\t")] [Whitespace(" ")] - 1: GRAPHQL_NAME@564..569 - 0: GRAPHQL_NAME@564..569 "Hero" [] [Whitespace(" ")] - 2: GRAPHQL_DIRECTIVE_LIST@569..571 - 0: GRAPHQL_DIRECTIVE@569..571 - 0: AT@569..571 "@" [] [Whitespace(" ")] + 1: GRAPHQL_SELECTION_LIST@550..550 + 2: R_CURLY@550..553 "}" [Newline("\n"), Whitespace("\t")] [] + 2: R_CURLY@553..555 "}" [Newline("\n")] [] + 9: GRAPHQL_SELECTION_SET@555..590 + 0: L_CURLY@555..558 "{" [Newline("\n"), Newline("\n")] [] + 1: GRAPHQL_SELECTION_LIST@558..587 + 0: GRAPHQL_FRAGMENT_SPREAD@558..572 + 0: DOT3@558..565 "..." [Newline("\n"), Whitespace("\t")] [Whitespace(" ")] + 1: GRAPHQL_NAME@565..570 + 0: GRAPHQL_NAME@565..570 "Hero" [] [Whitespace(" ")] + 2: GRAPHQL_DIRECTIVE_LIST@570..572 + 0: GRAPHQL_DIRECTIVE@570..572 + 0: AT@570..572 "@" [] [Whitespace(" ")] 1: (empty) 2: (empty) - 1: GRAPHQL_BOGUS_SELECTION@571..572 - 0: L_CURLY@571..572 "{" [] [] - 2: GRAPHQL_FIELD@572..580 + 1: GRAPHQL_BOGUS_SELECTION@572..573 + 0: L_CURLY@572..573 "{" [] [] + 2: GRAPHQL_FIELD@573..581 0: (empty) - 1: GRAPHQL_NAME@572..580 - 0: GRAPHQL_NAME@572..580 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")] + 1: GRAPHQL_NAME@573..581 + 0: GRAPHQL_NAME@573..581 "name" [Newline("\n"), Whitespace("\t\t")] [Skipped(",")] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@580..580 + 3: GRAPHQL_DIRECTIVE_LIST@581..581 4: (empty) - 3: GRAPHQL_FIELD@580..586 + 3: GRAPHQL_FIELD@581..587 0: (empty) - 1: GRAPHQL_NAME@580..586 - 0: GRAPHQL_NAME@580..586 "age" [Newline("\n"), Whitespace("\t\t")] [] + 1: GRAPHQL_NAME@581..587 + 0: GRAPHQL_NAME@581..587 "age" [Newline("\n"), Whitespace("\t\t")] [] 2: (empty) - 3: GRAPHQL_DIRECTIVE_LIST@586..586 + 3: GRAPHQL_DIRECTIVE_LIST@587..587 4: (empty) - 2: R_CURLY@586..589 "}" [Newline("\n"), Whitespace("\t")] [] - 13: GRAPHQL_BOGUS_DEFINITION@589..591 - 0: R_CURLY@589..591 "}" [Newline("\n")] [] - 14: GRAPHQL_SELECTION_SET@591..602 - 0: L_CURLY@591..594 "{" [Newline("\n"), Newline("\n")] [] - 1: GRAPHQL_SELECTION_LIST@594..602 - 0: GRAPHQL_INLINE_FRAGMENT@594..602 - 0: DOT3@594..600 "..." [Newline("\n"), Whitespace(" ")] [] + 2: R_CURLY@587..590 "}" [Newline("\n"), Whitespace("\t")] [] + 10: GRAPHQL_BOGUS_DEFINITION@590..592 + 0: R_CURLY@590..592 "}" [Newline("\n")] [] + 11: GRAPHQL_SELECTION_SET@592..603 + 0: L_CURLY@592..595 "{" [Newline("\n"), Newline("\n")] [] + 1: GRAPHQL_SELECTION_LIST@595..603 + 0: GRAPHQL_INLINE_FRAGMENT@595..603 + 0: DOT3@595..601 "..." [Newline("\n"), Whitespace(" ")] [] 1: (empty) - 2: GRAPHQL_DIRECTIVE_LIST@600..600 - 3: GRAPHQL_SELECTION_SET@600..602 + 2: GRAPHQL_DIRECTIVE_LIST@601..601 + 3: GRAPHQL_SELECTION_SET@601..603 0: (empty) - 1: GRAPHQL_SELECTION_LIST@600..600 - 2: R_CURLY@600..602 "}" [Newline("\n")] [] + 1: GRAPHQL_SELECTION_LIST@601..601 + 2: R_CURLY@601..603 "}" [Newline("\n")] [] 2: (empty) - 2: EOF@602..604 "" [Newline("\n"), Newline("\n")] [] + 2: EOF@603..605 "" [Newline("\n"), Newline("\n")] [] ``` @@ -1140,28 +1147,61 @@ GraphqlRoot { ``` selection_set.graphql:12:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × expected `)` but instead found `}` + × Expected an argument but instead found '} + + {'. 10 │ { 11 │ hero(name: "Tony Stark" > 12 │ } │ ^ - 13 │ + > 13 │ + > 14 │ { + │ ^ + 15 │ hero(name "Tony Stark") + 16 │ country, + + i Expected an argument here. + + 10 │ { + 11 │ hero(name: "Tony Stark" + > 12 │ } + │ ^ + > 13 │ + > 14 │ { + │ ^ + 15 │ hero(name "Tony Stark") + 16 │ country, + +selection_set.graphql:15:6 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × expected `:` but instead found `(` + 14 │ { + > 15 │ hero(name "Tony Stark") + │ ^ + 16 │ country, + 17 │ name, - i Remove } + i Remove ( selection_set.graphql:15:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × expected `:` but instead found `"Tony Stark"` + × Expected a field, a fragment spread, or an inline fragment but instead found '"Tony Stark")'. 14 │ { > 15 │ hero(name "Tony Stark") - │ ^^^^^^^^^^^^ + │ ^^^^^^^^^^^^^ 16 │ country, 17 │ name, - i Remove "Tony Stark" + i Expected a field, a fragment spread, or an inline fragment here. + + 14 │ { + > 15 │ hero(name "Tony Stark") + │ ^^^^^^^^^^^^^ + 16 │ country, + 17 │ name, selection_set.graphql:20:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ @@ -1198,20 +1238,38 @@ selection_set.graphql:27:15 parse ━━━━━━━━━━━━━━━ selection_set.graphql:28:2 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × expected `)` but instead found `}` + × Expected an argument but instead found '} + } + + {'. 26 │ age, 27 │ height(unit FOOT, > 28 │ } │ ^ - 29 │ } - 30 │ + > 29 │ } + > 30 │ + > 31 │ { + │ ^ + 32 │ ironMan: (name: "Tony Stark") + 33 │ } - i Remove } + i Expected an argument here. + + 26 │ age, + 27 │ height(unit FOOT, + > 28 │ } + │ ^ + > 29 │ } + > 30 │ + > 31 │ { + │ ^ + 32 │ ironMan: (name: "Tony Stark") + 33 │ } selection_set.graphql:32:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - × Expected a name but instead found '('. + × Expected a value but instead found '('. 31 │ { > 32 │ ironMan: (name: "Tony Stark") @@ -1219,7 +1277,7 @@ selection_set.graphql:32:12 parse ━━━━━━━━━━━━━━━ 33 │ } 34 │ - i Expected a name here. + i Expected a value here. 31 │ { > 32 │ ironMan: (name: "Tony Stark") @@ -1227,6 +1285,44 @@ selection_set.graphql:32:12 parse ━━━━━━━━━━━━━━━ 33 │ } 34 │ +selection_set.graphql:32:19 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Expected a name but instead found '"Tony Stark"'. + + 31 │ { + > 32 │ ironMan: (name: "Tony Stark") + │ ^^^^^^^^^^^^ + 33 │ } + 34 │ + + i Expected a name here. + + 31 │ { + > 32 │ ironMan: (name: "Tony Stark") + │ ^^^^^^^^^^^^ + 33 │ } + 34 │ + +selection_set.graphql:35:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + × Expected a field, a fragment spread, or an inline fragment but instead found '{'. + + 33 │ } + 34 │ + > 35 │ { + │ ^ + 36 │ 0: (name: "Tony Stark") + 37 │ } + + i Expected a field, a fragment spread, or an inline fragment here. + + 33 │ } + 34 │ + > 35 │ { + │ ^ + 36 │ 0: (name: "Tony Stark") + 37 │ } + selection_set.graphql:36:3 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Expected a name but instead found '0'. @@ -1263,18 +1359,6 @@ selection_set.graphql:36:6 parse ━━━━━━━━━━━━━━━ 37 │ } 38 │ -selection_set.graphql:40:36 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - - × expected `)` but instead found `{` - - 39 │ { - > 40 │ ironMan: hero(name: "Tony Stark" { - │ ^ - 41 │ country, - 42 │ firstWife: wife(name: "Pepper"){ - - i Remove { - selection_set.graphql:48:38 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Expected a name but instead found '{'. diff --git a/crates/biome_graphql_parser/tests/graphql_test_suite/ok/value.graphql b/crates/biome_graphql_parser/tests/graphql_test_suite/ok/value.graphql index c9e845d30296..bee64f9231f7 100644 --- a/crates/biome_graphql_parser/tests/graphql_test_suite/ok/value.graphql +++ b/crates/biome_graphql_parser/tests/graphql_test_suite/ok/value.graphql @@ -10,5 +10,6 @@ enum_value: on, list_value: [1, 2, 3], object_value: {key: "value"} + list_object_value: [{key: "value"}, {key: "value"}] ) } diff --git a/crates/biome_graphql_parser/tests/graphql_test_suite/ok/value.graphql.snap b/crates/biome_graphql_parser/tests/graphql_test_suite/ok/value.graphql.snap index c5cfc877c316..cf186eb2d131 100644 --- a/crates/biome_graphql_parser/tests/graphql_test_suite/ok/value.graphql.snap +++ b/crates/biome_graphql_parser/tests/graphql_test_suite/ok/value.graphql.snap @@ -16,6 +16,7 @@ expression: snapshot enum_value: on, list_value: [1, 2, 3], object_value: {key: "value"} + list_object_value: [{key: "value"}, {key: "value"}] ) } @@ -158,36 +159,78 @@ GraphqlRoot { r_curly_token: R_CURLY@239..240 "}" [] [], }, }, + GraphqlArgument { + name: GraphqlName { + value_token: GRAPHQL_NAME@240..260 "list_object_value" [Newline("\n"), Whitespace("\t\t")] [], + }, + colon_token: COLON@260..262 ":" [] [Whitespace(" ")], + value: GraphqlListValue { + l_brack_token: L_BRACK@262..263 "[" [] [], + elements: GraphqlListValueElementList [ + GraphqlObjectValue { + l_curly_token: L_CURLY@263..264 "{" [] [], + members: GraphqlObjectValueMemberList [ + GraphqlObjectField { + name: GraphqlName { + value_token: GRAPHQL_NAME@264..267 "key" [] [], + }, + colon_token: COLON@267..269 ":" [] [Whitespace(" ")], + value: GraphqlStringValue { + graphql_string_literal_token: GRAPHQL_STRING_LITERAL@269..276 "\"value\"" [] [], + }, + }, + ], + r_curly_token: R_CURLY@276..279 "}" [] [Skipped(","), Whitespace(" ")], + }, + GraphqlObjectValue { + l_curly_token: L_CURLY@279..280 "{" [] [], + members: GraphqlObjectValueMemberList [ + GraphqlObjectField { + name: GraphqlName { + value_token: GRAPHQL_NAME@280..283 "key" [] [], + }, + colon_token: COLON@283..285 ":" [] [Whitespace(" ")], + value: GraphqlStringValue { + graphql_string_literal_token: GRAPHQL_STRING_LITERAL@285..292 "\"value\"" [] [], + }, + }, + ], + r_curly_token: R_CURLY@292..293 "}" [] [], + }, + ], + r_brack_token: R_BRACK@293..294 "]" [] [], + }, + }, ], - r_paren_token: R_PAREN@240..243 ")" [Newline("\n"), Whitespace("\t")] [], + r_paren_token: R_PAREN@294..297 ")" [Newline("\n"), Whitespace("\t")] [], }, directives: GraphqlDirectiveList [], selection_set: missing (optional), }, ], - r_curly_token: R_CURLY@243..245 "}" [Newline("\n")] [], + r_curly_token: R_CURLY@297..299 "}" [Newline("\n")] [], }, ], - eof_token: EOF@245..246 "" [Newline("\n")] [], + eof_token: EOF@299..300 "" [Newline("\n")] [], } ``` ## CST ``` -0: GRAPHQL_ROOT@0..246 +0: GRAPHQL_ROOT@0..300 0: (empty) - 1: GRAPHQL_DEFINITION_LIST@0..245 - 0: GRAPHQL_SELECTION_SET@0..245 + 1: GRAPHQL_DEFINITION_LIST@0..299 + 0: GRAPHQL_SELECTION_SET@0..299 0: L_CURLY@0..1 "{" [] [] - 1: GRAPHQL_SELECTION_LIST@1..243 - 0: GRAPHQL_FIELD@1..243 + 1: GRAPHQL_SELECTION_LIST@1..297 + 0: GRAPHQL_FIELD@1..297 0: (empty) 1: GRAPHQL_NAME@1..14 0: GRAPHQL_NAME@1..14 "field_value" [Newline("\n"), Whitespace("\t")] [] - 2: GRAPHQL_ARGUMENTS@14..243 + 2: GRAPHQL_ARGUMENTS@14..297 0: L_PAREN@14..15 "(" [] [] - 1: GRAPHQL_ARGUMENT_LIST@15..240 + 1: GRAPHQL_ARGUMENT_LIST@15..294 0: GRAPHQL_ARGUMENT@15..31 0: GRAPHQL_NAME@15..27 0: GRAPHQL_NAME@15..27 "int_value" [Newline("\n"), Whitespace("\t\t")] [] @@ -267,10 +310,38 @@ GraphqlRoot { 2: GRAPHQL_STRING_VALUE@232..239 0: GRAPHQL_STRING_LITERAL@232..239 "\"value\"" [] [] 2: R_CURLY@239..240 "}" [] [] - 2: R_PAREN@240..243 ")" [Newline("\n"), Whitespace("\t")] [] - 3: GRAPHQL_DIRECTIVE_LIST@243..243 + 10: GRAPHQL_ARGUMENT@240..294 + 0: GRAPHQL_NAME@240..260 + 0: GRAPHQL_NAME@240..260 "list_object_value" [Newline("\n"), Whitespace("\t\t")] [] + 1: COLON@260..262 ":" [] [Whitespace(" ")] + 2: GRAPHQL_LIST_VALUE@262..294 + 0: L_BRACK@262..263 "[" [] [] + 1: GRAPHQL_LIST_VALUE_ELEMENT_LIST@263..293 + 0: GRAPHQL_OBJECT_VALUE@263..279 + 0: L_CURLY@263..264 "{" [] [] + 1: GRAPHQL_OBJECT_VALUE_MEMBER_LIST@264..276 + 0: GRAPHQL_OBJECT_FIELD@264..276 + 0: GRAPHQL_NAME@264..267 + 0: GRAPHQL_NAME@264..267 "key" [] [] + 1: COLON@267..269 ":" [] [Whitespace(" ")] + 2: GRAPHQL_STRING_VALUE@269..276 + 0: GRAPHQL_STRING_LITERAL@269..276 "\"value\"" [] [] + 2: R_CURLY@276..279 "}" [] [Skipped(","), Whitespace(" ")] + 1: GRAPHQL_OBJECT_VALUE@279..293 + 0: L_CURLY@279..280 "{" [] [] + 1: GRAPHQL_OBJECT_VALUE_MEMBER_LIST@280..292 + 0: GRAPHQL_OBJECT_FIELD@280..292 + 0: GRAPHQL_NAME@280..283 + 0: GRAPHQL_NAME@280..283 "key" [] [] + 1: COLON@283..285 ":" [] [Whitespace(" ")] + 2: GRAPHQL_STRING_VALUE@285..292 + 0: GRAPHQL_STRING_LITERAL@285..292 "\"value\"" [] [] + 2: R_CURLY@292..293 "}" [] [] + 2: R_BRACK@293..294 "]" [] [] + 2: R_PAREN@294..297 ")" [Newline("\n"), Whitespace("\t")] [] + 3: GRAPHQL_DIRECTIVE_LIST@297..297 4: (empty) - 2: R_CURLY@243..245 "}" [Newline("\n")] [] - 2: EOF@245..246 "" [Newline("\n")] [] + 2: R_CURLY@297..299 "}" [Newline("\n")] [] + 2: EOF@299..300 "" [Newline("\n")] [] ```