graphql 1.12.12 → 2.4.8

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