@@ -48,10 +48,8 @@ import com.apollographql.apollo3.ast.GQLValue
48
48
import com.apollographql.apollo3.ast.GQLVariableDefinition
49
49
import com.apollographql.apollo3.ast.GQLVariableValue
50
50
import com.apollographql.apollo3.ast.SourceLocation
51
- import okio.BufferedSource
52
- import okio.Closeable
53
51
54
- internal class Parser (src : String , val withSourceLocation : Boolean , val filePath : String? ) {
52
+ internal class Parser (src : String , private val withSourceLocation : Boolean , val filePath : String? ) {
55
53
private val lexer = Lexer (src)
56
54
private var token = lexer.nextToken()
57
55
private var lastToken = token
@@ -292,8 +290,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
292
290
return expectToken<Token .Name >().value
293
291
}
294
292
295
- private fun parseOperationDefinition (): GQLOperationDefinition {
296
- val start = token
293
+ private fun parseOperationDefinition (start : Token ): GQLOperationDefinition {
297
294
val description = expectOptionalToken<Token .String >()?.value
298
295
299
296
if (peek<Token .LeftBrace >()) {
@@ -384,8 +381,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
384
381
)
385
382
}
386
383
387
- private fun parseSchemaDefinition (): GQLSchemaDefinition {
388
- val start = token
384
+ private fun parseSchemaDefinition (start : Token ): GQLSchemaDefinition {
389
385
val description = parseDescription()
390
386
391
387
expectKeyword(" schema" )
@@ -422,8 +418,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
422
418
)
423
419
}
424
420
425
- private fun parseScalarTypeDefinition (): GQLScalarTypeDefinition {
426
- val start = token
421
+ private fun parseScalarTypeDefinition (start : Token ): GQLScalarTypeDefinition {
427
422
val description = parseDescription()
428
423
expectKeyword(" scalar" )
429
424
val name = parseName()
@@ -479,8 +474,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
479
474
return parseNonEmptyListOrNull<Token .LeftBrace , Token .RightBrace , GQLFieldDefinition >(::parseFieldDefinition).orEmpty()
480
475
}
481
476
482
- private fun parseObjectTypeDefinition (): GQLTypeDefinition {
483
- val start = token
477
+ private fun parseObjectTypeDefinition (start : Token ): GQLTypeDefinition {
484
478
val description = parseDescription()
485
479
this .expectKeyword(" type" )
486
480
val name = parseName()
@@ -520,8 +514,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
520
514
)
521
515
}
522
516
523
- private fun parseInterfaceTypeDefinition (): GQLInterfaceTypeDefinition {
524
- val start = token
517
+ private fun parseInterfaceTypeDefinition (start : Token ): GQLInterfaceTypeDefinition {
525
518
val description = parseDescription()
526
519
expectKeyword(" interface" )
527
520
val name = parseName()
@@ -561,8 +554,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
561
554
)
562
555
}
563
556
564
- private fun parseUnionTypeDefinition (): GQLUnionTypeDefinition {
565
- val start = token
557
+ private fun parseUnionTypeDefinition (start : Token ): GQLUnionTypeDefinition {
566
558
val description = parseDescription()
567
559
expectKeyword(" union" )
568
560
val name = parseName()
@@ -606,8 +598,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
606
598
}
607
599
}
608
600
609
- private fun parseInputObjectTypeDefinition (): GQLInputObjectTypeDefinition {
610
- val start = token
601
+ private fun parseInputObjectTypeDefinition (start : Token ): GQLInputObjectTypeDefinition {
611
602
val description = parseDescription()
612
603
expectKeyword(" input" )
613
604
val name = parseName()
@@ -647,8 +638,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
647
638
return parseNonEmptyListOrNull<Token .LeftBrace , Token .RightBrace , GQLInputValueDefinition >(::parseInputValueDefinition).orEmpty()
648
639
}
649
640
650
- private fun parseEnumTypeDefinition (): GQLEnumTypeDefinition {
651
- val start = token
641
+ private fun parseEnumTypeDefinition (start : Token ): GQLEnumTypeDefinition {
652
642
val description = parseDescription()
653
643
expectKeyword(" enum" )
654
644
val name = parseName()
@@ -717,8 +707,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
717
707
return name
718
708
}
719
709
720
- private fun parseDirectiveDefinition (): GQLDirectiveDefinition {
721
- val start = token
710
+ private fun parseDirectiveDefinition (start : Token ): GQLDirectiveDefinition {
722
711
val description = parseDescription()
723
712
expectKeyword(" directive" )
724
713
expectToken<Token .At >()
@@ -758,27 +747,27 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
758
747
}
759
748
760
749
private fun parseDefinition (): GQLDefinition {
761
-
750
+ val start = token
762
751
val hasDescription = peek<Token .String >()
763
752
val t = if (hasDescription) lookaheadToken() else token
764
753
765
754
return when (t) {
766
- is Token .LeftBrace -> parseOperationDefinition()
755
+ is Token .LeftBrace -> parseOperationDefinition(start )
767
756
is Token .Name -> {
768
757
if (t.value == " extend" && hasDescription) {
769
758
throw ParserException (" Type system extensions cannot have a description" , t)
770
759
}
771
760
when (t.value) {
772
- " schema" -> parseSchemaDefinition()
773
- " scalar" -> parseScalarTypeDefinition()
774
- " type" -> parseObjectTypeDefinition()
775
- " interface" -> parseInterfaceTypeDefinition()
776
- " union" -> parseUnionTypeDefinition()
777
- " enum" -> parseEnumTypeDefinition()
778
- " input" -> parseInputObjectTypeDefinition()
779
- " directive" -> parseDirectiveDefinition()
780
- " query" , " mutation" , " subscription" -> parseOperationDefinition()
781
- " fragment" -> parseFragmentDefinition()
761
+ " schema" -> parseSchemaDefinition(start )
762
+ " scalar" -> parseScalarTypeDefinition(start )
763
+ " type" -> parseObjectTypeDefinition(start )
764
+ " interface" -> parseInterfaceTypeDefinition(start )
765
+ " union" -> parseUnionTypeDefinition(start )
766
+ " enum" -> parseEnumTypeDefinition(start )
767
+ " input" -> parseInputObjectTypeDefinition(start )
768
+ " directive" -> parseDirectiveDefinition(start )
769
+ " query" , " mutation" , " subscription" -> parseOperationDefinition(start )
770
+ " fragment" -> parseFragmentDefinition(start )
782
771
" extend" -> parseTypeSystemExtension()
783
772
else -> unexpected(t)
784
773
}
@@ -788,8 +777,7 @@ internal class Parser(src: String, val withSourceLocation: Boolean, val filePath
788
777
}
789
778
}
790
779
791
- private fun parseFragmentDefinition (): GQLFragmentDefinition {
792
- val start = token
780
+ private fun parseFragmentDefinition (start : Token ): GQLFragmentDefinition {
793
781
val description = parseDescription()
794
782
expectKeyword(" fragment" )
795
783
val name = parseFragmentName()
0 commit comments