82
82
let fields = fields. as_ref ( ) . map ( |c| c as & [ _ ] ) ;
83
83
let selection_set = parse_selection_set ( parser, schema, fields) ?;
84
84
85
- Ok ( Spanning :: start_end (
86
- & selection_set. start ,
87
- & selection_set. end ,
85
+ Ok ( Spanning :: new (
86
+ selection_set. span ,
88
87
Operation {
89
88
operation_type : OperationType :: Query ,
90
89
name : None ,
94
93
} ,
95
94
) )
96
95
} else {
97
- let start_pos = parser. peek ( ) . start ;
96
+ let start_pos = parser. peek ( ) . span . start ;
98
97
let operation_type = parse_operation_type ( parser) ?;
99
98
let op = match operation_type. item {
100
99
OperationType :: Query => Some ( schema. concrete_query_type ( ) ) ,
@@ -114,7 +113,7 @@ where
114
113
115
114
Ok ( Spanning :: start_end (
116
115
& start_pos,
117
- & selection_set. end ,
116
+ & selection_set. span . end ,
118
117
Operation {
119
118
operation_type : operation_type. item ,
120
119
name,
@@ -133,9 +132,7 @@ fn parse_fragment_definition<'a, 'b, S>(
133
132
where
134
133
S : ScalarValue ,
135
134
{
136
- let Spanning {
137
- start : start_pos, ..
138
- } = parser. expect ( & Token :: Name ( "fragment" ) ) ?;
135
+ let start_pos = parser. expect ( & Token :: Name ( "fragment" ) ) ?. span . start ;
139
136
let name = match parser. expect_name ( ) {
140
137
Ok ( n) => {
141
138
if n. item == "on" {
@@ -160,7 +157,7 @@ where
160
157
161
158
Ok ( Spanning :: start_end (
162
159
& start_pos,
163
- & selection_set. end ,
160
+ & selection_set. span . end ,
164
161
Fragment {
165
162
name,
166
163
type_condition : type_cond,
@@ -222,10 +219,7 @@ fn parse_fragment<'a, 'b, S>(
222
219
where
223
220
S : ScalarValue ,
224
221
{
225
- let Spanning {
226
- start : ref start_pos,
227
- ..
228
- } = parser. expect ( & Token :: Ellipsis ) ?;
222
+ let start_pos = parser. expect ( & Token :: Ellipsis ) ?. span . start ;
229
223
230
224
match parser. peek ( ) . item {
231
225
Token :: Name ( "on" ) => {
@@ -240,8 +234,8 @@ where
240
234
let selection_set = parse_selection_set ( parser, schema, fields) ?;
241
235
242
236
Ok ( Selection :: InlineFragment ( Spanning :: start_end (
243
- & start_pos. clone ( ) ,
244
- & selection_set. end ,
237
+ & start_pos,
238
+ & selection_set. span . end ,
245
239
InlineFragment {
246
240
type_condition : Some ( name) ,
247
241
directives : directives. map ( |s| s. item ) ,
@@ -253,8 +247,8 @@ where
253
247
let selection_set = parse_selection_set ( parser, schema, fields) ?;
254
248
255
249
Ok ( Selection :: InlineFragment ( Spanning :: start_end (
256
- & start_pos. clone ( ) ,
257
- & selection_set. end ,
250
+ & start_pos,
251
+ & selection_set. span . end ,
258
252
InlineFragment {
259
253
type_condition : None ,
260
254
directives : None ,
@@ -270,7 +264,7 @@ where
270
264
& start_pos. clone ( ) ,
271
265
& directives
272
266
. as_ref ( )
273
- . map_or ( & frag_name. end , |s| & s. end )
267
+ . map_or ( & frag_name. span . end , |s| & s. span . end )
274
268
. clone ( ) ,
275
269
FragmentSpread {
276
270
name : frag_name,
@@ -283,8 +277,8 @@ where
283
277
let selection_set = parse_selection_set ( parser, schema, fields) ?;
284
278
285
279
Ok ( Selection :: InlineFragment ( Spanning :: start_end (
286
- & start_pos. clone ( ) ,
287
- & selection_set. end ,
280
+ & start_pos,
281
+ & selection_set. span . end ,
288
282
InlineFragment {
289
283
type_condition : None ,
290
284
directives : directives. map ( |s| s. item ) ,
@@ -329,13 +323,13 @@ where
329
323
let selection_set = parse_optional_selection_set ( parser, schema, fields) ?;
330
324
331
325
Ok ( Spanning :: start_end (
332
- & alias. as_ref ( ) . unwrap_or ( & name) . start . clone ( ) ,
326
+ & alias. as_ref ( ) . unwrap_or ( & name) . span . start ,
333
327
& selection_set
334
328
. 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 )
339
333
. clone ( ) ,
340
334
Field {
341
335
alias,
@@ -389,8 +383,8 @@ where
389
383
let value = parse_value_literal ( parser, false , schema, tpe) ?;
390
384
391
385
Ok ( Spanning :: start_end (
392
- & name. start . clone ( ) ,
393
- & value. end . clone ( ) ,
386
+ & name. span . start ,
387
+ & value. span . end . clone ( ) ,
394
388
( name, value) ,
395
389
) )
396
390
}
@@ -437,9 +431,7 @@ fn parse_variable_definition<'a, 'b, S>(
437
431
where
438
432
S : ScalarValue ,
439
433
{
440
- let Spanning {
441
- start : start_pos, ..
442
- } = parser. expect ( & Token :: Dollar ) ?;
434
+ let start_pos = parser. expect ( & Token :: Dollar ) ?. span . start ;
443
435
let var_name = parser. expect_name ( ) ?;
444
436
parser. expect ( & Token :: Colon ) ?;
445
437
let var_type = parse_type ( parser) ?;
@@ -457,10 +449,10 @@ where
457
449
& start_pos,
458
450
& default_value
459
451
. as_ref ( )
460
- . map_or ( & var_type. end , |s| & s. end )
452
+ . map_or ( & var_type. span . end , |s| & s. span . end )
461
453
. clone ( ) ,
462
454
(
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 ) ,
464
456
VariableDefinition {
465
457
var_type,
466
458
default_value,
@@ -496,9 +488,7 @@ fn parse_directive<'a, 'b, S>(
496
488
where
497
489
S : ScalarValue ,
498
490
{
499
- let Spanning {
500
- start : start_pos, ..
501
- } = parser. expect ( & Token :: At ) ?;
491
+ let start_pos = parser. expect ( & Token :: At ) ?. span . start ;
502
492
let name = parser. expect_name ( ) ?;
503
493
504
494
let directive = schema. directive_by_name ( name. item ) ;
@@ -511,20 +501,24 @@ where
511
501
512
502
Ok ( Spanning :: start_end (
513
503
& 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 ( ) ,
515
508
Directive { name, arguments } ,
516
509
) )
517
510
}
518
511
519
512
pub fn parse_type < ' a > ( parser : & mut Parser < ' a > ) -> ParseResult < Type < ' a > > {
520
513
let parsed_type = if let Some ( Spanning {
521
- start : start_pos, ..
514
+ span : ref start_span,
515
+ ..
522
516
} ) = parser. skip ( & Token :: BracketOpen ) ?
523
517
{
524
518
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 ;
526
520
Spanning :: start_end (
527
- & start_pos ,
521
+ & start_span . start ,
528
522
& end_pos,
529
523
Type :: List ( Box :: new ( inner_type. item ) , None ) ,
530
524
)
@@ -542,13 +536,13 @@ pub fn parse_type<'a>(parser: &mut Parser<'a>) -> ParseResult<Type<'a>> {
542
536
}
543
537
544
538
fn 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 ;
546
540
547
541
let wrapped = match inner. item {
548
542
Type :: Named ( name) => Type :: NonNullNamed ( name) ,
549
543
Type :: List ( l, expected_size) => Type :: NonNullList ( l, expected_size) ,
550
544
t => t,
551
545
} ;
552
546
553
- Ok ( Spanning :: start_end ( & inner. start , & end_pos, wrapped) )
547
+ Ok ( Spanning :: start_end ( & inner. span . start , end_pos, wrapped) )
554
548
}
0 commit comments