graphql 1.13.24 → 2.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/install/mutation_root_generator.rb +2 -2
  3. data/lib/generators/graphql/install/templates/base_mutation.erb +2 -0
  4. data/lib/generators/graphql/install/templates/mutation_type.erb +2 -0
  5. data/lib/generators/graphql/install_generator.rb +50 -1
  6. data/lib/generators/graphql/mutation_delete_generator.rb +1 -1
  7. data/lib/generators/graphql/mutation_update_generator.rb +1 -1
  8. data/lib/generators/graphql/orm_mutations_base.rb +1 -1
  9. data/lib/generators/graphql/relay.rb +21 -18
  10. data/lib/generators/graphql/templates/base_argument.erb +2 -0
  11. data/lib/generators/graphql/templates/base_connection.erb +2 -0
  12. data/lib/generators/graphql/templates/base_edge.erb +2 -0
  13. data/lib/generators/graphql/templates/base_enum.erb +2 -0
  14. data/lib/generators/graphql/templates/base_field.erb +2 -0
  15. data/lib/generators/graphql/templates/base_input_object.erb +2 -0
  16. data/lib/generators/graphql/templates/base_interface.erb +2 -0
  17. data/lib/generators/graphql/templates/base_object.erb +2 -0
  18. data/lib/generators/graphql/templates/base_resolver.erb +8 -0
  19. data/lib/generators/graphql/templates/base_scalar.erb +2 -0
  20. data/lib/generators/graphql/templates/base_union.erb +2 -0
  21. data/lib/generators/graphql/templates/graphql_controller.erb +2 -0
  22. data/lib/generators/graphql/templates/loader.erb +2 -0
  23. data/lib/generators/graphql/templates/mutation.erb +2 -0
  24. data/lib/generators/graphql/templates/node_type.erb +2 -0
  25. data/lib/generators/graphql/templates/query_type.erb +2 -0
  26. data/lib/generators/graphql/templates/schema.erb +8 -0
  27. data/lib/generators/graphql/type_generator.rb +1 -1
  28. data/lib/graphql/analysis/analyzer.rb +90 -0
  29. data/lib/graphql/analysis/field_usage.rb +65 -28
  30. data/lib/graphql/analysis/max_query_complexity.rb +11 -17
  31. data/lib/graphql/analysis/max_query_depth.rb +13 -19
  32. data/lib/graphql/analysis/query_complexity.rb +236 -61
  33. data/lib/graphql/analysis/query_depth.rb +38 -23
  34. data/lib/graphql/analysis/visitor.rb +280 -0
  35. data/lib/graphql/analysis.rb +93 -6
  36. data/lib/graphql/autoload.rb +38 -0
  37. data/lib/graphql/backtrace/table.rb +118 -73
  38. data/lib/graphql/backtrace.rb +2 -25
  39. data/lib/graphql/coercion_error.rb +1 -9
  40. data/lib/graphql/current.rb +57 -0
  41. data/lib/graphql/dashboard/detailed_traces.rb +47 -0
  42. data/lib/graphql/dashboard/installable.rb +22 -0
  43. data/lib/graphql/dashboard/limiters.rb +93 -0
  44. data/lib/graphql/dashboard/operation_store.rb +199 -0
  45. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css +6 -0
  46. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js +7 -0
  47. data/lib/graphql/dashboard/statics/charts.min.css +1 -0
  48. data/lib/graphql/dashboard/statics/dashboard.css +30 -0
  49. data/lib/graphql/dashboard/statics/dashboard.js +143 -0
  50. data/lib/graphql/dashboard/statics/header-icon.png +0 -0
  51. data/lib/graphql/dashboard/statics/icon.png +0 -0
  52. data/lib/graphql/dashboard/subscriptions.rb +96 -0
  53. data/lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb +45 -0
  54. data/lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb +18 -0
  55. data/lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb +62 -0
  56. data/lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb +18 -0
  57. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb +23 -0
  58. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb +21 -0
  59. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb +69 -0
  60. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb +7 -0
  61. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb +39 -0
  62. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb +32 -0
  63. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb +81 -0
  64. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb +71 -0
  65. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb +41 -0
  66. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb +55 -0
  67. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb +40 -0
  68. data/lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb +108 -0
  69. data/lib/graphql/dashboard.rb +158 -0
  70. data/lib/graphql/dataloader/active_record_association_source.rb +84 -0
  71. data/lib/graphql/dataloader/active_record_source.rb +47 -0
  72. data/lib/graphql/dataloader/async_dataloader.rb +101 -0
  73. data/lib/graphql/dataloader/null_dataloader.rb +11 -2
  74. data/lib/graphql/dataloader/request.rb +5 -0
  75. data/lib/graphql/dataloader/source.rb +103 -47
  76. data/lib/graphql/dataloader.rb +174 -148
  77. data/lib/graphql/dig.rb +3 -2
  78. data/lib/graphql/duration_encoding_error.rb +16 -0
  79. data/lib/graphql/execution/errors.rb +12 -82
  80. data/lib/graphql/execution/interpreter/argument_value.rb +5 -1
  81. data/lib/graphql/execution/interpreter/arguments.rb +1 -1
  82. data/lib/graphql/execution/interpreter/arguments_cache.rb +30 -35
  83. data/lib/graphql/execution/interpreter/resolve.rb +32 -2
  84. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +215 -0
  85. data/lib/graphql/execution/interpreter/runtime.rb +525 -502
  86. data/lib/graphql/execution/interpreter.rb +127 -81
  87. data/lib/graphql/execution/lazy.rb +7 -21
  88. data/lib/graphql/execution/lookahead.rb +133 -55
  89. data/lib/graphql/execution/multiplex.rb +6 -176
  90. data/lib/graphql/execution.rb +11 -4
  91. data/lib/graphql/introspection/directive_location_enum.rb +1 -1
  92. data/lib/graphql/introspection/directive_type.rb +1 -1
  93. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  94. data/lib/graphql/introspection/entry_points.rb +10 -17
  95. data/lib/graphql/introspection/field_type.rb +1 -1
  96. data/lib/graphql/introspection/schema_type.rb +8 -11
  97. data/lib/graphql/introspection/type_type.rb +13 -6
  98. data/lib/graphql/introspection.rb +4 -3
  99. data/lib/graphql/invalid_name_error.rb +1 -1
  100. data/lib/graphql/invalid_null_error.rb +20 -17
  101. data/lib/graphql/language/block_string.rb +34 -18
  102. data/lib/graphql/language/cache.rb +13 -0
  103. data/lib/graphql/language/comment.rb +18 -0
  104. data/lib/graphql/language/definition_slice.rb +1 -1
  105. data/lib/graphql/language/document_from_schema_definition.rb +114 -80
  106. data/lib/graphql/language/lexer.rb +375 -1489
  107. data/lib/graphql/language/nodes.rb +189 -104
  108. data/lib/graphql/language/parser.rb +807 -1941
  109. data/lib/graphql/language/printer.rb +366 -163
  110. data/lib/graphql/language/sanitized_printer.rb +21 -23
  111. data/lib/graphql/language/static_visitor.rb +171 -0
  112. data/lib/graphql/language/visitor.rb +189 -138
  113. data/lib/graphql/language.rb +62 -1
  114. data/lib/graphql/load_application_object_failed_error.rb +5 -1
  115. data/lib/graphql/pagination/active_record_relation_connection.rb +0 -8
  116. data/lib/graphql/pagination/array_connection.rb +8 -6
  117. data/lib/graphql/pagination/connection.rb +61 -7
  118. data/lib/graphql/pagination/connections.rb +3 -28
  119. data/lib/graphql/pagination/mongoid_relation_connection.rb +1 -2
  120. data/lib/graphql/pagination/relation_connection.rb +2 -0
  121. data/lib/graphql/query/context/scoped_context.rb +101 -0
  122. data/lib/graphql/query/context.rb +131 -225
  123. data/lib/graphql/query/input_validation_result.rb +1 -1
  124. data/lib/graphql/query/null_context.rb +11 -33
  125. data/lib/graphql/query/partial.rb +179 -0
  126. data/lib/graphql/query/validation_pipeline.rb +14 -37
  127. data/lib/graphql/query/variable_validation_error.rb +1 -1
  128. data/lib/graphql/query/variables.rb +6 -19
  129. data/lib/graphql/query.rb +162 -98
  130. data/lib/graphql/railtie.rb +15 -109
  131. data/lib/graphql/rake_task/validate.rb +1 -1
  132. data/lib/graphql/rake_task.rb +30 -11
  133. data/lib/graphql/relay/range_add.rb +9 -20
  134. data/lib/graphql/relay.rb +0 -15
  135. data/lib/graphql/rubocop/graphql/base_cop.rb +1 -1
  136. data/lib/graphql/rubocop/graphql/field_type_in_block.rb +144 -0
  137. data/lib/graphql/rubocop/graphql/root_types_in_block.rb +38 -0
  138. data/lib/graphql/rubocop.rb +2 -0
  139. data/lib/graphql/schema/addition.rb +70 -33
  140. data/lib/graphql/schema/always_visible.rb +15 -0
  141. data/lib/graphql/schema/argument.rb +104 -59
  142. data/lib/graphql/schema/base_64_encoder.rb +3 -5
  143. data/lib/graphql/schema/build_from_definition.rb +154 -74
  144. data/lib/graphql/schema/directive/flagged.rb +4 -2
  145. data/lib/graphql/schema/directive/one_of.rb +24 -0
  146. data/lib/graphql/schema/directive/specified_by.rb +14 -0
  147. data/lib/graphql/schema/directive/transform.rb +1 -1
  148. data/lib/graphql/schema/directive.rb +47 -24
  149. data/lib/graphql/schema/enum.rb +137 -65
  150. data/lib/graphql/schema/enum_value.rb +11 -26
  151. data/lib/graphql/schema/field/connection_extension.rb +6 -16
  152. data/lib/graphql/schema/field/scope_extension.rb +8 -1
  153. data/lib/graphql/schema/field.rb +399 -404
  154. data/lib/graphql/schema/field_extension.rb +2 -5
  155. data/lib/graphql/schema/find_inherited_value.rb +2 -7
  156. data/lib/graphql/schema/has_single_input_argument.rb +160 -0
  157. data/lib/graphql/schema/input_object.rb +144 -99
  158. data/lib/graphql/schema/interface.rb +34 -51
  159. data/lib/graphql/schema/introspection_system.rb +12 -26
  160. data/lib/graphql/schema/late_bound_type.rb +12 -2
  161. data/lib/graphql/schema/list.rb +3 -9
  162. data/lib/graphql/schema/loader.rb +4 -6
  163. data/lib/graphql/schema/member/base_dsl_methods.rb +32 -18
  164. data/lib/graphql/schema/member/build_type.rb +15 -9
  165. data/lib/graphql/schema/member/has_arguments.rb +192 -96
  166. data/lib/graphql/schema/member/has_ast_node.rb +12 -0
  167. data/lib/graphql/schema/member/has_dataloader.rb +62 -0
  168. data/lib/graphql/schema/member/has_deprecation_reason.rb +18 -4
  169. data/lib/graphql/schema/member/has_directives.rb +81 -61
  170. data/lib/graphql/schema/member/has_fields.rb +119 -39
  171. data/lib/graphql/schema/member/has_interfaces.rb +66 -23
  172. data/lib/graphql/schema/member/has_unresolved_type_error.rb +5 -1
  173. data/lib/graphql/schema/member/has_validators.rb +32 -6
  174. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
  175. data/lib/graphql/schema/member/scoped.rb +19 -0
  176. data/lib/graphql/schema/member/type_system_helpers.rb +32 -2
  177. data/lib/graphql/schema/member/validates_input.rb +4 -4
  178. data/lib/graphql/schema/member.rb +1 -6
  179. data/lib/graphql/schema/mutation.rb +7 -9
  180. data/lib/graphql/schema/non_null.rb +1 -7
  181. data/lib/graphql/schema/object.rb +42 -49
  182. data/lib/graphql/schema/printer.rb +12 -8
  183. data/lib/graphql/schema/ractor_shareable.rb +79 -0
  184. data/lib/graphql/schema/relay_classic_mutation.rb +12 -124
  185. data/lib/graphql/schema/resolver/has_payload_type.rb +20 -10
  186. data/lib/graphql/schema/resolver.rb +96 -81
  187. data/lib/graphql/schema/scalar.rb +10 -30
  188. data/lib/graphql/schema/subscription.rb +60 -14
  189. data/lib/graphql/schema/timeout.rb +44 -31
  190. data/lib/graphql/schema/type_expression.rb +2 -2
  191. data/lib/graphql/schema/type_membership.rb +3 -0
  192. data/lib/graphql/schema/union.rb +12 -19
  193. data/lib/graphql/schema/unique_within_type.rb +1 -1
  194. data/lib/graphql/schema/validator/all_validator.rb +62 -0
  195. data/lib/graphql/schema/validator/required_validator.rb +60 -10
  196. data/lib/graphql/schema/validator.rb +5 -3
  197. data/lib/graphql/schema/visibility/migration.rb +188 -0
  198. data/lib/graphql/schema/visibility/profile.rb +445 -0
  199. data/lib/graphql/schema/visibility/visit.rb +190 -0
  200. data/lib/graphql/schema/visibility.rb +311 -0
  201. data/lib/graphql/schema/warden.rb +318 -94
  202. data/lib/graphql/schema/wrapper.rb +0 -5
  203. data/lib/graphql/schema.rb +1148 -1085
  204. data/lib/graphql/static_validation/all_rules.rb +4 -3
  205. data/lib/graphql/static_validation/base_visitor.rb +11 -27
  206. data/lib/graphql/static_validation/definition_dependencies.rb +7 -1
  207. data/lib/graphql/static_validation/error.rb +2 -2
  208. data/lib/graphql/static_validation/literal_validator.rb +24 -7
  209. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
  210. data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +1 -1
  211. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +3 -2
  212. data/lib/graphql/static_validation/rules/directives_are_defined.rb +13 -7
  213. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +14 -12
  214. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +12 -2
  215. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +48 -6
  216. data/lib/graphql/static_validation/rules/fields_will_merge.rb +90 -27
  217. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +10 -2
  218. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  219. data/lib/graphql/static_validation/rules/fragment_types_exist.rb +12 -2
  220. data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +1 -1
  221. data/lib/graphql/static_validation/rules/mutation_root_exists.rb +1 -1
  222. data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +1 -1
  223. data/lib/graphql/static_validation/rules/not_single_subscription_error.rb +25 -0
  224. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  225. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  226. data/lib/graphql/static_validation/rules/query_root_exists.rb +1 -1
  227. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +5 -5
  228. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +5 -5
  229. data/lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb +26 -0
  230. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +19 -9
  231. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +18 -27
  232. data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +1 -1
  233. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +2 -2
  234. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +11 -2
  235. data/lib/graphql/static_validation/validation_context.rb +21 -5
  236. data/lib/graphql/static_validation/validator.rb +12 -26
  237. data/lib/graphql/static_validation.rb +0 -3
  238. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +14 -6
  239. data/lib/graphql/subscriptions/broadcast_analyzer.rb +11 -5
  240. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +40 -1
  241. data/lib/graphql/subscriptions/event.rb +24 -12
  242. data/lib/graphql/subscriptions/serialize.rb +3 -1
  243. data/lib/graphql/subscriptions.rb +48 -32
  244. data/lib/graphql/testing/helpers.rb +158 -0
  245. data/lib/graphql/testing.rb +2 -0
  246. data/lib/graphql/tracing/active_support_notifications_trace.rb +27 -0
  247. data/lib/graphql/tracing/active_support_notifications_tracing.rb +1 -1
  248. data/lib/graphql/tracing/appoptics_trace.rb +259 -0
  249. data/lib/graphql/tracing/appoptics_tracing.rb +9 -2
  250. data/lib/graphql/tracing/appsignal_trace.rb +54 -0
  251. data/lib/graphql/tracing/appsignal_tracing.rb +2 -0
  252. data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
  253. data/lib/graphql/tracing/data_dog_trace.rb +71 -0
  254. data/lib/graphql/tracing/data_dog_tracing.rb +3 -0
  255. data/lib/graphql/tracing/detailed_trace/memory_backend.rb +60 -0
  256. data/lib/graphql/tracing/detailed_trace/redis_backend.rb +72 -0
  257. data/lib/graphql/tracing/detailed_trace.rb +93 -0
  258. data/lib/graphql/{execution/instrumentation.rb → tracing/legacy_hooks_trace.rb} +11 -28
  259. data/lib/graphql/tracing/legacy_trace.rb +12 -0
  260. data/lib/graphql/tracing/monitor_trace.rb +283 -0
  261. data/lib/graphql/tracing/new_relic_trace.rb +68 -0
  262. data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
  263. data/lib/graphql/tracing/notifications_trace.rb +195 -0
  264. data/lib/graphql/tracing/notifications_tracing.rb +2 -0
  265. data/lib/graphql/tracing/null_trace.rb +9 -0
  266. data/lib/graphql/tracing/perfetto_trace/trace.proto +141 -0
  267. data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +33 -0
  268. data/lib/graphql/tracing/perfetto_trace.rb +734 -0
  269. data/lib/graphql/tracing/platform_trace.rb +123 -0
  270. data/lib/graphql/tracing/platform_tracing.rb +28 -41
  271. data/lib/graphql/tracing/{prometheus_tracing → prometheus_trace}/graphql_collector.rb +6 -2
  272. data/lib/graphql/tracing/prometheus_trace.rb +93 -0
  273. data/lib/graphql/tracing/prometheus_tracing.rb +5 -3
  274. data/lib/graphql/tracing/scout_trace.rb +49 -0
  275. data/lib/graphql/tracing/scout_tracing.rb +2 -0
  276. data/lib/graphql/tracing/sentry_trace.rb +80 -0
  277. data/lib/graphql/tracing/statsd_trace.rb +48 -0
  278. data/lib/graphql/tracing/statsd_tracing.rb +2 -0
  279. data/lib/graphql/tracing/trace.rb +186 -0
  280. data/lib/graphql/tracing.rb +32 -52
  281. data/lib/graphql/type_kinds.rb +8 -4
  282. data/lib/graphql/types/iso_8601_date.rb +4 -1
  283. data/lib/graphql/types/iso_8601_date_time.rb +4 -0
  284. data/lib/graphql/types/iso_8601_duration.rb +77 -0
  285. data/lib/graphql/types/relay/base_connection.rb +16 -6
  286. data/lib/graphql/types/relay/connection_behaviors.rb +65 -23
  287. data/lib/graphql/types/relay/edge_behaviors.rb +33 -5
  288. data/lib/graphql/types/relay/node_behaviors.rb +12 -2
  289. data/lib/graphql/types/relay/page_info_behaviors.rb +11 -2
  290. data/lib/graphql/types/relay.rb +0 -3
  291. data/lib/graphql/types/string.rb +1 -1
  292. data/lib/graphql/types.rb +18 -10
  293. data/lib/graphql/unauthorized_enum_value_error.rb +13 -0
  294. data/lib/graphql/version.rb +1 -1
  295. data/lib/graphql.rb +76 -123
  296. data/readme.md +13 -3
  297. metadata +225 -142
  298. data/lib/graphql/analysis/analyze_query.rb +0 -98
  299. data/lib/graphql/analysis/ast/analyzer.rb +0 -84
  300. data/lib/graphql/analysis/ast/field_usage.rb +0 -55
  301. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -23
  302. data/lib/graphql/analysis/ast/max_query_depth.rb +0 -22
  303. data/lib/graphql/analysis/ast/query_complexity.rb +0 -230
  304. data/lib/graphql/analysis/ast/query_depth.rb +0 -56
  305. data/lib/graphql/analysis/ast/visitor.rb +0 -269
  306. data/lib/graphql/analysis/ast.rb +0 -91
  307. data/lib/graphql/analysis/reducer_state.rb +0 -48
  308. data/lib/graphql/argument.rb +0 -131
  309. data/lib/graphql/authorization.rb +0 -82
  310. data/lib/graphql/backtrace/inspect_result.rb +0 -50
  311. data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
  312. data/lib/graphql/backtrace/tracer.rb +0 -81
  313. data/lib/graphql/backwards_compatibility.rb +0 -61
  314. data/lib/graphql/base_type.rb +0 -232
  315. data/lib/graphql/boolean_type.rb +0 -2
  316. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  317. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  318. data/lib/graphql/compatibility/execution_specification.rb +0 -436
  319. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  320. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
  321. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
  322. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  323. data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
  324. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
  325. data/lib/graphql/compatibility.rb +0 -5
  326. data/lib/graphql/define/assign_argument.rb +0 -12
  327. data/lib/graphql/define/assign_connection.rb +0 -13
  328. data/lib/graphql/define/assign_enum_value.rb +0 -18
  329. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  330. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  331. data/lib/graphql/define/assign_object_field.rb +0 -42
  332. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  333. data/lib/graphql/define/instance_definable.rb +0 -255
  334. data/lib/graphql/define/no_definition_error.rb +0 -7
  335. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  336. data/lib/graphql/define/type_definer.rb +0 -31
  337. data/lib/graphql/define.rb +0 -31
  338. data/lib/graphql/deprecated_dsl.rb +0 -55
  339. data/lib/graphql/deprecation.rb +0 -9
  340. data/lib/graphql/directive/deprecated_directive.rb +0 -2
  341. data/lib/graphql/directive/include_directive.rb +0 -2
  342. data/lib/graphql/directive/skip_directive.rb +0 -2
  343. data/lib/graphql/directive.rb +0 -107
  344. data/lib/graphql/enum_type.rb +0 -133
  345. data/lib/graphql/execution/execute.rb +0 -333
  346. data/lib/graphql/execution/flatten.rb +0 -40
  347. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  348. data/lib/graphql/execution/typecast.rb +0 -50
  349. data/lib/graphql/field/resolve.rb +0 -59
  350. data/lib/graphql/field.rb +0 -226
  351. data/lib/graphql/filter.rb +0 -53
  352. data/lib/graphql/float_type.rb +0 -2
  353. data/lib/graphql/function.rb +0 -128
  354. data/lib/graphql/id_type.rb +0 -2
  355. data/lib/graphql/input_object_type.rb +0 -138
  356. data/lib/graphql/int_type.rb +0 -2
  357. data/lib/graphql/interface_type.rb +0 -72
  358. data/lib/graphql/internal_representation/document.rb +0 -27
  359. data/lib/graphql/internal_representation/node.rb +0 -206
  360. data/lib/graphql/internal_representation/print.rb +0 -51
  361. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  362. data/lib/graphql/internal_representation/scope.rb +0 -88
  363. data/lib/graphql/internal_representation/visit.rb +0 -36
  364. data/lib/graphql/internal_representation.rb +0 -7
  365. data/lib/graphql/language/lexer.rl +0 -260
  366. data/lib/graphql/language/parser.y +0 -550
  367. data/lib/graphql/language/token.rb +0 -34
  368. data/lib/graphql/list_type.rb +0 -80
  369. data/lib/graphql/non_null_type.rb +0 -71
  370. data/lib/graphql/object_type.rb +0 -130
  371. data/lib/graphql/query/arguments.rb +0 -189
  372. data/lib/graphql/query/arguments_cache.rb +0 -24
  373. data/lib/graphql/query/executor.rb +0 -52
  374. data/lib/graphql/query/literal_input.rb +0 -136
  375. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  376. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  377. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  378. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  379. data/lib/graphql/query/serial_execution.rb +0 -40
  380. data/lib/graphql/relay/array_connection.rb +0 -83
  381. data/lib/graphql/relay/base_connection.rb +0 -189
  382. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  383. data/lib/graphql/relay/connection_resolve.rb +0 -43
  384. data/lib/graphql/relay/connection_type.rb +0 -54
  385. data/lib/graphql/relay/edge.rb +0 -27
  386. data/lib/graphql/relay/edge_type.rb +0 -19
  387. data/lib/graphql/relay/edges_instrumentation.rb +0 -39
  388. data/lib/graphql/relay/global_id_resolve.rb +0 -17
  389. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  390. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  391. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  392. data/lib/graphql/relay/mutation/result.rb +0 -38
  393. data/lib/graphql/relay/mutation.rb +0 -106
  394. data/lib/graphql/relay/node.rb +0 -39
  395. data/lib/graphql/relay/page_info.rb +0 -7
  396. data/lib/graphql/relay/relation_connection.rb +0 -188
  397. data/lib/graphql/relay/type_extensions.rb +0 -32
  398. data/lib/graphql/scalar_type.rb +0 -91
  399. data/lib/graphql/schema/base_64_bp.rb +0 -26
  400. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  401. data/lib/graphql/schema/default_parse_error.rb +0 -10
  402. data/lib/graphql/schema/default_type_error.rb +0 -17
  403. data/lib/graphql/schema/invalid_type_error.rb +0 -7
  404. data/lib/graphql/schema/member/accepts_definition.rb +0 -164
  405. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -58
  406. data/lib/graphql/schema/member/instrumentation.rb +0 -131
  407. data/lib/graphql/schema/middleware_chain.rb +0 -82
  408. data/lib/graphql/schema/null_mask.rb +0 -11
  409. data/lib/graphql/schema/possible_types.rb +0 -44
  410. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  411. data/lib/graphql/schema/timeout_middleware.rb +0 -88
  412. data/lib/graphql/schema/traversal.rb +0 -228
  413. data/lib/graphql/schema/validation.rb +0 -313
  414. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  415. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  416. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +0 -17
  417. data/lib/graphql/static_validation/type_stack.rb +0 -216
  418. data/lib/graphql/string_type.rb +0 -2
  419. data/lib/graphql/subscriptions/instrumentation.rb +0 -79
  420. data/lib/graphql/subscriptions/subscription_root.rb +0 -76
  421. data/lib/graphql/tracing/skylight_tracing.rb +0 -70
  422. data/lib/graphql/types/relay/default_relay.rb +0 -31
  423. data/lib/graphql/types/relay/node_field.rb +0 -24
  424. data/lib/graphql/types/relay/nodes_field.rb +0 -43
  425. data/lib/graphql/union_type.rb +0 -115
  426. data/lib/graphql/upgrader/member.rb +0 -937
  427. data/lib/graphql/upgrader/schema.rb +0 -38
@@ -1,1987 +1,853 @@
1
- #
2
- # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.6.0
4
- # from Racc grammar file "".
5
- #
6
-
7
- require 'racc/parser.rb'
8
-
1
+ # frozen_string_literal: true
9
2
 
3
+ require "strscan"
4
+ require "graphql/language/nodes"
5
+ require "graphql/tracing/null_trace"
10
6
 
11
7
  module GraphQL
12
8
  module Language
13
- class Parser < Racc::Parser
14
-
15
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 444)
16
-
17
- EMPTY_ARRAY = [].freeze
18
-
19
- def initialize(query_string, filename:, tracer: Tracing::NullTracer)
20
- raise GraphQL::ParseError.new("No query string was present", nil, nil, query_string) if query_string.nil?
21
- @query_string = query_string
22
- @filename = filename
23
- @tracer = tracer
24
- @reused_next_token = [nil, nil]
25
- end
26
-
27
- def parse_document
28
- @document ||= begin
29
- # Break the string into tokens
30
- @tracer.trace("lex", {query_string: @query_string}) do
31
- @tokens ||= GraphQL.scan(@query_string)
32
- end
33
- # From the tokens, build an AST
34
- @tracer.trace("parse", {query_string: @query_string}) do
35
- if @tokens.empty?
36
- raise GraphQL::ParseError.new("Unexpected end of document", nil, nil, @query_string)
37
- else
38
- do_parse
9
+ class Parser
10
+ include GraphQL::Language::Nodes
11
+ include EmptyObjects
12
+
13
+ class << self
14
+ attr_accessor :cache
15
+
16
+ def parse(graphql_str, filename: nil, trace: Tracing::NullTrace, max_tokens: nil)
17
+ self.new(graphql_str, filename: filename, trace: trace, max_tokens: max_tokens).parse
18
+ end
19
+
20
+ def parse_file(filename, trace: Tracing::NullTrace)
21
+ if cache
22
+ cache.fetch(filename) do
23
+ parse(File.read(filename), filename: filename, trace: trace)
24
+ end
25
+ else
26
+ parse(File.read(filename), filename: filename, trace: trace)
27
+ end
28
+ end
39
29
  end
40
- end
41
- end
42
- end
43
-
44
- class << self
45
- attr_accessor :cache
46
30
 
47
- def parse(query_string, filename: nil, tracer: GraphQL::Tracing::NullTracer)
48
- new(query_string, filename: filename, tracer: tracer).parse_document
49
- end
50
-
51
- def parse_file(filename, tracer: GraphQL::Tracing::NullTracer)
52
- if cache
53
- cache.fetch(filename) do
54
- parse(File.read(filename), filename: filename, tracer: tracer)
31
+ def initialize(graphql_str, filename: nil, trace: Tracing::NullTrace, max_tokens: nil)
32
+ if graphql_str.nil?
33
+ raise GraphQL::ParseError.new("No query string was present", nil, nil, nil)
34
+ end
35
+ @lexer = Lexer.new(graphql_str, filename: filename, max_tokens: max_tokens)
36
+ @graphql_str = graphql_str
37
+ @filename = filename
38
+ @trace = trace
39
+ @dedup_identifiers = false
40
+ @lines_at = nil
55
41
  end
56
- else
57
- parse(File.read(filename), filename: filename, tracer: tracer)
58
- end
59
- end
60
- end
61
-
62
- private
63
-
64
- def next_token
65
- lexer_token = @tokens.shift
66
- if lexer_token.nil?
67
- nil
68
- else
69
- @reused_next_token[0] = lexer_token.name
70
- @reused_next_token[1] = lexer_token
71
- @reused_next_token
72
- end
73
- end
74
-
75
- def get_description(token)
76
- comments = []
77
-
78
- loop do
79
- prev_token = token
80
- token = token.prev_token
81
-
82
- break if token.nil?
83
- break if token.name != :COMMENT
84
- break if prev_token.line != token.line + 1
85
42
 
86
- comments.unshift(token.to_s.sub(/^#\s*/, ""))
87
- end
88
-
89
- return nil if comments.empty?
90
-
91
- comments.join("\n")
92
- end
93
-
94
- def on_error(parser_token_id, lexer_token, vstack)
95
- if lexer_token == "$" || lexer_token == nil
96
- raise GraphQL::ParseError.new("Unexpected end of document", nil, nil, @query_string, filename: @filename)
97
- else
98
- parser_token_name = token_to_str(parser_token_id)
99
- if parser_token_name.nil?
100
- raise GraphQL::ParseError.new("Parse Error on unknown token: {token_id: #{parser_token_id}, lexer_token: #{lexer_token}} from #{@query_string}", nil, nil, @query_string, filename: @filename)
101
- else
102
- line, col = lexer_token.line_and_column
103
- if lexer_token.name == :BAD_UNICODE_ESCAPE
104
- raise GraphQL::ParseError.new("Parse error on bad Unicode escape sequence: #{lexer_token.to_s.inspect} (#{parser_token_name}) at [#{line}, #{col}]", line, col, @query_string, filename: @filename)
105
- else
106
- raise GraphQL::ParseError.new("Parse error on #{lexer_token.to_s.inspect} (#{parser_token_name}) at [#{line}, #{col}]", line, col, @query_string, filename: @filename)
43
+ def parse
44
+ @document ||= begin
45
+ @trace.parse(query_string: @graphql_str) do
46
+ document
47
+ end
48
+ rescue SystemStackError
49
+ raise GraphQL::ParseError.new("This query is too large to execute.", nil, nil, @query_str, filename: @filename)
50
+ end
107
51
  end
108
- end
109
- end
110
- end
111
-
112
- def make_node(node_name, assigns)
113
- assigns.each do |key, value|
114
- if key != :position_source && value.is_a?(GraphQL::Language::Token)
115
- assigns[key] = value.to_s
116
- end
117
- end
118
-
119
- assigns[:filename] = @filename
120
-
121
- GraphQL::Language::Nodes.const_get(node_name).new(assigns)
122
- end
123
- ...end parser.y/module_eval...
124
- ##### State transition tables begin ###
125
-
126
- racc_action_table = [
127
- -2, -168, 11, 284, 12, 13, 14, 11, -101, 12,
128
- 13, 14, 95, 267, -168, 94, 19, 38, 74, 75,
129
- 76, 19, 77, 78, 79, 80, 15, 35, 161, 121,
130
- 35, 15, 35, 12, 13, 14, 28, 35, 179, -168,
131
- 72, 28, 35, 35, 43, 44, 45, 46, 47, 48,
132
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 61,
133
- 12, 13, 14, -101, -101, -101, 182, 72, 35, 88,
134
- -154, 43, 44, 45, 46, 47, 48, 49, 50, 51,
135
- 52, 53, 54, 55, 56, 57, 91, 12, 13, 14,
136
- -101, 67, 276, 90, 277, 72, 72, 72, 43, 44,
137
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
138
- 55, 56, 57, 226, 12, 13, 14, -168, 67, -168,
139
- 282, 35, 72, 35, -101, 43, 44, 45, 46, 47,
140
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
141
- 12, 13, 14, 283, 72, 67, 35, 99, 35, 35,
142
- 72, 43, 44, 45, 46, 47, 48, 49, 50, 51,
143
- 52, 53, 54, 55, 56, 57, 222, 102, 12, 13,
144
- 14, 67, 35, 220, 298, 299, 221, 303, 304, 203,
145
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 200,
146
- 201, 202, 210, 211, 207, 208, 209, 219, 222, 72,
147
- 12, 13, 14, 35, 35, 220, 35, 35, 221, 258,
148
- 117, 203, 44, 45, 46, 47, 48, 49, 50, 51,
149
- 52, 200, 201, 202, 210, 211, 207, 208, 209, 219,
150
- 222, 72, 12, 13, 14, 121, 72, 220, 72, 132,
151
- 221, 288, 95, 203, 44, 45, 46, 47, 48, 49,
152
- 50, 51, 52, 200, 201, 202, 210, 211, 207, 208,
153
- 209, 219, 308, 139, 12, 13, 14, 175, 12, 13,
154
- 14, 72, 221, 143, 143, 203, 44, 45, 46, 47,
155
- 48, 49, 50, 51, 52, 200, 201, 202, 210, 211,
156
- 207, 208, 209, 219, 222, 72, 12, 13, 14, 72,
157
- 72, 220, 72, 143, 221, 143, 72, 203, 44, 45,
158
- 46, 47, 48, 49, 50, 51, 52, 200, 201, 202,
159
- 210, 211, 207, 208, 209, 219, 222, 72, 12, 13,
160
- 14, 72, 132, 220, 132, 95, 221, 169, 170, 203,
161
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 200,
162
- 201, 202, 210, 211, 207, 208, 209, 219, 308, 72,
163
- 12, 13, 14, 229, 12, 13, 14, 72, 221, 177,
164
- 72, 203, 44, 45, 46, 47, 48, 49, 50, 51,
165
- 52, 200, 201, 202, 210, 211, 207, 208, 209, 219,
166
- 12, 13, 14, 81, 82, 72, 83, 84, 85, 86,
167
- 87, 97, 44, 45, 46, 47, 48, 49, 50, 51,
168
- 52, 53, 54, 55, 56, 57, 261, 12, 13, 14,
169
- 72, 12, 13, 14, 12, 13, 14, 72, 43, 44,
170
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
171
- 55, 56, 57, 290, 12, 13, 14, -154, 188, 189,
172
- 190, 72, 72, 193, 194, 43, 44, 45, 46, 47,
173
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
174
- 294, 12, 13, 14, 195, 196, 198, 72, 224, 132,
175
- 132, 233, 43, 44, 45, 46, 47, 48, 49, 50,
176
- 51, 52, 53, 54, 55, 56, 57, 316, 12, 13,
177
- 14, 236, 238, 35, 35, 247, 248, 35, 35, 43,
178
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
179
- 54, 55, 56, 57, 12, 13, 14, 35, 254, 132,
180
- 236, 273, 273, 285, 287, 43, 44, 45, 46, 47,
181
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
182
- 12, 13, 14, 293, 196, 72, 302, 309, 312, 313,
183
- 315, 287, 44, 45, 46, 47, 48, 49, 50, 51,
184
- 52, 53, 54, 55, 56, 57, 12, 13, 14, 72,
185
- 72, nil, nil, nil, nil, nil, nil, 43, 44, 45,
186
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
187
- 56, 57, 12, 13, 14, nil, nil, nil, nil, nil,
188
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
189
- 50, 51, 52, 53, 54, 55, 56, 57, 12, 13,
190
- 14, nil, nil, nil, nil, nil, nil, nil, nil, 43,
191
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
192
- 54, 55, 56, 57, 12, 13, 14, nil, nil, nil,
193
- nil, nil, nil, nil, nil, 43, 44, 45, 46, 47,
194
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
195
- 12, 13, 14, nil, nil, nil, nil, nil, nil, nil,
196
- nil, 43, 44, 45, 46, 47, 48, 49, 50, 51,
197
- 52, 53, 54, 55, 56, 57, 12, 13, 14, nil,
198
- nil, nil, nil, nil, nil, nil, nil, 43, 44, 45,
199
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
200
- 56, 57, 12, 13, 14, nil, nil, nil, nil, nil,
201
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
202
- 50, 51, 52, 53, 54, 55, 56, 57, 12, 13,
203
- 14, nil, nil, nil, nil, nil, nil, nil, nil, 43,
204
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
205
- 54, 55, 56, 57, 12, 13, 14, nil, nil, nil,
206
- nil, nil, nil, nil, nil, 43, 44, 45, 46, 47,
207
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
208
- 12, 13, 14, nil, nil, nil, nil, nil, nil, nil,
209
- nil, 43, 44, 45, 46, 47, 48, 49, 50, 51,
210
- 52, 53, 54, 55, 56, 57, 12, 13, 14, nil,
211
- nil, nil, nil, nil, nil, nil, nil, 43, 44, 45,
212
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
213
- 56, 57, 12, 13, 14, nil, nil, nil, nil, nil,
214
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
215
- 50, 51, 52, 53, 54, 55, 56, 57, 12, 13,
216
- 14, nil, nil, nil, nil, nil, nil, nil, nil, 43,
217
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
218
- 54, 55, 56, 57, 12, 13, 14, nil, nil, nil,
219
- nil, nil, nil, nil, nil, 43, 44, 45, 46, 47,
220
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
221
- 12, 13, 14, nil, nil, nil, nil, nil, nil, nil,
222
- nil, 43, 44, 45, 46, 47, 48, 49, 50, 51,
223
- 52, 53, 54, 55, 56, 57, 12, 13, 14, nil,
224
- nil, nil, nil, nil, 130, nil, nil, 43, 44, 45,
225
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
226
- 56, 57, 12, 13, 14, nil, nil, nil, nil, nil,
227
- 130, nil, nil, 43, 44, 45, 46, 47, 48, 49,
228
- 50, 51, 52, 53, 54, 55, 56, 57, 12, 13,
229
- 14, nil, nil, nil, nil, nil, nil, nil, nil, 43,
230
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
231
- 54, 55, 56, 57, 12, 13, 14, nil, nil, nil,
232
- nil, nil, nil, nil, nil, 43, 44, 45, 46, 47,
233
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
234
- 12, 13, 14, nil, 167, nil, nil, nil, nil, nil,
235
- nil, 43, 44, 45, 46, 47, 48, 49, 50, 51,
236
- 52, 53, 54, 55, 56, 57, 12, 13, 14, nil,
237
- nil, nil, nil, nil, 130, nil, nil, 43, 44, 45,
238
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
239
- 56, 57, 12, 13, 14, nil, nil, nil, nil, nil,
240
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
241
- 50, 51, 52, 53, 54, 55, 56, 57, 12, 13,
242
- 14, nil, nil, nil, nil, nil, nil, nil, nil, 43,
243
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
244
- 54, 55, 56, 57, 12, 13, 14, nil, nil, nil,
245
- nil, nil, nil, nil, nil, 43, 44, 45, 46, 47,
246
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
247
- 12, 13, 14, nil, nil, nil, nil, nil, nil, nil,
248
- nil, 43, 44, 45, 46, 47, 48, 49, 50, 51,
249
- 52, 53, 54, 55, 56, 57, 12, 13, 14, nil,
250
- nil, nil, nil, nil, nil, nil, nil, 43, 44, 45,
251
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
252
- 56, 57, 12, 13, 14, nil, nil, nil, nil, nil,
253
- 130, nil, nil, 43, 44, 45, 46, 47, 48, 49,
254
- 50, 51, 52, 53, 54, 55, 56, 57, 12, 13,
255
- 14, nil, nil, nil, nil, nil, nil, nil, nil, 43,
256
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
257
- 54, 55, 56, 57, 12, 13, 14, nil, nil, nil,
258
- nil, nil, nil, nil, nil, 43, 44, 45, 46, 47,
259
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
260
- 12, 13, 14, nil, nil, nil, nil, nil, nil, nil,
261
- nil, 43, 44, 45, 46, 47, 48, 49, 50, 51,
262
- 52, 53, 54, 55, 56, 57, 12, 13, 14, nil,
263
- nil, nil, nil, nil, nil, nil, nil, 43, 44, 45,
264
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
265
- 56, 57, 12, 13, 14, nil, nil, nil, nil, nil,
266
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
267
- 50, 51, 52, 53, 54, 55, 56, 57, 12, 13,
268
- 14, nil, nil, nil, nil, nil, nil, nil, nil, 43,
269
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
270
- 54, 55, 56, 57, 12, 13, 14, nil, nil, nil,
271
- nil, nil, 130, nil, nil, 43, 44, 45, 46, 47,
272
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
273
- 12, 13, 14, nil, nil, nil, nil, nil, 130, nil,
274
- nil, 43, 44, 45, 46, 47, 48, 49, 50, 51,
275
- 52, 53, 54, 55, 56, 57, 12, 13, 14, nil,
276
- nil, nil, nil, nil, nil, nil, nil, 43, 44, 45,
277
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
278
- 56, 57, 12, 13, 14, nil, nil, nil, nil, nil,
279
- nil, nil, nil, 203, 44, 45, 46, 47, 48, 49,
280
- 50, 51, 52, 200, 201, 202, -160, nil, nil, nil,
281
- -160, nil, nil, nil, nil, nil, -160, nil, -160, -160,
282
- -160 ]
283
-
284
- racc_action_check = [
285
- 3, 179, 3, 252, 3, 3, 3, 0, 103, 0,
286
- 0, 0, 66, 230, 233, 66, 3, 1, 28, 28,
287
- 28, 0, 28, 28, 28, 28, 3, 252, 119, 119,
288
- 179, 0, 3, 143, 143, 143, 3, 0, 141, 238,
289
- 103, 0, 230, 233, 143, 143, 143, 143, 143, 143,
290
- 143, 143, 143, 143, 143, 143, 143, 143, 143, 11,
291
- 11, 11, 11, 148, 150, 180, 143, 19, 238, 38,
292
- 141, 11, 11, 11, 11, 11, 11, 11, 11, 11,
293
- 11, 11, 11, 11, 11, 11, 60, 60, 60, 60,
294
- 186, 11, 243, 40, 244, 148, 150, 180, 60, 60,
295
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
296
- 60, 60, 60, 173, 173, 173, 173, 247, 60, 248,
297
- 250, 243, 186, 244, 146, 173, 173, 173, 173, 173,
298
- 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
299
- 132, 132, 132, 251, 146, 173, 247, 68, 248, 250,
300
- 70, 132, 132, 132, 132, 132, 132, 132, 132, 132,
301
- 132, 132, 132, 132, 132, 132, 169, 73, 169, 169,
302
- 169, 132, 251, 169, 270, 272, 169, 280, 281, 169,
303
- 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
304
- 169, 169, 169, 169, 169, 169, 169, 169, 221, 74,
305
- 221, 221, 221, 270, 272, 221, 280, 281, 221, 221,
306
- 87, 221, 221, 221, 221, 221, 221, 221, 221, 221,
307
- 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
308
- 259, 89, 259, 259, 259, 90, 93, 259, 96, 98,
309
- 259, 259, 101, 259, 259, 259, 259, 259, 259, 259,
310
- 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
311
- 259, 259, 287, 104, 287, 287, 287, 136, 136, 136,
312
- 136, 105, 287, 106, 107, 287, 287, 287, 287, 287,
313
- 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
314
- 287, 287, 287, 287, 293, 108, 293, 293, 293, 109,
315
- 110, 293, 111, 112, 293, 113, 114, 293, 293, 293,
316
- 293, 293, 293, 293, 293, 293, 293, 293, 293, 293,
317
- 293, 293, 293, 293, 293, 293, 309, 115, 309, 309,
318
- 309, 116, 118, 309, 122, 123, 309, 126, 128, 309,
319
- 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
320
- 309, 309, 309, 309, 309, 309, 309, 309, 312, 131,
321
- 312, 312, 312, 178, 178, 178, 178, 134, 312, 138,
322
- 140, 312, 312, 312, 312, 312, 312, 312, 312, 312,
323
- 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
324
- 67, 67, 67, 37, 37, 142, 37, 37, 37, 37,
325
- 37, 67, 67, 67, 67, 67, 67, 67, 67, 67,
326
- 67, 67, 67, 67, 67, 67, 222, 222, 222, 222,
327
- 67, 102, 102, 102, 139, 139, 139, 144, 222, 222,
328
- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
329
- 222, 222, 222, 262, 262, 262, 262, 145, 147, 149,
330
- 151, 153, 155, 156, 157, 262, 262, 262, 262, 262,
331
- 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
332
- 265, 265, 265, 265, 158, 159, 163, 166, 171, 172,
333
- 174, 181, 265, 265, 265, 265, 265, 265, 265, 265,
334
- 265, 265, 265, 265, 265, 265, 265, 308, 308, 308,
335
- 308, 183, 187, 189, 190, 191, 192, 194, 195, 308,
336
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
337
- 308, 308, 308, 308, 10, 10, 10, 196, 197, 199,
338
- 234, 239, 249, 253, 255, 10, 10, 10, 10, 10,
339
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
340
- 15, 15, 15, 264, 269, 274, 279, 292, 296, 297,
341
- 305, 314, 15, 15, 15, 15, 15, 15, 15, 15,
342
- 15, 15, 15, 15, 15, 15, 72, 72, 72, 318,
343
- 319, nil, nil, nil, nil, nil, nil, 72, 72, 72,
344
- 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
345
- 72, 72, 75, 75, 75, nil, nil, nil, nil, nil,
346
- nil, nil, nil, 75, 75, 75, 75, 75, 75, 75,
347
- 75, 75, 75, 75, 75, 75, 75, 75, 76, 76,
348
- 76, nil, nil, nil, nil, nil, nil, nil, nil, 76,
349
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
350
- 76, 76, 76, 76, 77, 77, 77, nil, nil, nil,
351
- nil, nil, nil, nil, nil, 77, 77, 77, 77, 77,
352
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
353
- 78, 78, 78, nil, nil, nil, nil, nil, nil, nil,
354
- nil, 78, 78, 78, 78, 78, 78, 78, 78, 78,
355
- 78, 78, 78, 78, 78, 78, 79, 79, 79, nil,
356
- nil, nil, nil, nil, nil, nil, nil, 79, 79, 79,
357
- 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
358
- 79, 79, 80, 80, 80, nil, nil, nil, nil, nil,
359
- nil, nil, nil, 80, 80, 80, 80, 80, 80, 80,
360
- 80, 80, 80, 80, 80, 80, 80, 80, 81, 81,
361
- 81, nil, nil, nil, nil, nil, nil, nil, nil, 81,
362
- 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
363
- 81, 81, 81, 81, 82, 82, 82, nil, nil, nil,
364
- nil, nil, nil, nil, nil, 82, 82, 82, 82, 82,
365
- 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
366
- 83, 83, 83, nil, nil, nil, nil, nil, nil, nil,
367
- nil, 83, 83, 83, 83, 83, 83, 83, 83, 83,
368
- 83, 83, 83, 83, 83, 83, 84, 84, 84, nil,
369
- nil, nil, nil, nil, nil, nil, nil, 84, 84, 84,
370
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
371
- 84, 84, 85, 85, 85, nil, nil, nil, nil, nil,
372
- nil, nil, nil, 85, 85, 85, 85, 85, 85, 85,
373
- 85, 85, 85, 85, 85, 85, 85, 85, 86, 86,
374
- 86, nil, nil, nil, nil, nil, nil, nil, nil, 86,
375
- 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
376
- 86, 86, 86, 86, 94, 94, 94, nil, nil, nil,
377
- nil, nil, nil, nil, nil, 94, 94, 94, 94, 94,
378
- 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
379
- 95, 95, 95, nil, nil, nil, nil, nil, nil, nil,
380
- nil, 95, 95, 95, 95, 95, 95, 95, 95, 95,
381
- 95, 95, 95, 95, 95, 95, 97, 97, 97, nil,
382
- nil, nil, nil, nil, 97, nil, nil, 97, 97, 97,
383
- 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
384
- 97, 97, 99, 99, 99, nil, nil, nil, nil, nil,
385
- 99, nil, nil, 99, 99, 99, 99, 99, 99, 99,
386
- 99, 99, 99, 99, 99, 99, 99, 99, 117, 117,
387
- 117, nil, nil, nil, nil, nil, nil, nil, nil, 117,
388
- 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
389
- 117, 117, 117, 117, 121, 121, 121, nil, nil, nil,
390
- nil, nil, nil, nil, nil, 121, 121, 121, 121, 121,
391
- 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
392
- 124, 124, 124, nil, 124, nil, nil, nil, nil, nil,
393
- nil, 124, 124, 124, 124, 124, 124, 124, 124, 124,
394
- 124, 124, 124, 124, 124, 124, 130, 130, 130, nil,
395
- nil, nil, nil, nil, 130, nil, nil, 130, 130, 130,
396
- 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
397
- 130, 130, 177, 177, 177, nil, nil, nil, nil, nil,
398
- nil, nil, nil, 177, 177, 177, 177, 177, 177, 177,
399
- 177, 177, 177, 177, 177, 177, 177, 177, 182, 182,
400
- 182, nil, nil, nil, nil, nil, nil, nil, nil, 182,
401
- 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
402
- 182, 182, 182, 182, 184, 184, 184, nil, nil, nil,
403
- nil, nil, nil, nil, nil, 184, 184, 184, 184, 184,
404
- 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
405
- 188, 188, 188, nil, nil, nil, nil, nil, nil, nil,
406
- nil, 188, 188, 188, 188, 188, 188, 188, 188, 188,
407
- 188, 188, 188, 188, 188, 188, 193, 193, 193, nil,
408
- nil, nil, nil, nil, nil, nil, nil, 193, 193, 193,
409
- 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
410
- 193, 193, 198, 198, 198, nil, nil, nil, nil, nil,
411
- 198, nil, nil, 198, 198, 198, 198, 198, 198, 198,
412
- 198, 198, 198, 198, 198, 198, 198, 198, 220, 220,
413
- 220, nil, nil, nil, nil, nil, nil, nil, nil, 220,
414
- 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
415
- 220, 220, 220, 220, 231, 231, 231, nil, nil, nil,
416
- nil, nil, nil, nil, nil, 231, 231, 231, 231, 231,
417
- 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
418
- 236, 236, 236, nil, nil, nil, nil, nil, nil, nil,
419
- nil, 236, 236, 236, 236, 236, 236, 236, 236, 236,
420
- 236, 236, 236, 236, 236, 236, 245, 245, 245, nil,
421
- nil, nil, nil, nil, nil, nil, nil, 245, 245, 245,
422
- 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
423
- 245, 245, 273, 273, 273, nil, nil, nil, nil, nil,
424
- nil, nil, nil, 273, 273, 273, 273, 273, 273, 273,
425
- 273, 273, 273, 273, 273, 273, 273, 273, 285, 285,
426
- 285, nil, nil, nil, nil, nil, nil, nil, nil, 285,
427
- 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
428
- 285, 285, 285, 285, 302, 302, 302, nil, nil, nil,
429
- nil, nil, 302, nil, nil, 302, 302, 302, 302, 302,
430
- 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
431
- 313, 313, 313, nil, nil, nil, nil, nil, 313, nil,
432
- nil, 313, 313, 313, 313, 313, 313, 313, 313, 313,
433
- 313, 313, 313, 313, 313, 313, 315, 315, 315, nil,
434
- nil, nil, nil, nil, nil, nil, nil, 315, 315, 315,
435
- 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
436
- 315, 315, 241, 241, 241, nil, nil, nil, nil, nil,
437
- nil, nil, nil, 241, 241, 241, 241, 241, 241, 241,
438
- 241, 241, 241, 241, 241, 241, 185, nil, nil, nil,
439
- 185, nil, nil, nil, nil, nil, 185, nil, 185, 185,
440
- 185 ]
441
-
442
- racc_action_pointer = [
443
- 5, 17, nil, 0, nil, nil, nil, nil, nil, nil,
444
- 520, 56, nil, nil, nil, 546, nil, nil, nil, 33,
445
- nil, nil, nil, nil, nil, nil, nil, nil, 2, nil,
446
- nil, nil, nil, nil, nil, nil, nil, 376, 69, nil,
447
- 86, nil, nil, nil, nil, nil, nil, nil, nil, nil,
448
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
449
- 83, nil, nil, nil, nil, nil, 5, 386, 132, nil,
450
- 116, nil, 572, 165, 165, 598, 624, 650, 676, 702,
451
- 728, 754, 780, 806, 832, 858, 884, 176, nil, 197,
452
- 226, nil, nil, 202, 910, 936, 204, 962, 237, 988,
453
- nil, 235, 417, 6, 261, 237, 254, 255, 261, 265,
454
- 266, 268, 284, 286, 272, 293, 297, 1014, 330, 20,
455
- nil, 1040, 332, 328, 1066, nil, 327, nil, 327, nil,
456
- 1092, 325, 136, nil, 333, nil, 264, nil, 359, 420,
457
- 336, 36, 361, 29, 393, 413, 110, 434, 61, 447,
458
- 62, 448, nil, 417, nil, 418, 439, 452, 472, 468,
459
- nil, nil, nil, 466, nil, nil, 443, nil, nil, 164,
460
- nil, 465, 477, 110, 478, nil, nil, 1118, 360, -2,
461
- 63, 479, 1144, 464, 1170, 1521, 88, 500, 1196, 471,
462
- 472, 503, 504, 1222, 475, 476, 495, 501, 1248, 527,
463
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
464
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
465
- 1274, 196, 413, nil, nil, nil, nil, nil, nil, nil,
466
- 10, 1300, nil, 11, 493, nil, 1326, nil, 36, 493,
467
- nil, 1508, nil, 89, 91, 1352, nil, 114, 116, 494,
468
- 117, 140, -5, 518, nil, 520, nil, nil, nil, 228,
469
- nil, nil, 440, nil, 543, 467, nil, nil, nil, 547,
470
- 171, nil, 172, 1378, 521, nil, nil, nil, nil, 546,
471
- 174, 175, nil, nil, nil, 1404, nil, 260, nil, nil,
472
- nil, nil, 547, 292, nil, nil, 548, 549, nil, nil,
473
- nil, nil, 1430, nil, nil, 522, nil, nil, 494, 324,
474
- nil, nil, 356, 1456, 547, 1482, nil, nil, 545, 546,
475
- nil, nil, nil ]
476
-
477
- racc_action_default = [
478
- -149, -182, -1, -149, -3, -5, -6, -7, -8, -9,
479
- -16, -182, -13, -14, -15, -109, -111, -112, -113, -100,
480
- -118, -119, -120, -121, -122, -123, -124, -125, -182, -128,
481
- -129, -130, -131, -132, -133, -148, -150, -182, -182, -4,
482
- -18, -17, -39, -40, -41, -42, -43, -44, -45, -46,
483
- -47, -48, -49, -50, -51, -52, -53, -54, -55, -56,
484
- -182, -12, -32, -34, -35, -36, -66, -100, -182, -110,
485
- -101, -102, -182, -182, -100, -182, -182, -182, -182, -182,
486
- -182, -182, -182, -182, -182, -182, -182, -182, 323, -100,
487
- -182, -11, -33, -100, -182, -182, -100, -182, -182, -182,
488
- -103, -66, -182, -127, -182, -182, -153, -153, -100, -100,
489
- -100, -100, -153, -153, -100, -100, -100, -182, -182, -182,
490
- -20, -182, -30, -66, -182, -68, -182, -105, -23, -25,
491
- -182, -100, -182, -107, -100, -104, -182, -115, -182, -182,
492
- -134, -138, -100, -182, -100, -141, -143, -182, -145, -182,
493
- -147, -182, -151, -100, -154, -100, -182, -182, -182, -165,
494
- -10, -19, -21, -182, -31, -37, -100, -67, -69, -182,
495
- -24, -182, -182, -182, -182, -114, -116, -182, -182, -149,
496
- -137, -182, -182, -156, -157, -158, -140, -182, -182, -149,
497
- -149, -182, -182, -182, -149, -149, -149, -178, -182, -30,
498
- -57, -58, -59, -60, -61, -62, -70, -71, -72, -73,
499
- -74, -75, -76, -77, -78, -79, -80, -81, -82, -83,
500
- -182, -182, -182, -99, -26, -106, -29, -108, -117, -126,
501
- -149, -182, -169, -149, -155, -158, -182, -161, -149, -142,
502
- -172, -182, -64, -149, -149, -182, -163, -149, -149, -174,
503
- -149, -149, -149, -182, -179, -27, -38, -84, -85, -182,
504
- -87, -89, -182, -91, -182, -182, -96, -135, -170, -165,
505
- -149, -159, -149, -182, -100, -65, -144, -146, -164, -182,
506
- -149, -149, -175, -176, -166, -182, -22, -182, -86, -88,
507
- -90, -92, -182, -182, -95, -97, -182, -182, -136, -139,
508
- -173, -63, -182, -152, -171, -177, -180, -28, -182, -182,
509
- -80, -93, -182, -182, -27, -182, -94, -98, -100, -100,
510
- -181, -167, -162 ]
511
-
512
- racc_goto_table = [
513
- 10, 41, 66, 10, 131, 92, 134, 197, 60, 206,
514
- 103, 37, 165, 69, 37, 176, 263, 136, 133, 183,
515
- 286, 120, 307, 125, 93, 278, 4, 275, 310, 39,
516
- 243, 205, 278, 278, 275, 250, 73, 171, 160, 141,
517
- 145, 140, 142, 144, 146, 148, 150, 317, 153, 155,
518
- 162, 66, 168, 1, 178, 239, 291, 176, 234, 135,
519
- 249, 260, 2, 101, 3, 96, 105, 106, 107, 108,
520
- 109, 110, 111, 112, 113, 114, 115, 116, 180, 319,
521
- 186, 166, 40, 205, 98, 123, 126, 100, 89, 256,
522
- 119, 104, 225, 274, 227, 268, 124, 259, 262, 289,
523
- 295, 68, 138, 205, 184, 255, 118, 253, 159, 305,
524
- 122, nil, 163, 127, nil, 126, nil, 297, 92, nil,
525
- 100, 205, 230, 66, nil, 147, 149, 151, 152, 173,
526
- nil, 156, 157, 158, 185, 268, 138, 268, 244, 138,
527
- nil, nil, nil, 251, 252, 268, 268, nil, 172, 205,
528
- nil, 174, nil, nil, nil, 205, nil, 100, nil, 181,
529
- nil, 187, nil, 100, 66, 100, nil, 100, 228, 204,
530
- 191, 205, 192, 235, 205, 237, 270, nil, 138, 240,
531
- nil, 272, nil, 199, 240, nil, nil, nil, nil, nil,
532
- 280, 281, nil, nil, nil, nil, nil, 100, nil, nil,
533
- 241, 245, nil, 100, nil, 241, 245, 245, nil, 314,
534
- nil, 257, nil, 264, nil, nil, nil, nil, nil, nil,
535
- 318, 204, 269, nil, nil, nil, nil, 271, nil, nil,
536
- nil, nil, nil, nil, nil, nil, 279, nil, nil, nil,
537
- nil, 204, nil, nil, nil, nil, nil, nil, nil, nil,
538
- nil, nil, nil, 292, 241, 245, 296, nil, nil, 204,
539
- nil, 241, 245, 245, 300, nil, nil, nil, nil, nil,
540
- nil, nil, nil, nil, nil, nil, 306, nil, nil, nil,
541
- nil, nil, nil, nil, nil, nil, nil, 204, nil, nil,
542
- nil, 301, nil, 204, nil, nil, nil, nil, nil, 296,
543
- nil, nil, nil, nil, nil, nil, 320, nil, nil, 204,
544
- nil, nil, 204, nil, nil, nil, nil, nil, nil, nil,
545
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
546
- nil, nil, nil, nil, nil, 321, 322 ]
547
-
548
- racc_goto_check = [
549
- 10, 16, 16, 10, 19, 24, 19, 80, 15, 37,
550
- 49, 33, 23, 29, 33, 56, 46, 55, 14, 77,
551
- 20, 18, 22, 36, 28, 79, 4, 32, 22, 4,
552
- 34, 30, 79, 79, 32, 34, 13, 19, 14, 71,
553
- 71, 49, 73, 73, 49, 49, 49, 22, 73, 73,
554
- 18, 16, 36, 1, 55, 74, 46, 56, 77, 28,
555
- 74, 37, 2, 16, 3, 29, 16, 16, 16, 16,
556
- 16, 16, 16, 16, 16, 16, 16, 16, 49, 20,
557
- 49, 28, 11, 30, 13, 16, 16, 50, 12, 23,
558
- 17, 13, 14, 31, 14, 81, 35, 44, 45, 37,
559
- 48, 51, 10, 30, 78, 19, 13, 82, 16, 83,
560
- 13, nil, 16, 13, nil, 16, nil, 80, 24, nil,
561
- 50, 30, 72, 16, nil, 13, 13, 13, 13, 15,
562
- nil, 13, 13, 13, 16, 81, 10, 81, 75, 10,
563
- nil, nil, nil, 75, 75, 81, 81, nil, 13, 30,
564
- nil, 13, nil, nil, nil, 30, nil, 50, nil, 13,
565
- nil, 13, nil, 50, 16, 50, nil, 50, 16, 10,
566
- 13, 30, 13, 16, 30, 16, 72, nil, 10, 16,
567
- nil, 72, nil, 13, 16, nil, nil, nil, nil, nil,
568
- 72, 72, nil, nil, nil, nil, nil, 50, nil, nil,
569
- 33, 33, nil, 50, nil, 33, 33, 33, nil, 19,
570
- nil, 16, nil, 16, nil, nil, nil, nil, nil, nil,
571
- 19, 10, 16, nil, nil, nil, nil, 16, nil, nil,
572
- nil, nil, nil, nil, nil, nil, 16, nil, nil, nil,
573
- nil, 10, nil, nil, nil, nil, nil, nil, nil, nil,
574
- nil, nil, nil, 16, 33, 33, 16, nil, nil, 10,
575
- nil, 33, 33, 33, 16, nil, nil, nil, nil, nil,
576
- nil, nil, nil, nil, nil, nil, 16, nil, nil, nil,
577
- nil, nil, nil, nil, nil, nil, nil, 10, nil, nil,
578
- nil, 13, nil, 10, nil, nil, nil, nil, nil, 16,
579
- nil, nil, nil, nil, nil, nil, 16, nil, nil, 10,
580
- nil, nil, 10, nil, nil, nil, nil, nil, nil, nil,
581
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
582
- nil, nil, nil, nil, nil, 13, 13 ]
583
-
584
- racc_goto_pointer = [
585
- nil, 53, 62, 64, 26, nil, nil, nil, nil, nil,
586
- 0, 72, 48, 17, -80, -3, -9, 0, -69, -93,
587
- -235, nil, -265, -110, -55, nil, nil, nil, -42, -2,
588
- -138, -148, -216, 11, -159, 1, -72, -160, nil, nil,
589
- nil, nil, nil, nil, -124, -124, -206, nil, -165, -64,
590
- 17, 86, nil, nil, nil, -85, -121, nil, nil, nil,
591
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
592
- nil, -67, -57, -64, -133, -52, nil, -124, -39, -219,
593
- -152, -135, -90, -176 ]
594
-
595
- racc_goto_default = [
596
- nil, nil, nil, nil, nil, 5, 6, 7, 8, 9,
597
- 58, nil, nil, nil, 164, nil, 129, nil, nil, nil,
598
- nil, 128, 216, nil, 62, 63, 64, 65, nil, 42,
599
- 59, 223, 242, 231, nil, nil, nil, 311, 212, 213,
600
- 214, 215, 217, 218, nil, nil, nil, 265, 266, 70,
601
- 71, nil, 16, 17, 18, nil, 137, 20, 21, 22,
602
- 23, 24, 25, 26, 27, 29, 30, 31, 32, 33,
603
- 34, 154, nil, nil, nil, nil, 36, nil, nil, 246,
604
- nil, 232, nil, nil ]
605
-
606
- racc_reduce_table = [
607
- 0, 0, :racc_error,
608
- 1, 40, :_reduce_none,
609
- 1, 41, :_reduce_2,
610
- 1, 42, :_reduce_3,
611
- 2, 42, :_reduce_4,
612
- 1, 43, :_reduce_none,
613
- 1, 43, :_reduce_none,
614
- 1, 43, :_reduce_none,
615
- 1, 44, :_reduce_none,
616
- 1, 44, :_reduce_none,
617
- 5, 47, :_reduce_10,
618
- 3, 47, :_reduce_11,
619
- 2, 47, :_reduce_12,
620
- 1, 49, :_reduce_none,
621
- 1, 49, :_reduce_none,
622
- 1, 49, :_reduce_none,
623
- 0, 50, :_reduce_16,
624
- 1, 50, :_reduce_none,
625
- 0, 51, :_reduce_18,
626
- 3, 51, :_reduce_19,
627
- 1, 56, :_reduce_20,
628
- 2, 56, :_reduce_21,
629
- 5, 57, :_reduce_22,
630
- 1, 58, :_reduce_23,
631
- 2, 58, :_reduce_24,
632
- 1, 60, :_reduce_25,
633
- 3, 60, :_reduce_26,
634
- 0, 59, :_reduce_27,
635
- 2, 59, :_reduce_28,
636
- 3, 53, :_reduce_29,
637
- 0, 62, :_reduce_30,
638
- 1, 62, :_reduce_31,
639
- 1, 54, :_reduce_32,
640
- 2, 54, :_reduce_33,
641
- 1, 63, :_reduce_none,
642
- 1, 63, :_reduce_none,
643
- 1, 63, :_reduce_none,
644
- 4, 64, :_reduce_37,
645
- 6, 64, :_reduce_38,
646
- 1, 55, :_reduce_none,
647
- 1, 55, :_reduce_none,
648
- 1, 69, :_reduce_none,
649
- 1, 69, :_reduce_none,
650
- 1, 69, :_reduce_none,
651
- 1, 69, :_reduce_none,
652
- 1, 69, :_reduce_none,
653
- 1, 69, :_reduce_none,
654
- 1, 69, :_reduce_none,
655
- 1, 69, :_reduce_none,
656
- 1, 69, :_reduce_none,
657
- 1, 68, :_reduce_none,
658
- 1, 68, :_reduce_none,
659
- 1, 68, :_reduce_none,
660
- 1, 68, :_reduce_none,
661
- 1, 68, :_reduce_none,
662
- 1, 68, :_reduce_none,
663
- 1, 68, :_reduce_none,
664
- 1, 70, :_reduce_none,
665
- 1, 70, :_reduce_none,
666
- 1, 70, :_reduce_none,
667
- 1, 70, :_reduce_none,
668
- 1, 70, :_reduce_none,
669
- 1, 70, :_reduce_none,
670
- 3, 71, :_reduce_63,
671
- 1, 73, :_reduce_64,
672
- 2, 73, :_reduce_65,
673
- 0, 67, :_reduce_66,
674
- 3, 67, :_reduce_67,
675
- 1, 74, :_reduce_68,
676
- 2, 74, :_reduce_69,
677
- 3, 75, :_reduce_70,
678
- 1, 61, :_reduce_71,
679
- 1, 61, :_reduce_72,
680
- 1, 61, :_reduce_73,
681
- 1, 61, :_reduce_74,
682
- 1, 61, :_reduce_75,
683
- 1, 61, :_reduce_none,
684
- 1, 61, :_reduce_none,
685
- 1, 61, :_reduce_none,
686
- 1, 61, :_reduce_none,
687
- 1, 76, :_reduce_none,
688
- 1, 76, :_reduce_none,
689
- 1, 76, :_reduce_none,
690
- 1, 77, :_reduce_83,
691
- 2, 81, :_reduce_84,
692
- 2, 79, :_reduce_85,
693
- 3, 79, :_reduce_86,
694
- 1, 83, :_reduce_87,
695
- 2, 83, :_reduce_88,
696
- 2, 82, :_reduce_89,
697
- 3, 82, :_reduce_90,
698
- 1, 84, :_reduce_91,
699
- 2, 84, :_reduce_92,
700
- 3, 85, :_reduce_93,
701
- 2, 80, :_reduce_94,
702
- 3, 80, :_reduce_95,
703
- 1, 86, :_reduce_96,
704
- 2, 86, :_reduce_97,
705
- 3, 87, :_reduce_98,
706
- 1, 78, :_reduce_99,
707
- 0, 52, :_reduce_100,
708
- 1, 52, :_reduce_none,
709
- 1, 88, :_reduce_102,
710
- 2, 88, :_reduce_103,
711
- 3, 89, :_reduce_104,
712
- 3, 65, :_reduce_105,
713
- 5, 66, :_reduce_106,
714
- 3, 66, :_reduce_107,
715
- 6, 48, :_reduce_108,
716
- 0, 90, :_reduce_109,
717
- 1, 90, :_reduce_none,
718
- 1, 45, :_reduce_none,
719
- 1, 45, :_reduce_none,
720
- 1, 45, :_reduce_none,
721
- 5, 91, :_reduce_114,
722
- 1, 94, :_reduce_none,
723
- 2, 94, :_reduce_116,
724
- 3, 95, :_reduce_117,
725
- 1, 92, :_reduce_none,
726
- 1, 92, :_reduce_none,
727
- 1, 92, :_reduce_none,
728
- 1, 92, :_reduce_none,
729
- 1, 92, :_reduce_none,
730
- 1, 92, :_reduce_none,
731
- 1, 46, :_reduce_none,
732
- 1, 46, :_reduce_none,
733
- 6, 102, :_reduce_126,
734
- 3, 102, :_reduce_127,
735
- 1, 103, :_reduce_none,
736
- 1, 103, :_reduce_none,
737
- 1, 103, :_reduce_none,
738
- 1, 103, :_reduce_none,
739
- 1, 103, :_reduce_none,
740
- 1, 103, :_reduce_none,
741
- 4, 104, :_reduce_134,
742
- 7, 105, :_reduce_135,
743
- 8, 105, :_reduce_136,
744
- 5, 105, :_reduce_137,
745
- 4, 105, :_reduce_138,
746
- 8, 106, :_reduce_139,
747
- 5, 106, :_reduce_140,
748
- 4, 106, :_reduce_141,
749
- 6, 107, :_reduce_142,
750
- 4, 107, :_reduce_143,
751
- 7, 108, :_reduce_144,
752
- 4, 108, :_reduce_145,
753
- 7, 109, :_reduce_146,
754
- 4, 109, :_reduce_147,
755
- 1, 115, :_reduce_none,
756
- 0, 72, :_reduce_none,
757
- 1, 72, :_reduce_none,
758
- 4, 96, :_reduce_151,
759
- 8, 97, :_reduce_152,
760
- 0, 112, :_reduce_153,
761
- 1, 112, :_reduce_none,
762
- 3, 110, :_reduce_155,
763
- 2, 110, :_reduce_156,
764
- 2, 110, :_reduce_157,
765
- 1, 116, :_reduce_158,
766
- 3, 116, :_reduce_159,
767
- 1, 117, :_reduce_160,
768
- 2, 117, :_reduce_161,
769
- 6, 118, :_reduce_162,
770
- 1, 114, :_reduce_163,
771
- 2, 114, :_reduce_164,
772
- 0, 119, :_reduce_165,
773
- 3, 119, :_reduce_166,
774
- 6, 120, :_reduce_167,
775
- 0, 111, :_reduce_168,
776
- 1, 111, :_reduce_169,
777
- 2, 111, :_reduce_170,
778
- 8, 98, :_reduce_171,
779
- 1, 113, :_reduce_172,
780
- 3, 113, :_reduce_173,
781
- 6, 99, :_reduce_174,
782
- 7, 100, :_reduce_175,
783
- 7, 101, :_reduce_176,
784
- 8, 93, :_reduce_177,
785
- 0, 121, :_reduce_none,
786
- 1, 121, :_reduce_none,
787
- 1, 122, :_reduce_180,
788
- 3, 122, :_reduce_181 ]
789
52
 
790
- racc_reduce_n = 182
791
-
792
- racc_shift_n = 323
793
-
794
- racc_token_table = {
795
- false => 0,
796
- :error => 1,
797
- :LCURLY => 2,
798
- :RCURLY => 3,
799
- :QUERY => 4,
800
- :MUTATION => 5,
801
- :SUBSCRIPTION => 6,
802
- :LPAREN => 7,
803
- :RPAREN => 8,
804
- :VAR_SIGN => 9,
805
- :COLON => 10,
806
- :BANG => 11,
807
- :LBRACKET => 12,
808
- :RBRACKET => 13,
809
- :EQUALS => 14,
810
- :ON => 15,
811
- :SCHEMA => 16,
812
- :SCALAR => 17,
813
- :TYPE => 18,
814
- :IMPLEMENTS => 19,
815
- :INTERFACE => 20,
816
- :UNION => 21,
817
- :ENUM => 22,
818
- :INPUT => 23,
819
- :DIRECTIVE => 24,
820
- :IDENTIFIER => 25,
821
- :FRAGMENT => 26,
822
- :REPEATABLE => 27,
823
- :TRUE => 28,
824
- :FALSE => 29,
825
- :FLOAT => 30,
826
- :INT => 31,
827
- :STRING => 32,
828
- :NULL => 33,
829
- :DIR_SIGN => 34,
830
- :ELLIPSIS => 35,
831
- :EXTEND => 36,
832
- :AMP => 37,
833
- :PIPE => 38 }
834
-
835
- racc_nt_base = 39
836
-
837
- racc_use_result_var = true
838
-
839
- Racc_arg = [
840
- racc_action_table,
841
- racc_action_check,
842
- racc_action_default,
843
- racc_action_pointer,
844
- racc_goto_table,
845
- racc_goto_check,
846
- racc_goto_default,
847
- racc_goto_pointer,
848
- racc_nt_base,
849
- racc_reduce_table,
850
- racc_token_table,
851
- racc_shift_n,
852
- racc_reduce_n,
853
- racc_use_result_var ]
854
-
855
- Racc_token_to_s_table = [
856
- "$end",
857
- "error",
858
- "LCURLY",
859
- "RCURLY",
860
- "QUERY",
861
- "MUTATION",
862
- "SUBSCRIPTION",
863
- "LPAREN",
864
- "RPAREN",
865
- "VAR_SIGN",
866
- "COLON",
867
- "BANG",
868
- "LBRACKET",
869
- "RBRACKET",
870
- "EQUALS",
871
- "ON",
872
- "SCHEMA",
873
- "SCALAR",
874
- "TYPE",
875
- "IMPLEMENTS",
876
- "INTERFACE",
877
- "UNION",
878
- "ENUM",
879
- "INPUT",
880
- "DIRECTIVE",
881
- "IDENTIFIER",
882
- "FRAGMENT",
883
- "REPEATABLE",
884
- "TRUE",
885
- "FALSE",
886
- "FLOAT",
887
- "INT",
888
- "STRING",
889
- "NULL",
890
- "DIR_SIGN",
891
- "ELLIPSIS",
892
- "EXTEND",
893
- "AMP",
894
- "PIPE",
895
- "$start",
896
- "target",
897
- "document",
898
- "definitions_list",
899
- "definition",
900
- "executable_definition",
901
- "type_system_definition",
902
- "type_system_extension",
903
- "operation_definition",
904
- "fragment_definition",
905
- "operation_type",
906
- "operation_name_opt",
907
- "variable_definitions_opt",
908
- "directives_list_opt",
909
- "selection_set",
910
- "selection_list",
911
- "name",
912
- "variable_definitions_list",
913
- "variable_definition",
914
- "type",
915
- "default_value_opt",
916
- "nullable_type",
917
- "literal_value",
918
- "selection_set_opt",
919
- "selection",
920
- "field",
921
- "fragment_spread",
922
- "inline_fragment",
923
- "arguments_opt",
924
- "name_without_on",
925
- "schema_keyword",
926
- "enum_name",
927
- "enum_value_definition",
928
- "description_opt",
929
- "enum_value_definitions",
930
- "arguments_list",
931
- "argument",
932
- "input_value",
933
- "null_value",
934
- "enum_value",
935
- "list_value",
936
- "object_literal_value",
937
- "variable",
938
- "object_value",
939
- "list_value_list",
940
- "object_value_list",
941
- "object_value_field",
942
- "object_literal_value_list",
943
- "object_literal_value_field",
944
- "directives_list",
945
- "directive",
946
- "fragment_name_opt",
947
- "schema_definition",
948
- "type_definition",
949
- "directive_definition",
950
- "operation_type_definition_list",
951
- "operation_type_definition",
952
- "scalar_type_definition",
953
- "object_type_definition",
954
- "interface_type_definition",
955
- "union_type_definition",
956
- "enum_type_definition",
957
- "input_object_type_definition",
958
- "schema_extension",
959
- "type_extension",
960
- "scalar_type_extension",
961
- "object_type_extension",
962
- "interface_type_extension",
963
- "union_type_extension",
964
- "enum_type_extension",
965
- "input_object_type_extension",
966
- "implements",
967
- "field_definition_list",
968
- "implements_opt",
969
- "union_members",
970
- "input_value_definition_list",
971
- "description",
972
- "interfaces_list",
973
- "legacy_interfaces_list",
974
- "input_value_definition",
975
- "arguments_definitions_opt",
976
- "field_definition",
977
- "directive_repeatable_opt",
978
- "directive_locations" ]
979
-
980
- Racc_debug_parser = false
981
-
982
- ##### State transition tables end #####
983
-
984
- # reduce 0 omitted
985
-
986
- # reduce 1 omitted
987
-
988
- module_eval(<<'.,.,', 'parser.y', 4)
989
- def _reduce_2(val, _values, result)
990
- result = make_node(:Document, definitions: val[0])
991
- result
992
- end
993
- .,.,
994
-
995
- module_eval(<<'.,.,', 'parser.y', 7)
996
- def _reduce_3(val, _values, result)
997
- result = [val[0]]
998
- result
999
- end
1000
- .,.,
1001
-
1002
- module_eval(<<'.,.,', 'parser.y', 8)
1003
- def _reduce_4(val, _values, result)
1004
- val[0] << val[1]
1005
- result
1006
- end
1007
- .,.,
1008
-
1009
- # reduce 5 omitted
1010
-
1011
- # reduce 6 omitted
1012
-
1013
- # reduce 7 omitted
1014
-
1015
- # reduce 8 omitted
1016
-
1017
- # reduce 9 omitted
1018
-
1019
- module_eval(<<'.,.,', 'parser.y', 21)
1020
- def _reduce_10(val, _values, result)
1021
- result = make_node(
1022
- :OperationDefinition, {
1023
- operation_type: val[0],
1024
- name: val[1],
1025
- variables: val[2],
1026
- directives: val[3],
1027
- selections: val[4],
1028
- position_source: val[0],
1029
- }
1030
- )
1031
-
1032
- result
1033
- end
1034
- .,.,
1035
-
1036
- module_eval(<<'.,.,', 'parser.y', 33)
1037
- def _reduce_11(val, _values, result)
1038
- result = make_node(
1039
- :OperationDefinition, {
1040
- operation_type: "query",
1041
- selections: val[1],
1042
- position_source: val[0],
1043
- }
1044
- )
1045
-
1046
- result
1047
- end
1048
- .,.,
1049
-
1050
- module_eval(<<'.,.,', 'parser.y', 42)
1051
- def _reduce_12(val, _values, result)
1052
- result = make_node(
1053
- :OperationDefinition, {
1054
- operation_type: "query",
1055
- selections: [],
1056
- position_source: val[0],
1057
- }
1058
- )
1059
-
1060
- result
1061
- end
1062
- .,.,
1063
-
1064
- # reduce 13 omitted
1065
-
1066
- # reduce 14 omitted
1067
-
1068
- # reduce 15 omitted
1069
-
1070
- module_eval(<<'.,.,', 'parser.y', 57)
1071
- def _reduce_16(val, _values, result)
1072
- result = nil
1073
- result
1074
- end
1075
- .,.,
1076
-
1077
- # reduce 17 omitted
1078
-
1079
- module_eval(<<'.,.,', 'parser.y', 61)
1080
- def _reduce_18(val, _values, result)
1081
- result = EMPTY_ARRAY
1082
- result
1083
- end
1084
- .,.,
1085
-
1086
- module_eval(<<'.,.,', 'parser.y', 62)
1087
- def _reduce_19(val, _values, result)
1088
- result = val[1]
1089
- result
1090
- end
1091
- .,.,
1092
-
1093
- module_eval(<<'.,.,', 'parser.y', 65)
1094
- def _reduce_20(val, _values, result)
1095
- result = [val[0]]
1096
- result
1097
- end
1098
- .,.,
1099
-
1100
- module_eval(<<'.,.,', 'parser.y', 66)
1101
- def _reduce_21(val, _values, result)
1102
- val[0] << val[1]
1103
- result
1104
- end
1105
- .,.,
1106
-
1107
- module_eval(<<'.,.,', 'parser.y', 70)
1108
- def _reduce_22(val, _values, result)
1109
- result = make_node(:VariableDefinition, {
1110
- name: val[1],
1111
- type: val[3],
1112
- default_value: val[4],
1113
- position_source: val[0],
1114
- })
1115
-
1116
- result
1117
- end
1118
- .,.,
1119
-
1120
- module_eval(<<'.,.,', 'parser.y', 79)
1121
- def _reduce_23(val, _values, result)
1122
- result = val[0]
1123
- result
1124
- end
1125
- .,.,
1126
-
1127
- module_eval(<<'.,.,', 'parser.y', 80)
1128
- def _reduce_24(val, _values, result)
1129
- result = make_node(:NonNullType, of_type: val[0])
1130
- result
1131
- end
1132
- .,.,
1133
-
1134
- module_eval(<<'.,.,', 'parser.y', 83)
1135
- def _reduce_25(val, _values, result)
1136
- result = make_node(:TypeName, name: val[0])
1137
- result
1138
- end
1139
- .,.,
1140
-
1141
- module_eval(<<'.,.,', 'parser.y', 84)
1142
- def _reduce_26(val, _values, result)
1143
- result = make_node(:ListType, of_type: val[1])
1144
- result
1145
- end
1146
- .,.,
1147
-
1148
- module_eval(<<'.,.,', 'parser.y', 87)
1149
- def _reduce_27(val, _values, result)
1150
- result = nil
1151
- result
1152
- end
1153
- .,.,
1154
-
1155
- module_eval(<<'.,.,', 'parser.y', 88)
1156
- def _reduce_28(val, _values, result)
1157
- result = val[1]
1158
- result
1159
- end
1160
- .,.,
1161
-
1162
- module_eval(<<'.,.,', 'parser.y', 91)
1163
- def _reduce_29(val, _values, result)
1164
- result = val[1]
1165
- result
1166
- end
1167
- .,.,
1168
-
1169
- module_eval(<<'.,.,', 'parser.y', 94)
1170
- def _reduce_30(val, _values, result)
1171
- result = EMPTY_ARRAY
1172
- result
1173
- end
1174
- .,.,
1175
-
1176
- module_eval(<<'.,.,', 'parser.y', 95)
1177
- def _reduce_31(val, _values, result)
1178
- result = val[0]
1179
- result
1180
- end
1181
- .,.,
53
+ def tokens_count
54
+ parse
55
+ @lexer.tokens_count
56
+ end
1182
57
 
1183
- module_eval(<<'.,.,', 'parser.y', 98)
1184
- def _reduce_32(val, _values, result)
1185
- result = [result]
1186
- result
1187
- end
1188
- .,.,
58
+ def line_at(pos)
59
+ line = lines_at.bsearch_index { |l| l >= pos }
60
+ if line.nil?
61
+ @lines_at.size + 1
62
+ else
63
+ line + 1
64
+ end
65
+ end
1189
66
 
1190
- module_eval(<<'.,.,', 'parser.y', 99)
1191
- def _reduce_33(val, _values, result)
1192
- val[0] << val[1]
1193
- result
1194
- end
1195
- .,.,
67
+ def column_at(pos)
68
+ next_line_idx = lines_at.bsearch_index { |l| l >= pos } || 0
69
+ if next_line_idx > 0
70
+ line_pos = @lines_at[next_line_idx - 1]
71
+ pos - line_pos
72
+ else
73
+ pos + 1
74
+ end
75
+ end
1196
76
 
1197
- # reduce 34 omitted
77
+ private
78
+
79
+ # @return [Array<Integer>] Positions of each line break in the original string
80
+ def lines_at
81
+ @lines_at ||= begin
82
+ la = []
83
+ idx = 0
84
+ while idx
85
+ idx = @graphql_str.index("\n", idx)
86
+ if idx
87
+ la << idx
88
+ idx += 1
89
+ end
90
+ end
91
+ la
92
+ end
93
+ end
1198
94
 
1199
- # reduce 35 omitted
95
+ attr_reader :token_name
1200
96
 
1201
- # reduce 36 omitted
97
+ def advance_token
98
+ @token_name = @lexer.advance
99
+ end
1202
100
 
1203
- module_eval(<<'.,.,', 'parser.y', 108)
1204
- def _reduce_37(val, _values, result)
1205
- result = make_node(
1206
- :Field, {
1207
- name: val[0],
1208
- arguments: val[1],
1209
- directives: val[2],
1210
- selections: val[3],
1211
- position_source: val[0],
1212
- }
1213
- )
101
+ def pos
102
+ @lexer.pos
103
+ end
1214
104
 
1215
- result
1216
- end
1217
- .,.,
105
+ def document
106
+ any_tokens = advance_token
107
+ defns = []
108
+ if any_tokens
109
+ defns << definition
110
+ else
111
+ # Only ignored characters is not a valid document
112
+ raise GraphQL::ParseError.new("Unexpected end of document", nil, nil, @graphql_str)
113
+ end
114
+ while !@lexer.finished?
115
+ defns << definition
116
+ end
117
+ Document.new(pos: 0, definitions: defns, filename: @filename, source: self)
118
+ end
1218
119
 
1219
- module_eval(<<'.,.,', 'parser.y', 119)
1220
- def _reduce_38(val, _values, result)
1221
- result = make_node(
1222
- :Field, {
1223
- alias: val[0],
1224
- name: val[2],
1225
- arguments: val[3],
1226
- directives: val[4],
1227
- selections: val[5],
1228
- position_source: val[0],
1229
- }
120
+ def definition
121
+ case token_name
122
+ when :FRAGMENT
123
+ loc = pos
124
+ expect_token :FRAGMENT
125
+ f_name = if !at?(:ON)
126
+ parse_name
127
+ end
128
+ expect_token :ON
129
+ f_type = parse_type_name
130
+ directives = parse_directives
131
+ selections = selection_set
132
+ Nodes::FragmentDefinition.new(
133
+ pos: loc,
134
+ name: f_name,
135
+ type: f_type,
136
+ directives: directives,
137
+ selections: selections,
138
+ filename: @filename,
139
+ source: self
140
+ )
141
+ when :QUERY, :MUTATION, :SUBSCRIPTION, :LCURLY
142
+ op_loc = pos
143
+ op_type = case token_name
144
+ when :LCURLY
145
+ "query"
146
+ else
147
+ parse_operation_type
148
+ end
149
+
150
+ op_name = case token_name
151
+ when :LPAREN, :LCURLY, :DIR_SIGN
152
+ nil
153
+ else
154
+ parse_name
155
+ end
156
+
157
+ variable_definitions = if at?(:LPAREN)
158
+ expect_token(:LPAREN)
159
+ defs = []
160
+ while !at?(:RPAREN)
161
+ loc = pos
162
+ expect_token(:VAR_SIGN)
163
+ var_name = parse_name
164
+ expect_token(:COLON)
165
+ var_type = self.type || raise_parse_error("Missing type definition for variable: $#{var_name}")
166
+ default_value = if at?(:EQUALS)
167
+ advance_token
168
+ value
169
+ end
170
+
171
+ directives = parse_directives
172
+
173
+ defs << Nodes::VariableDefinition.new(
174
+ pos: loc,
175
+ name: var_name,
176
+ type: var_type,
177
+ default_value: default_value,
178
+ directives: directives,
179
+ filename: @filename,
180
+ source: self
181
+ )
182
+ end
183
+ expect_token(:RPAREN)
184
+ defs
185
+ else
186
+ EmptyObjects::EMPTY_ARRAY
187
+ end
188
+
189
+ directives = parse_directives
190
+
191
+ OperationDefinition.new(
192
+ pos: op_loc,
193
+ operation_type: op_type,
194
+ name: op_name,
195
+ variables: variable_definitions,
196
+ directives: directives,
197
+ selections: selection_set,
198
+ filename: @filename,
199
+ source: self
200
+ )
201
+ when :EXTEND
202
+ loc = pos
203
+ advance_token
204
+ case token_name
205
+ when :SCALAR
206
+ advance_token
207
+ name = parse_name
208
+ directives = parse_directives
209
+ ScalarTypeExtension.new(pos: loc, name: name, directives: directives, filename: @filename, source: self)
210
+ when :TYPE
211
+ advance_token
212
+ name = parse_name
213
+ implements_interfaces = parse_implements
214
+ directives = parse_directives
215
+ field_defns = at?(:LCURLY) ? parse_field_definitions : EMPTY_ARRAY
216
+
217
+ ObjectTypeExtension.new(pos: loc, name: name, interfaces: implements_interfaces, directives: directives, fields: field_defns, filename: @filename, source: self)
218
+ when :INTERFACE
219
+ advance_token
220
+ name = parse_name
221
+ directives = parse_directives
222
+ interfaces = parse_implements
223
+ fields_definition = at?(:LCURLY) ? parse_field_definitions : EMPTY_ARRAY
224
+ InterfaceTypeExtension.new(pos: loc, name: name, directives: directives, fields: fields_definition, interfaces: interfaces, filename: @filename, source: self)
225
+ when :UNION
226
+ advance_token
227
+ name = parse_name
228
+ directives = parse_directives
229
+ union_member_types = parse_union_members
230
+ UnionTypeExtension.new(pos: loc, name: name, directives: directives, types: union_member_types, filename: @filename, source: self)
231
+ when :ENUM
232
+ advance_token
233
+ name = parse_name
234
+ directives = parse_directives
235
+ enum_values_definition = parse_enum_value_definitions
236
+ Nodes::EnumTypeExtension.new(pos: loc, name: name, directives: directives, values: enum_values_definition, filename: @filename, source: self)
237
+ when :INPUT
238
+ advance_token
239
+ name = parse_name
240
+ directives = parse_directives
241
+ input_fields_definition = parse_input_object_field_definitions
242
+ InputObjectTypeExtension.new(pos: loc, name: name, directives: directives, fields: input_fields_definition, filename: @filename, source: self)
243
+ when :SCHEMA
244
+ advance_token
245
+ directives = parse_directives
246
+ query = mutation = subscription = nil
247
+ if at?(:LCURLY)
248
+ advance_token
249
+ while !at?(:RCURLY)
250
+ if at?(:QUERY)
251
+ advance_token
252
+ expect_token(:COLON)
253
+ query = parse_name
254
+ elsif at?(:MUTATION)
255
+ advance_token
256
+ expect_token(:COLON)
257
+ mutation = parse_name
258
+ elsif at?(:SUBSCRIPTION)
259
+ advance_token
260
+ expect_token(:COLON)
261
+ subscription = parse_name
262
+ else
263
+ expect_one_of([:QUERY, :MUTATION, :SUBSCRIPTION])
264
+ end
265
+ end
266
+ expect_token :RCURLY
267
+ end
268
+ SchemaExtension.new(
269
+ subscription: subscription,
270
+ mutation: mutation,
271
+ query: query,
272
+ directives: directives,
273
+ pos: loc,
274
+ filename: @filename,
275
+ source: self,
1230
276
  )
277
+ else
278
+ expect_one_of([:SCHEMA, :SCALAR, :TYPE, :ENUM, :INPUT, :UNION, :INTERFACE])
279
+ end
280
+ else
281
+ loc = pos
282
+ desc = at?(:STRING) ? string_value : nil
283
+ defn_loc = pos
284
+ case token_name
285
+ when :SCHEMA
286
+ advance_token
287
+ directives = parse_directives
288
+ query = mutation = subscription = nil
289
+ expect_token :LCURLY
290
+ while !at?(:RCURLY)
291
+ if at?(:QUERY)
292
+ advance_token
293
+ expect_token(:COLON)
294
+ query = parse_name
295
+ elsif at?(:MUTATION)
296
+ advance_token
297
+ expect_token(:COLON)
298
+ mutation = parse_name
299
+ elsif at?(:SUBSCRIPTION)
300
+ advance_token
301
+ expect_token(:COLON)
302
+ subscription = parse_name
303
+ else
304
+ expect_one_of([:QUERY, :MUTATION, :SUBSCRIPTION])
305
+ end
306
+ end
307
+ expect_token :RCURLY
308
+ SchemaDefinition.new(pos: loc, definition_pos: defn_loc, query: query, mutation: mutation, subscription: subscription, directives: directives, filename: @filename, source: self)
309
+ when :DIRECTIVE
310
+ advance_token
311
+ expect_token :DIR_SIGN
312
+ name = parse_name
313
+ arguments_definition = parse_argument_definitions
314
+ repeatable = if at?(:REPEATABLE)
315
+ advance_token
316
+ true
317
+ else
318
+ false
319
+ end
320
+ expect_token :ON
321
+ directive_locations = [DirectiveLocation.new(pos: pos, name: parse_name, filename: @filename, source: self)]
322
+ while at?(:PIPE)
323
+ advance_token
324
+ directive_locations << DirectiveLocation.new(pos: pos, name: parse_name, filename: @filename, source: self)
325
+ end
326
+ DirectiveDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, arguments: arguments_definition, locations: directive_locations, repeatable: repeatable, filename: @filename, source: self)
327
+ when :TYPE
328
+ advance_token
329
+ name = parse_name
330
+ implements_interfaces = parse_implements
331
+ directives = parse_directives
332
+ field_defns = at?(:LCURLY) ? parse_field_definitions : EMPTY_ARRAY
333
+
334
+ ObjectTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, interfaces: implements_interfaces, directives: directives, fields: field_defns, filename: @filename, source: self)
335
+ when :INTERFACE
336
+ advance_token
337
+ name = parse_name
338
+ interfaces = parse_implements
339
+ directives = parse_directives
340
+ fields_definition = parse_field_definitions
341
+ InterfaceTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, fields: fields_definition, interfaces: interfaces, filename: @filename, source: self)
342
+ when :UNION
343
+ advance_token
344
+ name = parse_name
345
+ directives = parse_directives
346
+ union_member_types = parse_union_members
347
+ UnionTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, types: union_member_types, filename: @filename, source: self)
348
+ when :SCALAR
349
+ advance_token
350
+ name = parse_name
351
+ directives = parse_directives
352
+ ScalarTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, filename: @filename, source: self)
353
+ when :ENUM
354
+ advance_token
355
+ name = parse_name
356
+ directives = parse_directives
357
+ enum_values_definition = parse_enum_value_definitions
358
+ Nodes::EnumTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, values: enum_values_definition, filename: @filename, source: self)
359
+ when :INPUT
360
+ advance_token
361
+ name = parse_name
362
+ directives = parse_directives
363
+ input_fields_definition = parse_input_object_field_definitions
364
+ InputObjectTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, fields: input_fields_definition, filename: @filename, source: self)
365
+ else
366
+ expect_one_of([:SCHEMA, :SCALAR, :TYPE, :ENUM, :INPUT, :UNION, :INTERFACE])
367
+ end
368
+ end
369
+ end
1231
370
 
1232
- result
1233
- end
1234
- .,.,
1235
-
1236
- # reduce 39 omitted
1237
-
1238
- # reduce 40 omitted
1239
-
1240
- # reduce 41 omitted
1241
-
1242
- # reduce 42 omitted
1243
-
1244
- # reduce 43 omitted
1245
-
1246
- # reduce 44 omitted
1247
-
1248
- # reduce 45 omitted
1249
-
1250
- # reduce 46 omitted
1251
-
1252
- # reduce 47 omitted
1253
-
1254
- # reduce 48 omitted
1255
-
1256
- # reduce 49 omitted
1257
-
1258
- # reduce 50 omitted
1259
-
1260
- # reduce 51 omitted
1261
-
1262
- # reduce 52 omitted
1263
-
1264
- # reduce 53 omitted
1265
-
1266
- # reduce 54 omitted
1267
-
1268
- # reduce 55 omitted
1269
-
1270
- # reduce 56 omitted
1271
-
1272
- # reduce 57 omitted
1273
-
1274
- # reduce 58 omitted
1275
-
1276
- # reduce 59 omitted
1277
-
1278
- # reduce 60 omitted
1279
-
1280
- # reduce 61 omitted
1281
-
1282
- # reduce 62 omitted
1283
-
1284
- module_eval(<<'.,.,', 'parser.y', 164)
1285
- def _reduce_63(val, _values, result)
1286
- result = make_node(:EnumValueDefinition, name: val[1], directives: val[2], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
1287
- result
1288
- end
1289
- .,.,
1290
-
1291
- module_eval(<<'.,.,', 'parser.y', 167)
1292
- def _reduce_64(val, _values, result)
1293
- result = [val[0]]
1294
- result
1295
- end
1296
- .,.,
1297
-
1298
- module_eval(<<'.,.,', 'parser.y', 168)
1299
- def _reduce_65(val, _values, result)
1300
- result = val[0] << val[1]
1301
- result
1302
- end
1303
- .,.,
1304
-
1305
- module_eval(<<'.,.,', 'parser.y', 171)
1306
- def _reduce_66(val, _values, result)
1307
- result = EMPTY_ARRAY
1308
- result
1309
- end
1310
- .,.,
1311
-
1312
- module_eval(<<'.,.,', 'parser.y', 172)
1313
- def _reduce_67(val, _values, result)
1314
- result = val[1]
1315
- result
1316
- end
1317
- .,.,
1318
-
1319
- module_eval(<<'.,.,', 'parser.y', 175)
1320
- def _reduce_68(val, _values, result)
1321
- result = [val[0]]
1322
- result
1323
- end
1324
- .,.,
1325
-
1326
- module_eval(<<'.,.,', 'parser.y', 176)
1327
- def _reduce_69(val, _values, result)
1328
- val[0] << val[1]
1329
- result
1330
- end
1331
- .,.,
1332
-
1333
- module_eval(<<'.,.,', 'parser.y', 179)
1334
- def _reduce_70(val, _values, result)
1335
- result = make_node(:Argument, name: val[0], value: val[2], position_source: val[0])
1336
- result
1337
- end
1338
- .,.,
1339
-
1340
- module_eval(<<'.,.,', 'parser.y', 182)
1341
- def _reduce_71(val, _values, result)
1342
- result = val[0].to_f
1343
- result
1344
- end
1345
- .,.,
1346
-
1347
- module_eval(<<'.,.,', 'parser.y', 183)
1348
- def _reduce_72(val, _values, result)
1349
- result = val[0].to_i
1350
- result
1351
- end
1352
- .,.,
1353
-
1354
- module_eval(<<'.,.,', 'parser.y', 184)
1355
- def _reduce_73(val, _values, result)
1356
- result = val[0].to_s
1357
- result
1358
- end
1359
- .,.,
1360
-
1361
- module_eval(<<'.,.,', 'parser.y', 185)
1362
- def _reduce_74(val, _values, result)
1363
- result = true
1364
- result
1365
- end
1366
- .,.,
1367
-
1368
- module_eval(<<'.,.,', 'parser.y', 186)
1369
- def _reduce_75(val, _values, result)
1370
- result = false
1371
- result
1372
- end
1373
- .,.,
1374
-
1375
- # reduce 76 omitted
1376
-
1377
- # reduce 77 omitted
1378
-
1379
- # reduce 78 omitted
1380
-
1381
- # reduce 79 omitted
1382
-
1383
- # reduce 80 omitted
1384
-
1385
- # reduce 81 omitted
1386
-
1387
- # reduce 82 omitted
1388
-
1389
- module_eval(<<'.,.,', 'parser.y', 197)
1390
- def _reduce_83(val, _values, result)
1391
- result = make_node(:NullValue, name: val[0], position_source: val[0])
1392
- result
1393
- end
1394
- .,.,
1395
-
1396
- module_eval(<<'.,.,', 'parser.y', 198)
1397
- def _reduce_84(val, _values, result)
1398
- result = make_node(:VariableIdentifier, name: val[1], position_source: val[0])
1399
- result
1400
- end
1401
- .,.,
1402
-
1403
- module_eval(<<'.,.,', 'parser.y', 201)
1404
- def _reduce_85(val, _values, result)
1405
- result = EMPTY_ARRAY
1406
- result
1407
- end
1408
- .,.,
1409
-
1410
- module_eval(<<'.,.,', 'parser.y', 202)
1411
- def _reduce_86(val, _values, result)
1412
- result = val[1]
1413
- result
1414
- end
1415
- .,.,
1416
-
1417
- module_eval(<<'.,.,', 'parser.y', 205)
1418
- def _reduce_87(val, _values, result)
1419
- result = [val[0]]
1420
- result
1421
- end
1422
- .,.,
1423
-
1424
- module_eval(<<'.,.,', 'parser.y', 206)
1425
- def _reduce_88(val, _values, result)
1426
- val[0] << val[1]
1427
- result
1428
- end
1429
- .,.,
1430
-
1431
- module_eval(<<'.,.,', 'parser.y', 209)
1432
- def _reduce_89(val, _values, result)
1433
- result = make_node(:InputObject, arguments: [], position_source: val[0])
1434
- result
1435
- end
1436
- .,.,
1437
-
1438
- module_eval(<<'.,.,', 'parser.y', 210)
1439
- def _reduce_90(val, _values, result)
1440
- result = make_node(:InputObject, arguments: val[1], position_source: val[0])
1441
- result
1442
- end
1443
- .,.,
1444
-
1445
- module_eval(<<'.,.,', 'parser.y', 213)
1446
- def _reduce_91(val, _values, result)
1447
- result = [val[0]]
1448
- result
1449
- end
1450
- .,.,
1451
-
1452
- module_eval(<<'.,.,', 'parser.y', 214)
1453
- def _reduce_92(val, _values, result)
1454
- val[0] << val[1]
1455
- result
1456
- end
1457
- .,.,
1458
-
1459
- module_eval(<<'.,.,', 'parser.y', 217)
1460
- def _reduce_93(val, _values, result)
1461
- result = make_node(:Argument, name: val[0], value: val[2], position_source: val[0])
1462
- result
1463
- end
1464
- .,.,
1465
-
1466
- module_eval(<<'.,.,', 'parser.y', 221)
1467
- def _reduce_94(val, _values, result)
1468
- result = make_node(:InputObject, arguments: [], position_source: val[0])
1469
- result
1470
- end
1471
- .,.,
1472
-
1473
- module_eval(<<'.,.,', 'parser.y', 222)
1474
- def _reduce_95(val, _values, result)
1475
- result = make_node(:InputObject, arguments: val[1], position_source: val[0])
1476
- result
1477
- end
1478
- .,.,
1479
-
1480
- module_eval(<<'.,.,', 'parser.y', 225)
1481
- def _reduce_96(val, _values, result)
1482
- result = [val[0]]
1483
- result
1484
- end
1485
- .,.,
1486
-
1487
- module_eval(<<'.,.,', 'parser.y', 226)
1488
- def _reduce_97(val, _values, result)
1489
- val[0] << val[1]
1490
- result
1491
- end
1492
- .,.,
1493
-
1494
- module_eval(<<'.,.,', 'parser.y', 229)
1495
- def _reduce_98(val, _values, result)
1496
- result = make_node(:Argument, name: val[0], value: val[2], position_source: val[0])
1497
- result
1498
- end
1499
- .,.,
1500
-
1501
- module_eval(<<'.,.,', 'parser.y', 231)
1502
- def _reduce_99(val, _values, result)
1503
- result = make_node(:Enum, name: val[0], position_source: val[0])
1504
- result
1505
- end
1506
- .,.,
1507
-
1508
- module_eval(<<'.,.,', 'parser.y', 234)
1509
- def _reduce_100(val, _values, result)
1510
- result = EMPTY_ARRAY
1511
- result
1512
- end
1513
- .,.,
1514
-
1515
- # reduce 101 omitted
1516
-
1517
- module_eval(<<'.,.,', 'parser.y', 238)
1518
- def _reduce_102(val, _values, result)
1519
- result = [val[0]]
1520
- result
1521
- end
1522
- .,.,
1523
-
1524
- module_eval(<<'.,.,', 'parser.y', 239)
1525
- def _reduce_103(val, _values, result)
1526
- val[0] << val[1]
1527
- result
1528
- end
1529
- .,.,
1530
-
1531
- module_eval(<<'.,.,', 'parser.y', 241)
1532
- def _reduce_104(val, _values, result)
1533
- result = make_node(:Directive, name: val[1], arguments: val[2], position_source: val[0])
1534
- result
1535
- end
1536
- .,.,
1537
-
1538
- module_eval(<<'.,.,', 'parser.y', 244)
1539
- def _reduce_105(val, _values, result)
1540
- result = make_node(:FragmentSpread, name: val[1], directives: val[2], position_source: val[0])
1541
- result
1542
- end
1543
- .,.,
1544
-
1545
- module_eval(<<'.,.,', 'parser.y', 248)
1546
- def _reduce_106(val, _values, result)
1547
- result = make_node(:InlineFragment, {
1548
- type: val[2],
1549
- directives: val[3],
1550
- selections: val[4],
1551
- position_source: val[0]
1552
- })
1553
-
1554
- result
1555
- end
1556
- .,.,
1557
-
1558
- module_eval(<<'.,.,', 'parser.y', 256)
1559
- def _reduce_107(val, _values, result)
1560
- result = make_node(:InlineFragment, {
1561
- type: nil,
1562
- directives: val[1],
1563
- selections: val[2],
1564
- position_source: val[0]
1565
- })
1566
-
1567
- result
1568
- end
1569
- .,.,
1570
-
1571
- module_eval(<<'.,.,', 'parser.y', 266)
1572
- def _reduce_108(val, _values, result)
1573
- result = make_node(:FragmentDefinition, {
1574
- name: val[1],
1575
- type: val[3],
1576
- directives: val[4],
1577
- selections: val[5],
1578
- position_source: val[0],
1579
- }
1580
- )
1581
-
1582
- result
1583
- end
1584
- .,.,
1585
-
1586
- module_eval(<<'.,.,', 'parser.y', 277)
1587
- def _reduce_109(val, _values, result)
1588
- result = nil
1589
- result
1590
- end
1591
- .,.,
1592
-
1593
- # reduce 110 omitted
1594
-
1595
- # reduce 111 omitted
1596
-
1597
- # reduce 112 omitted
1598
-
1599
- # reduce 113 omitted
1600
-
1601
- module_eval(<<'.,.,', 'parser.y', 286)
1602
- def _reduce_114(val, _values, result)
1603
- result = make_node(:SchemaDefinition, position_source: val[0], definition_line: val[0].line, directives: val[1], **val[3])
1604
- result
1605
- end
1606
- .,.,
1607
-
1608
- # reduce 115 omitted
1609
-
1610
- module_eval(<<'.,.,', 'parser.y', 290)
1611
- def _reduce_116(val, _values, result)
1612
- result = val[0].merge(val[1])
1613
- result
1614
- end
1615
- .,.,
1616
-
1617
- module_eval(<<'.,.,', 'parser.y', 293)
1618
- def _reduce_117(val, _values, result)
1619
- result = { val[0].to_s.to_sym => val[2] }
1620
- result
1621
- end
1622
- .,.,
1623
-
1624
- # reduce 118 omitted
1625
-
1626
- # reduce 119 omitted
1627
-
1628
- # reduce 120 omitted
1629
-
1630
- # reduce 121 omitted
1631
-
1632
- # reduce 122 omitted
1633
-
1634
- # reduce 123 omitted
1635
-
1636
- # reduce 124 omitted
1637
-
1638
- # reduce 125 omitted
1639
-
1640
- module_eval(<<'.,.,', 'parser.y', 308)
1641
- def _reduce_126(val, _values, result)
1642
- result = make_node(:SchemaExtension, position_source: val[0], directives: val[2], **val[4])
1643
- result
1644
- end
1645
- .,.,
1646
-
1647
- module_eval(<<'.,.,', 'parser.y', 309)
1648
- def _reduce_127(val, _values, result)
1649
- result = make_node(:SchemaExtension, position_source: val[0], directives: val[2])
1650
- result
1651
- end
1652
- .,.,
1653
-
1654
- # reduce 128 omitted
1655
-
1656
- # reduce 129 omitted
1657
-
1658
- # reduce 130 omitted
1659
-
1660
- # reduce 131 omitted
1661
-
1662
- # reduce 132 omitted
1663
-
1664
- # reduce 133 omitted
1665
-
1666
- module_eval(<<'.,.,', 'parser.y', 319)
1667
- def _reduce_134(val, _values, result)
1668
- result = make_node(:ScalarTypeExtension, name: val[2], directives: val[3], position_source: val[0])
1669
- result
1670
- end
1671
- .,.,
1672
-
1673
- module_eval(<<'.,.,', 'parser.y', 323)
1674
- def _reduce_135(val, _values, result)
1675
- result = make_node(:ObjectTypeExtension, name: val[2], interfaces: val[3], directives: [], fields: val[5], position_source: val[0])
1676
- result
1677
- end
1678
- .,.,
1679
-
1680
- module_eval(<<'.,.,', 'parser.y', 324)
1681
- def _reduce_136(val, _values, result)
1682
- result = make_node(:ObjectTypeExtension, name: val[2], interfaces: val[3], directives: val[4], fields: val[6], position_source: val[0])
1683
- result
1684
- end
1685
- .,.,
1686
-
1687
- module_eval(<<'.,.,', 'parser.y', 325)
1688
- def _reduce_137(val, _values, result)
1689
- result = make_node(:ObjectTypeExtension, name: val[2], interfaces: val[3], directives: val[4], fields: [], position_source: val[0])
1690
- result
1691
- end
1692
- .,.,
1693
-
1694
- module_eval(<<'.,.,', 'parser.y', 326)
1695
- def _reduce_138(val, _values, result)
1696
- result = make_node(:ObjectTypeExtension, name: val[2], interfaces: val[3], directives: [], fields: [], position_source: val[0])
1697
- result
1698
- end
1699
- .,.,
1700
-
1701
- module_eval(<<'.,.,', 'parser.y', 329)
1702
- def _reduce_139(val, _values, result)
1703
- result = make_node(:InterfaceTypeExtension, name: val[2], interfaces: val[3], directives: val[4], fields: val[6], position_source: val[0])
1704
- result
1705
- end
1706
- .,.,
1707
-
1708
- module_eval(<<'.,.,', 'parser.y', 330)
1709
- def _reduce_140(val, _values, result)
1710
- result = make_node(:InterfaceTypeExtension, name: val[2], interfaces: val[3], directives: val[4], fields: [], position_source: val[0])
1711
- result
1712
- end
1713
- .,.,
1714
-
1715
- module_eval(<<'.,.,', 'parser.y', 331)
1716
- def _reduce_141(val, _values, result)
1717
- result = make_node(:InterfaceTypeExtension, name: val[2], interfaces: val[3], directives: [], fields: [], position_source: val[0])
1718
- result
1719
- end
1720
- .,.,
1721
-
1722
- module_eval(<<'.,.,', 'parser.y', 334)
1723
- def _reduce_142(val, _values, result)
1724
- result = make_node(:UnionTypeExtension, name: val[2], directives: val[3], types: val[5], position_source: val[0])
1725
- result
1726
- end
1727
- .,.,
1728
-
1729
- module_eval(<<'.,.,', 'parser.y', 335)
1730
- def _reduce_143(val, _values, result)
1731
- result = make_node(:UnionTypeExtension, name: val[2], directives: val[3], types: [], position_source: val[0])
1732
- result
1733
- end
1734
- .,.,
1735
-
1736
- module_eval(<<'.,.,', 'parser.y', 338)
1737
- def _reduce_144(val, _values, result)
1738
- result = make_node(:EnumTypeExtension, name: val[2], directives: val[3], values: val[5], position_source: val[0])
1739
- result
1740
- end
1741
- .,.,
1742
-
1743
- module_eval(<<'.,.,', 'parser.y', 339)
1744
- def _reduce_145(val, _values, result)
1745
- result = make_node(:EnumTypeExtension, name: val[2], directives: val[3], values: [], position_source: val[0])
1746
- result
1747
- end
1748
- .,.,
1749
-
1750
- module_eval(<<'.,.,', 'parser.y', 342)
1751
- def _reduce_146(val, _values, result)
1752
- result = make_node(:InputObjectTypeExtension, name: val[2], directives: val[3], fields: val[5], position_source: val[0])
1753
- result
1754
- end
1755
- .,.,
1756
-
1757
- module_eval(<<'.,.,', 'parser.y', 343)
1758
- def _reduce_147(val, _values, result)
1759
- result = make_node(:InputObjectTypeExtension, name: val[2], directives: val[3], fields: [], position_source: val[0])
1760
- result
1761
- end
1762
- .,.,
1763
-
1764
- # reduce 148 omitted
1765
-
1766
- # reduce 149 omitted
1767
-
1768
- # reduce 150 omitted
1769
-
1770
- module_eval(<<'.,.,', 'parser.y', 353)
1771
- def _reduce_151(val, _values, result)
1772
- result = make_node(:ScalarTypeDefinition, name: val[2], directives: val[3], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
1773
-
1774
- result
1775
- end
1776
- .,.,
1777
-
1778
- module_eval(<<'.,.,', 'parser.y', 358)
1779
- def _reduce_152(val, _values, result)
1780
- result = make_node(:ObjectTypeDefinition, name: val[2], interfaces: val[3], directives: val[4], fields: val[6], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
1781
-
1782
- result
1783
- end
1784
- .,.,
1785
-
1786
- module_eval(<<'.,.,', 'parser.y', 362)
1787
- def _reduce_153(val, _values, result)
1788
- result = EMPTY_ARRAY
1789
- result
1790
- end
1791
- .,.,
1792
-
1793
- # reduce 154 omitted
1794
-
1795
- module_eval(<<'.,.,', 'parser.y', 366)
1796
- def _reduce_155(val, _values, result)
1797
- result = val[2]
1798
- result
1799
- end
1800
- .,.,
1801
-
1802
- module_eval(<<'.,.,', 'parser.y', 367)
1803
- def _reduce_156(val, _values, result)
1804
- result = val[1]
1805
- result
1806
- end
1807
- .,.,
1808
-
1809
- module_eval(<<'.,.,', 'parser.y', 368)
1810
- def _reduce_157(val, _values, result)
1811
- result = val[1]
1812
- result
1813
- end
1814
- .,.,
1815
-
1816
- module_eval(<<'.,.,', 'parser.y', 371)
1817
- def _reduce_158(val, _values, result)
1818
- result = [make_node(:TypeName, name: val[0], position_source: val[0])]
1819
- result
1820
- end
1821
- .,.,
1822
-
1823
- module_eval(<<'.,.,', 'parser.y', 372)
1824
- def _reduce_159(val, _values, result)
1825
- val[0] << make_node(:TypeName, name: val[2], position_source: val[2])
1826
- result
1827
- end
1828
- .,.,
1829
-
1830
- module_eval(<<'.,.,', 'parser.y', 375)
1831
- def _reduce_160(val, _values, result)
1832
- result = [make_node(:TypeName, name: val[0], position_source: val[0])]
1833
- result
1834
- end
1835
- .,.,
1836
-
1837
- module_eval(<<'.,.,', 'parser.y', 376)
1838
- def _reduce_161(val, _values, result)
1839
- val[0] << make_node(:TypeName, name: val[1], position_source: val[1])
1840
- result
1841
- end
1842
- .,.,
1843
-
1844
- module_eval(<<'.,.,', 'parser.y', 380)
1845
- def _reduce_162(val, _values, result)
1846
- result = make_node(:InputValueDefinition, name: val[1], type: val[3], default_value: val[4], directives: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
1847
-
1848
- result
1849
- end
1850
- .,.,
1851
-
1852
- module_eval(<<'.,.,', 'parser.y', 384)
1853
- def _reduce_163(val, _values, result)
1854
- result = [val[0]]
1855
- result
1856
- end
1857
- .,.,
371
+ def parse_input_object_field_definitions
372
+ if at?(:LCURLY)
373
+ expect_token :LCURLY
374
+ list = []
375
+ while !at?(:RCURLY)
376
+ list << parse_input_value_definition
377
+ end
378
+ expect_token :RCURLY
379
+ list
380
+ else
381
+ EMPTY_ARRAY
382
+ end
383
+ end
1858
384
 
1859
- module_eval(<<'.,.,', 'parser.y', 385)
1860
- def _reduce_164(val, _values, result)
1861
- val[0] << val[1]
1862
- result
1863
- end
1864
- .,.,
385
+ def parse_enum_value_definitions
386
+ if at?(:LCURLY)
387
+ expect_token :LCURLY
388
+ list = []
389
+ while !at?(:RCURLY)
390
+ v_loc = pos
391
+ description = if at?(:STRING); string_value; end
392
+ defn_loc = pos
393
+ # Any identifier, but not true, false, or null
394
+ enum_value = if at?(:TRUE) || at?(:FALSE) || at?(:NULL)
395
+ expect_token(:IDENTIFIER)
396
+ else
397
+ parse_name
398
+ end
399
+ v_directives = parse_directives
400
+ list << EnumValueDefinition.new(pos: v_loc, definition_pos: defn_loc, description: description, name: enum_value, directives: v_directives, filename: @filename, source: self)
401
+ end
402
+ expect_token :RCURLY
403
+ list
404
+ else
405
+ EMPTY_ARRAY
406
+ end
407
+ end
1865
408
 
1866
- module_eval(<<'.,.,', 'parser.y', 388)
1867
- def _reduce_165(val, _values, result)
1868
- result = EMPTY_ARRAY
1869
- result
1870
- end
1871
- .,.,
409
+ def parse_union_members
410
+ if at?(:EQUALS)
411
+ expect_token :EQUALS
412
+ if at?(:PIPE)
413
+ advance_token
414
+ end
415
+ list = [parse_type_name]
416
+ while at?(:PIPE)
417
+ advance_token
418
+ list << parse_type_name
419
+ end
420
+ list
421
+ else
422
+ EMPTY_ARRAY
423
+ end
424
+ end
1872
425
 
1873
- module_eval(<<'.,.,', 'parser.y', 389)
1874
- def _reduce_166(val, _values, result)
1875
- result = val[1]
1876
- result
1877
- end
1878
- .,.,
426
+ def parse_implements
427
+ if at?(:IMPLEMENTS)
428
+ advance_token
429
+ list = []
430
+ while true
431
+ advance_token if at?(:AMP)
432
+ break unless at?(:IDENTIFIER)
433
+ list << parse_type_name
434
+ end
435
+ list
436
+ else
437
+ EMPTY_ARRAY
438
+ end
439
+ end
1879
440
 
1880
- module_eval(<<'.,.,', 'parser.y', 393)
1881
- def _reduce_167(val, _values, result)
1882
- result = make_node(:FieldDefinition, name: val[1], arguments: val[2], type: val[4], directives: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
441
+ def parse_field_definitions
442
+ expect_token :LCURLY
443
+ list = []
444
+ while !at?(:RCURLY)
445
+ loc = pos
446
+ description = if at?(:STRING); string_value; end
447
+ defn_loc = pos
448
+ name = parse_name
449
+ arguments_definition = parse_argument_definitions
450
+ expect_token :COLON
451
+ type = self.type
452
+ directives = parse_directives
453
+
454
+ list << FieldDefinition.new(pos: loc, definition_pos: defn_loc, description: description, name: name, arguments: arguments_definition, type: type, directives: directives, filename: @filename, source: self)
455
+ end
456
+ expect_token :RCURLY
457
+ list
458
+ end
1883
459
 
1884
- result
1885
- end
1886
- .,.,
460
+ def parse_argument_definitions
461
+ if at?(:LPAREN)
462
+ advance_token
463
+ list = []
464
+ while !at?(:RPAREN)
465
+ list << parse_input_value_definition
466
+ end
467
+ expect_token :RPAREN
468
+ list
469
+ else
470
+ EMPTY_ARRAY
471
+ end
472
+ end
1887
473
 
1888
- module_eval(<<'.,.,', 'parser.y', 397)
1889
- def _reduce_168(val, _values, result)
1890
- result = EMPTY_ARRAY
1891
- result
1892
- end
1893
- .,.,
474
+ def parse_input_value_definition
475
+ loc = pos
476
+ description = if at?(:STRING); string_value; end
477
+ defn_loc = pos
478
+ name = parse_name
479
+ expect_token :COLON
480
+ type = self.type
481
+ default_value = if at?(:EQUALS)
482
+ advance_token
483
+ value
484
+ else
485
+ nil
486
+ end
487
+ directives = parse_directives
488
+ InputValueDefinition.new(pos: loc, definition_pos: defn_loc, description: description, name: name, type: type, default_value: default_value, directives: directives, filename: @filename, source: self)
489
+ end
1894
490
 
1895
- module_eval(<<'.,.,', 'parser.y', 398)
1896
- def _reduce_169(val, _values, result)
1897
- result = [val[0]]
1898
- result
1899
- end
1900
- .,.,
491
+ def type
492
+ parsed_type = case token_name
493
+ when :IDENTIFIER
494
+ parse_type_name
495
+ when :LBRACKET
496
+ list_type
497
+ else
498
+ nil
499
+ end
500
+
501
+ if at?(:BANG) && parsed_type
502
+ parsed_type = Nodes::NonNullType.new(pos: pos, of_type: parsed_type, source: self)
503
+ expect_token(:BANG)
504
+ end
505
+ parsed_type
506
+ end
1901
507
 
1902
- module_eval(<<'.,.,', 'parser.y', 399)
1903
- def _reduce_170(val, _values, result)
1904
- val[0] << val[1]
1905
- result
1906
- end
1907
- .,.,
508
+ def list_type
509
+ loc = pos
510
+ expect_token(:LBRACKET)
511
+ inner_type = self.type
512
+ parsed_list_type = if inner_type
513
+ Nodes::ListType.new(pos: loc, of_type: inner_type, source: self)
514
+ else
515
+ nil
516
+ end
517
+ expect_token(:RBRACKET)
518
+ parsed_list_type
519
+ end
1908
520
 
1909
- module_eval(<<'.,.,', 'parser.y', 403)
1910
- def _reduce_171(val, _values, result)
1911
- result = make_node(:InterfaceTypeDefinition, name: val[2], interfaces: val[3], directives: val[4], fields: val[6], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
521
+ def parse_operation_type
522
+ val = if at?(:QUERY)
523
+ "query"
524
+ elsif at?(:MUTATION)
525
+ "mutation"
526
+ elsif at?(:SUBSCRIPTION)
527
+ "subscription"
528
+ else
529
+ expect_one_of([:QUERY, :MUTATION, :SUBSCRIPTION])
530
+ end
531
+ advance_token
532
+ val
533
+ end
1912
534
 
1913
- result
1914
- end
1915
- .,.,
535
+ def selection_set
536
+ expect_token(:LCURLY)
537
+ selections = []
538
+ while @token_name != :RCURLY
539
+ selections << if at?(:ELLIPSIS)
540
+ loc = pos
541
+ advance_token
542
+ case token_name
543
+ when :ON, :DIR_SIGN, :LCURLY
544
+ if_type = if at?(:ON)
545
+ advance_token
546
+ parse_type_name
547
+ else
548
+ nil
549
+ end
550
+
551
+ directives = parse_directives
552
+
553
+ Nodes::InlineFragment.new(pos: loc, type: if_type, directives: directives, selections: selection_set, filename: @filename, source: self)
554
+ else
555
+ name = parse_name_without_on
556
+ directives = parse_directives
557
+
558
+ # Can this ever happen?
559
+ # expect_token(:IDENTIFIER) if at?(:ON)
560
+
561
+ FragmentSpread.new(pos: loc, name: name, directives: directives, filename: @filename, source: self)
562
+ end
563
+ else
564
+ loc = pos
565
+ name = parse_name
566
+
567
+ field_alias = nil
568
+
569
+ if at?(:COLON)
570
+ advance_token
571
+ field_alias = name
572
+ name = parse_name
573
+ end
574
+
575
+ arguments = at?(:LPAREN) ? parse_arguments : nil
576
+ directives = at?(:DIR_SIGN) ? parse_directives : nil
577
+ selection_set = at?(:LCURLY) ? self.selection_set : nil
578
+
579
+ Nodes::Field.new(pos: loc, field_alias: field_alias, name: name, arguments: arguments, directives: directives, selections: selection_set, filename: @filename, source: self)
580
+ end
581
+ end
582
+ expect_token(:RCURLY)
583
+ selections
584
+ end
1916
585
 
1917
- module_eval(<<'.,.,', 'parser.y', 407)
1918
- def _reduce_172(val, _values, result)
1919
- result = [make_node(:TypeName, name: val[0], position_source: val[0])]
1920
- result
1921
- end
1922
- .,.,
586
+ def parse_name
587
+ case token_name
588
+ when :IDENTIFIER
589
+ expect_token_value(:IDENTIFIER)
590
+ when :SCHEMA
591
+ advance_token
592
+ "schema"
593
+ when :SCALAR
594
+ advance_token
595
+ "scalar"
596
+ when :IMPLEMENTS
597
+ advance_token
598
+ "implements"
599
+ when :INTERFACE
600
+ advance_token
601
+ "interface"
602
+ when :UNION
603
+ advance_token
604
+ "union"
605
+ when :ENUM
606
+ advance_token
607
+ "enum"
608
+ when :INPUT
609
+ advance_token
610
+ "input"
611
+ when :DIRECTIVE
612
+ advance_token
613
+ "directive"
614
+ when :TYPE
615
+ advance_token
616
+ "type"
617
+ when :QUERY
618
+ advance_token
619
+ "query"
620
+ when :MUTATION
621
+ advance_token
622
+ "mutation"
623
+ when :SUBSCRIPTION
624
+ advance_token
625
+ "subscription"
626
+ when :TRUE
627
+ advance_token
628
+ "true"
629
+ when :FALSE
630
+ advance_token
631
+ "false"
632
+ when :FRAGMENT
633
+ advance_token
634
+ "fragment"
635
+ when :REPEATABLE
636
+ advance_token
637
+ "repeatable"
638
+ when :NULL
639
+ advance_token
640
+ "null"
641
+ when :ON
642
+ advance_token
643
+ "on"
644
+ when :EXTEND
645
+ advance_token
646
+ "extend"
647
+ else
648
+ expect_token(:NAME)
649
+ end
650
+ end
1923
651
 
1924
- module_eval(<<'.,.,', 'parser.y', 408)
1925
- def _reduce_173(val, _values, result)
1926
- val[0] << make_node(:TypeName, name: val[2], position_source: val[2])
1927
- result
1928
- end
1929
- .,.,
652
+ def parse_name_without_on
653
+ if at?(:ON)
654
+ expect_token(:IDENTIFIER)
655
+ else
656
+ parse_name
657
+ end
658
+ end
1930
659
 
1931
- module_eval(<<'.,.,', 'parser.y', 412)
1932
- def _reduce_174(val, _values, result)
1933
- result = make_node(:UnionTypeDefinition, name: val[2], directives: val[3], types: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
660
+ def parse_type_name
661
+ TypeName.new(pos: pos, name: parse_name, filename: @filename, source: self)
662
+ end
1934
663
 
1935
- result
1936
- end
1937
- .,.,
664
+ def parse_directives
665
+ if at?(:DIR_SIGN)
666
+ dirs = []
667
+ while at?(:DIR_SIGN)
668
+ loc = pos
669
+ advance_token
670
+ name = parse_name
671
+ arguments = parse_arguments
672
+
673
+ dirs << Nodes::Directive.new(pos: loc, name: name, arguments: arguments, filename: @filename, source: self)
674
+ end
675
+ dirs
676
+ else
677
+ EMPTY_ARRAY
678
+ end
679
+ end
1938
680
 
1939
- module_eval(<<'.,.,', 'parser.y', 417)
1940
- def _reduce_175(val, _values, result)
1941
- result = make_node(:EnumTypeDefinition, name: val[2], directives: val[3], values: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
681
+ def parse_arguments
682
+ if at?(:LPAREN)
683
+ advance_token
684
+ args = []
685
+ while !at?(:RPAREN)
686
+ loc = pos
687
+ name = parse_name
688
+ expect_token(:COLON)
689
+ args << Nodes::Argument.new(pos: loc, name: name, value: value, filename: @filename, source: self)
690
+ end
691
+ if args.empty?
692
+ expect_token(:ARGUMENT_NAME) # At least one argument is required
693
+ end
694
+ expect_token(:RPAREN)
695
+ args
696
+ else
697
+ EMPTY_ARRAY
698
+ end
699
+ end
1942
700
 
1943
- result
1944
- end
1945
- .,.,
701
+ def string_value
702
+ token_value = @lexer.string_value
703
+ expect_token :STRING
704
+ token_value
705
+ end
1946
706
 
1947
- module_eval(<<'.,.,', 'parser.y', 422)
1948
- def _reduce_176(val, _values, result)
1949
- result = make_node(:InputObjectTypeDefinition, name: val[2], directives: val[3], fields: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
707
+ def value
708
+ case token_name
709
+ when :INT
710
+ expect_token_value(:INT).to_i
711
+ when :FLOAT
712
+ expect_token_value(:FLOAT).to_f
713
+ when :STRING
714
+ string_value
715
+ when :TRUE
716
+ advance_token
717
+ true
718
+ when :FALSE
719
+ advance_token
720
+ false
721
+ when :NULL
722
+ advance_token
723
+ NullValue.new(pos: pos, name: "null", filename: @filename, source: self)
724
+ when :IDENTIFIER
725
+ Nodes::Enum.new(pos: pos, name: expect_token_value(:IDENTIFIER), filename: @filename, source: self)
726
+ when :LBRACKET
727
+ advance_token
728
+ list = []
729
+ while !at?(:RBRACKET)
730
+ list << value
731
+ end
732
+ expect_token(:RBRACKET)
733
+ list
734
+ when :LCURLY
735
+ start = pos
736
+ advance_token
737
+ args = []
738
+ while !at?(:RCURLY)
739
+ loc = pos
740
+ n = parse_name
741
+ expect_token(:COLON)
742
+ args << Argument.new(pos: loc, name: n, value: value, filename: @filename, source: self)
743
+ end
744
+ expect_token(:RCURLY)
745
+ InputObject.new(pos: start, arguments: args, filename: @filename, source: self)
746
+ when :VAR_SIGN
747
+ loc = pos
748
+ advance_token
749
+ VariableIdentifier.new(pos: loc, name: parse_name, filename: @filename, source: self)
750
+ when :SCHEMA
751
+ advance_token
752
+ Nodes::Enum.new(pos: pos, name: "schema", filename: @filename, source: self)
753
+ when :SCALAR
754
+ advance_token
755
+ Nodes::Enum.new(pos: pos, name: "scalar", filename: @filename, source: self)
756
+ when :IMPLEMENTS
757
+ advance_token
758
+ Nodes::Enum.new(pos: pos, name: "implements", filename: @filename, source: self)
759
+ when :INTERFACE
760
+ advance_token
761
+ Nodes::Enum.new(pos: pos, name: "interface", filename: @filename, source: self)
762
+ when :UNION
763
+ advance_token
764
+ Nodes::Enum.new(pos: pos, name: "union", filename: @filename, source: self)
765
+ when :ENUM
766
+ advance_token
767
+ Nodes::Enum.new(pos: pos, name: "enum", filename: @filename, source: self)
768
+ when :INPUT
769
+ advance_token
770
+ Nodes::Enum.new(pos: pos, name: "input", filename: @filename, source: self)
771
+ when :DIRECTIVE
772
+ advance_token
773
+ Nodes::Enum.new(pos: pos, name: "directive", filename: @filename, source: self)
774
+ when :TYPE
775
+ advance_token
776
+ Nodes::Enum.new(pos: pos, name: "type", filename: @filename, source: self)
777
+ when :QUERY
778
+ advance_token
779
+ Nodes::Enum.new(pos: pos, name: "query", filename: @filename, source: self)
780
+ when :MUTATION
781
+ advance_token
782
+ Nodes::Enum.new(pos: pos, name: "mutation", filename: @filename, source: self)
783
+ when :SUBSCRIPTION
784
+ advance_token
785
+ Nodes::Enum.new(pos: pos, name: "subscription", filename: @filename, source: self)
786
+ when :FRAGMENT
787
+ advance_token
788
+ Nodes::Enum.new(pos: pos, name: "fragment", filename: @filename, source: self)
789
+ when :REPEATABLE
790
+ advance_token
791
+ Nodes::Enum.new(pos: pos, name: "repeatable", filename: @filename, source: self)
792
+ when :ON
793
+ advance_token
794
+ Nodes::Enum.new(pos: pos, name: "on", filename: @filename, source: self)
795
+ when :EXTEND
796
+ advance_token
797
+ Nodes::Enum.new(pos: pos, name: "extend", filename: @filename, source: self)
798
+ else
799
+ expect_token(:VALUE)
800
+ end
801
+ end
1950
802
 
1951
- result
1952
- end
1953
- .,.,
803
+ def at?(expected_token_name)
804
+ @token_name == expected_token_name
805
+ end
1954
806
 
1955
- module_eval(<<'.,.,', 'parser.y', 427)
1956
- def _reduce_177(val, _values, result)
1957
- result = make_node(:DirectiveDefinition, name: val[3], arguments: val[4], locations: val[7], repeatable: !!val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
807
+ def expect_token(expected_token_name)
808
+ unless @token_name == expected_token_name
809
+ raise_parse_error("Expected #{expected_token_name}, actual: #{token_name || "(none)"} (#{debug_token_value.inspect})")
810
+ end
811
+ advance_token
812
+ end
1958
813
 
1959
- result
1960
- end
1961
- .,.,
814
+ def expect_one_of(token_names)
815
+ raise_parse_error("Expected one of #{token_names.join(", ")}, actual: #{token_name || "NOTHING"} (#{debug_token_value.inspect})")
816
+ end
1962
817
 
1963
- # reduce 178 omitted
818
+ def raise_parse_error(message)
819
+ message += " at [#{@lexer.line_number}, #{@lexer.column_number}]"
820
+ raise GraphQL::ParseError.new(
821
+ message,
822
+ @lexer.line_number,
823
+ @lexer.column_number,
824
+ @graphql_str,
825
+ filename: @filename,
826
+ )
1964
827
 
1965
- # reduce 179 omitted
828
+ end
1966
829
 
1967
- module_eval(<<'.,.,', 'parser.y', 435)
1968
- def _reduce_180(val, _values, result)
1969
- result = [make_node(:DirectiveLocation, name: val[0].to_s, position_source: val[0])]
1970
- result
1971
- end
1972
- .,.,
830
+ # Only use when we care about the expected token's value
831
+ def expect_token_value(tok)
832
+ token_value = @lexer.token_value
833
+ if @dedup_identifiers
834
+ token_value = -token_value
835
+ end
836
+ expect_token(tok)
837
+ token_value
838
+ end
1973
839
 
1974
- module_eval(<<'.,.,', 'parser.y', 436)
1975
- def _reduce_181(val, _values, result)
1976
- val[0] << make_node(:DirectiveLocation, name: val[2].to_s, position_source: val[2])
1977
- result
840
+ # token_value works for when the scanner matched something
841
+ # which is usually fine and it's good for it to be fast at that.
842
+ def debug_token_value
843
+ @lexer.debug_token_value(token_name)
844
+ end
845
+ class SchemaParser < Parser
846
+ def initialize(*args, **kwargs)
847
+ super
848
+ @dedup_identifiers = true
849
+ end
850
+ end
851
+ end
1978
852
  end
1979
- .,.,
1980
-
1981
- def _reduce_none(val, _values, result)
1982
- val[0]
1983
853
  end
1984
-
1985
- end # class Parser
1986
- end # module Language
1987
- end # module GraphQL