8282 let fields = fields. as_ref ( ) . map ( |c| c as & [ _ ] ) ;
8383 let selection_set = parse_selection_set ( parser, schema, fields) ?;
8484
85- Ok ( Spanning :: start_end (
86- & selection_set. start ,
87- & selection_set. end ,
85+ Ok ( Spanning :: new (
86+ selection_set. span ,
8887 Operation {
8988 operation_type : OperationType :: Query ,
9089 name : None ,
9493 } ,
9594 ) )
9695 } else {
97- let start_pos = parser. peek ( ) . start ;
96+ let start_pos = parser. peek ( ) . span . start ;
9897 let operation_type = parse_operation_type ( parser) ?;
9998 let op = match operation_type. item {
10099 OperationType :: Query => Some ( schema. concrete_query_type ( ) ) ,
@@ -114,7 +113,7 @@ where
114113
115114 Ok ( Spanning :: start_end (
116115 & start_pos,
117- & selection_set. end ,
116+ & selection_set. span . end ,
118117 Operation {
119118 operation_type : operation_type. item ,
120119 name,
@@ -133,9 +132,7 @@ fn parse_fragment_definition<'a, 'b, S>(
133132where
134133 S : ScalarValue ,
135134{
136- let Spanning {
137- start : start_pos, ..
138- } = parser. expect ( & Token :: Name ( "fragment" ) ) ?;
135+ let start_pos = parser. expect ( & Token :: Name ( "fragment" ) ) ?. span . start ;
139136 let name = match parser. expect_name ( ) {
140137 Ok ( n) => {
141138 if n. item == "on" {
@@ -160,7 +157,7 @@ where
160157
161158 Ok ( Spanning :: start_end (
162159 & start_pos,
163- & selection_set. end ,
160+ & selection_set. span . end ,
164161 Fragment {
165162 name,
166163 type_condition : type_cond,
@@ -222,10 +219,7 @@ fn parse_fragment<'a, 'b, S>(
222219where
223220 S : ScalarValue ,
224221{
225- let Spanning {
226- start : ref start_pos,
227- ..
228- } = parser. expect ( & Token :: Ellipsis ) ?;
222+ let start_pos = parser. expect ( & Token :: Ellipsis ) ?. span . start ;
229223
230224 match parser. peek ( ) . item {
231225 Token :: Name ( "on" ) => {
@@ -240,8 +234,8 @@ where
240234 let selection_set = parse_selection_set ( parser, schema, fields) ?;
241235
242236 Ok ( Selection :: InlineFragment ( Spanning :: start_end (
243- & start_pos. clone ( ) ,
244- & selection_set. end ,
237+ & start_pos,
238+ & selection_set. span . end ,
245239 InlineFragment {
246240 type_condition : Some ( name) ,
247241 directives : directives. map ( |s| s. item ) ,
@@ -253,8 +247,8 @@ where
253247 let selection_set = parse_selection_set ( parser, schema, fields) ?;
254248
255249 Ok ( Selection :: InlineFragment ( Spanning :: start_end (
256- & start_pos. clone ( ) ,
257- & selection_set. end ,
250+ & start_pos,
251+ & selection_set. span . end ,
258252 InlineFragment {
259253 type_condition : None ,
260254 directives : None ,
@@ -270,7 +264,7 @@ where
270264 & start_pos. clone ( ) ,
271265 & directives
272266 . as_ref ( )
273- . map_or ( & frag_name. end , |s| & s. end )
267+ . map_or ( & frag_name. span . end , |s| & s. span . end )
274268 . clone ( ) ,
275269 FragmentSpread {
276270 name : frag_name,
@@ -283,8 +277,8 @@ where
283277 let selection_set = parse_selection_set ( parser, schema, fields) ?;
284278
285279 Ok ( Selection :: InlineFragment ( Spanning :: start_end (
286- & start_pos. clone ( ) ,
287- & selection_set. end ,
280+ & start_pos,
281+ & selection_set. span . end ,
288282 InlineFragment {
289283 type_condition : None ,
290284 directives : directives. map ( |s| s. item ) ,
@@ -329,13 +323,13 @@ where
329323 let selection_set = parse_optional_selection_set ( parser, schema, fields) ?;
330324
331325 Ok ( Spanning :: start_end (
332- & alias. as_ref ( ) . unwrap_or ( & name) . start . clone ( ) ,
326+ & alias. as_ref ( ) . unwrap_or ( & name) . span . start ,
333327 & selection_set
334328 . as_ref ( )
335- . map ( |s| & s. end )
336- . or_else ( || directives. as_ref ( ) . map ( |s| & s. end ) )
337- . or_else ( || arguments. as_ref ( ) . map ( |s| & s. end ) )
338- . unwrap_or ( & name. end )
329+ . map ( |s| & s. span . end )
330+ . or_else ( || directives. as_ref ( ) . map ( |s| & s. span . end ) )
331+ . or_else ( || arguments. as_ref ( ) . map ( |s| & s. span . end ) )
332+ . unwrap_or ( & name. span . end )
339333 . clone ( ) ,
340334 Field {
341335 alias,
@@ -389,8 +383,8 @@ where
389383 let value = parse_value_literal ( parser, false , schema, tpe) ?;
390384
391385 Ok ( Spanning :: start_end (
392- & name. start . clone ( ) ,
393- & value. end . clone ( ) ,
386+ & name. span . start ,
387+ & value. span . end . clone ( ) ,
394388 ( name, value) ,
395389 ) )
396390}
@@ -437,9 +431,7 @@ fn parse_variable_definition<'a, 'b, S>(
437431where
438432 S : ScalarValue ,
439433{
440- let Spanning {
441- start : start_pos, ..
442- } = parser. expect ( & Token :: Dollar ) ?;
434+ let start_pos = parser. expect ( & Token :: Dollar ) ?. span . start ;
443435 let var_name = parser. expect_name ( ) ?;
444436 parser. expect ( & Token :: Colon ) ?;
445437 let var_type = parse_type ( parser) ?;
@@ -457,10 +449,10 @@ where
457449 & start_pos,
458450 & default_value
459451 . as_ref ( )
460- . map_or ( & var_type. end , |s| & s. end )
452+ . map_or ( & var_type. span . end , |s| & s. span . end )
461453 . clone ( ) ,
462454 (
463- Spanning :: start_end ( & start_pos, & var_name. end , var_name. item ) ,
455+ Spanning :: start_end ( & start_pos, & var_name. span . end , var_name. item ) ,
464456 VariableDefinition {
465457 var_type,
466458 default_value,
@@ -496,9 +488,7 @@ fn parse_directive<'a, 'b, S>(
496488where
497489 S : ScalarValue ,
498490{
499- let Spanning {
500- start : start_pos, ..
501- } = parser. expect ( & Token :: At ) ?;
491+ let start_pos = parser. expect ( & Token :: At ) ?. span . start ;
502492 let name = parser. expect_name ( ) ?;
503493
504494 let directive = schema. directive_by_name ( name. item ) ;
@@ -511,20 +501,24 @@ where
511501
512502 Ok ( Spanning :: start_end (
513503 & start_pos,
514- & arguments. as_ref ( ) . map_or ( & name. end , |s| & s. end ) . clone ( ) ,
504+ & arguments
505+ . as_ref ( )
506+ . map_or ( & name. span . end , |s| & s. span . end )
507+ . clone ( ) ,
515508 Directive { name, arguments } ,
516509 ) )
517510}
518511
519512pub fn parse_type < ' a > ( parser : & mut Parser < ' a > ) -> ParseResult < Type < ' a > > {
520513 let parsed_type = if let Some ( Spanning {
521- start : start_pos, ..
514+ span : ref start_span,
515+ ..
522516 } ) = parser. skip ( & Token :: BracketOpen ) ?
523517 {
524518 let inner_type = parse_type ( parser) ?;
525- let Spanning { end : end_pos, .. } = parser. expect ( & Token :: BracketClose ) ?;
519+ let end_pos = parser. expect ( & Token :: BracketClose ) ?. span . end ;
526520 Spanning :: start_end (
527- & start_pos ,
521+ & start_span . start ,
528522 & end_pos,
529523 Type :: List ( Box :: new ( inner_type. item ) , None ) ,
530524 )
@@ -542,13 +536,13 @@ pub fn parse_type<'a>(parser: &mut Parser<'a>) -> ParseResult<Type<'a>> {
542536}
543537
544538fn wrap_non_null < ' a > ( parser : & mut Parser < ' a > , inner : Spanning < Type < ' a > > ) -> ParseResult < Type < ' a > > {
545- let Spanning { end : end_pos, .. } = parser. expect ( & Token :: ExclamationMark ) ?;
539+ let end_pos = & parser. expect ( & Token :: ExclamationMark ) ?. span . end ;
546540
547541 let wrapped = match inner. item {
548542 Type :: Named ( name) => Type :: NonNullNamed ( name) ,
549543 Type :: List ( l, expected_size) => Type :: NonNullList ( l, expected_size) ,
550544 t => t,
551545 } ;
552546
553- Ok ( Spanning :: start_end ( & inner. start , & end_pos, wrapped) )
547+ Ok ( Spanning :: start_end ( & inner. span . start , end_pos, wrapped) )
554548}
0 commit comments