datadog-ruby_core_source 3.3.6 → 3.3.7

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 (374) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.datadog.md +7 -1
  3. data/datadog-ruby_core_source.gemspec +6 -1
  4. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/id.h +7 -0
  5. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/array.h +1 -0
  6. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/basic_operators.h +2 -0
  7. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/bits.h +82 -0
  8. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/class.h +1 -1
  9. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/encoding.h +2 -0
  10. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/error.h +2 -0
  11. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/fixnum.h +1 -0
  12. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/gc.h +23 -28
  13. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/hash.h +1 -0
  14. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/imemo.h +7 -1
  15. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/io.h +4 -1
  16. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/parse.h +14 -2
  17. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/ractor.h +4 -0
  18. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/sanitizers.h +36 -3
  19. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/string.h +34 -18
  20. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/thread.h +29 -0
  21. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/vm.h +3 -3
  22. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/method.h +1 -0
  23. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/ast.h +2146 -453
  24. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/defines.h +44 -7
  25. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/diagnostic.h +24 -6
  26. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/extension.h +2 -2
  27. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/node.h +0 -21
  28. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/options.h +94 -3
  29. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/parser.h +82 -40
  30. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/prism.h +47 -11
  31. data/lib/datadog/ruby_core_source/ruby-3.4.0-rc1/prism/regexp.h +43 -0
  32. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/static_literals.h +3 -2
  33. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_char.h +1 -2
  34. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_constant_pool.h +0 -8
  35. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_integer.h +22 -15
  36. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_newline_list.h +11 -0
  37. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_string.h +28 -12
  38. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/version.h +3 -3
  39. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism_compile.h +23 -12
  40. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/ractor_core.h +8 -20
  41. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/rubyparser.h +168 -249
  42. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/shape.h +2 -1
  43. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/thread_pthread.h +26 -25
  44. data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/vm_core.h +62 -48
  45. data/lib/datadog/ruby_core_source/version.rb +1 -1
  46. data/lib/datadog/ruby_core_source.rb +14 -1
  47. metadata +109 -372
  48. data/.github/workflows/publish.yml +0 -18
  49. data/.gitignore +0 -7
  50. data/.idea/vcs.xml +0 -28
  51. data/CHANGELOG.md +0 -284
  52. data/CONTRIBUTING.md +0 -2
  53. data/Gemfile +0 -4
  54. data/Rakefile +0 -73
  55. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/addr2line.h +0 -21
  56. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/constant.h +0 -50
  57. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/debug_counter.h +0 -109
  58. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/dln.h +0 -51
  59. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/encindex.h +0 -69
  60. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/eval_intern.h +0 -334
  61. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/gc.h +0 -116
  62. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/id_table.h +0 -31
  63. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/insns.inc +0 -217
  64. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/insns_info.inc +0 -1570
  65. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/known_errors.inc +0 -746
  66. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/node_name.inc +0 -198
  67. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/opt_sc.inc +0 -1601
  68. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/optinsn.inc +0 -103
  69. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/optunifs.inc +0 -61
  70. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/parse.h +0 -206
  71. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/probes_helper.h +0 -43
  72. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/regenc.h +0 -254
  73. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/regint.h +0 -938
  74. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/regparse.h +0 -370
  75. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/revision.h +0 -1
  76. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/siphash.h +0 -48
  77. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/symbol.h +0 -108
  78. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/thread_win32.h +0 -36
  79. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/timev.h +0 -42
  80. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/transcode_data.h +0 -139
  81. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/version.h +0 -73
  82. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/vm.inc +0 -3667
  83. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/vm_call_iseq_optimized.inc +0 -213
  84. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/vm_exec.h +0 -192
  85. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/vm_insnhelper.h +0 -255
  86. data/lib/datadog/ruby_core_source/ruby-2.5.0-p0/vmtc.inc +0 -214
  87. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/addr2line.h +0 -21
  88. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/constant.h +0 -51
  89. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/debug_counter.h +0 -109
  90. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/dln.h +0 -51
  91. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/encindex.h +0 -69
  92. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/eval_intern.h +0 -334
  93. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/gc.h +0 -116
  94. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/id_table.h +0 -31
  95. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/insns.inc +0 -217
  96. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/insns_info.inc +0 -1570
  97. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/known_errors.inc +0 -746
  98. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/node_name.inc +0 -198
  99. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/opt_sc.inc +0 -1601
  100. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/optinsn.inc +0 -103
  101. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/optunifs.inc +0 -61
  102. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/parse.h +0 -206
  103. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/probes_helper.h +0 -43
  104. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/regenc.h +0 -254
  105. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/regint.h +0 -938
  106. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/regparse.h +0 -370
  107. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/revision.h +0 -1
  108. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/siphash.h +0 -48
  109. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/symbol.h +0 -108
  110. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/thread_win32.h +0 -36
  111. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/timev.h +0 -42
  112. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/transcode_data.h +0 -139
  113. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/version.h +0 -73
  114. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/vm.inc +0 -3667
  115. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/vm_call_iseq_optimized.inc +0 -213
  116. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/vm_exec.h +0 -192
  117. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/vm_insnhelper.h +0 -255
  118. data/lib/datadog/ruby_core_source/ruby-2.5.1-p57/vmtc.inc +0 -214
  119. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/addr2line.h +0 -21
  120. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/constant.h +0 -51
  121. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/debug_counter.h +0 -109
  122. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/dln.h +0 -51
  123. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/encindex.h +0 -69
  124. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/eval_intern.h +0 -334
  125. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/gc.h +0 -116
  126. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/id_table.h +0 -31
  127. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/insns.inc +0 -217
  128. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/insns_info.inc +0 -1570
  129. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/known_errors.inc +0 -746
  130. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/node_name.inc +0 -198
  131. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/opt_sc.inc +0 -1601
  132. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/optinsn.inc +0 -103
  133. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/optunifs.inc +0 -61
  134. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/parse.h +0 -200
  135. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/probes_helper.h +0 -43
  136. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/regenc.h +0 -254
  137. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/regint.h +0 -938
  138. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/regparse.h +0 -370
  139. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/revision.h +0 -1
  140. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/siphash.h +0 -48
  141. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/symbol.h +0 -108
  142. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/thread_win32.h +0 -36
  143. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/timev.h +0 -42
  144. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/transcode_data.h +0 -139
  145. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/version.h +0 -73
  146. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/vm.inc +0 -3667
  147. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/vm_call_iseq_optimized.inc +0 -213
  148. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/vm_exec.h +0 -192
  149. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/vm_insnhelper.h +0 -255
  150. data/lib/datadog/ruby_core_source/ruby-2.5.4-p155/vmtc.inc +0 -214
  151. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/addr2line.h +0 -22
  152. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/builtin.h +0 -117
  153. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/constant.h +0 -53
  154. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/darray.h +0 -246
  155. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/debug_counter.h +0 -423
  156. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/dln.h +0 -32
  157. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/encindex.h +0 -70
  158. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/eval_intern.h +0 -343
  159. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/hrtime.h +0 -227
  160. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/insns.inc +0 -251
  161. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/insns_info.inc +0 -9215
  162. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/known_errors.inc +0 -791
  163. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/node_name.inc +0 -212
  164. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/optinsn.inc +0 -128
  165. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/optunifs.inc +0 -43
  166. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/parse.h +0 -243
  167. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/parser_bits.h +0 -564
  168. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/parser_node.h +0 -32
  169. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/probes_helper.h +0 -42
  170. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/regenc.h +0 -254
  171. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/regint.h +0 -1004
  172. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/regparse.h +0 -371
  173. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/revision.h +0 -5
  174. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/rjit.h +0 -101
  175. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/rjit_c.h +0 -164
  176. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/siphash.h +0 -48
  177. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/symbol.h +0 -118
  178. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/thread_win32.h +0 -58
  179. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/timev.h +0 -58
  180. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/transcode_data.h +0 -138
  181. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/variable.h +0 -39
  182. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/version.h +0 -69
  183. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/vm.inc +0 -5436
  184. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/vm_call_iseq_optimized.inc +0 -244
  185. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/vm_callinfo.h +0 -619
  186. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/vm_exec.h +0 -199
  187. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/vm_insnhelper.h +0 -261
  188. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/vm_sync.h +0 -137
  189. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/vmtc.inc +0 -245
  190. data/lib/datadog/ruby_core_source/ruby-3.3.0-p0/yjit.h +0 -72
  191. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/addr2line.h +0 -22
  192. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/builtin.h +0 -117
  193. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/constant.h +0 -53
  194. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/darray.h +0 -246
  195. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/debug_counter.h +0 -423
  196. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/dln.h +0 -32
  197. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/encindex.h +0 -70
  198. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/eval_intern.h +0 -343
  199. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/hrtime.h +0 -227
  200. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/insns.inc +0 -251
  201. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/insns_info.inc +0 -9215
  202. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/known_errors.inc +0 -791
  203. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/node_name.inc +0 -212
  204. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/optinsn.inc +0 -128
  205. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/optunifs.inc +0 -43
  206. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/parse.h +0 -243
  207. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/parser_bits.h +0 -564
  208. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/parser_node.h +0 -32
  209. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/probes_helper.h +0 -42
  210. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/regenc.h +0 -254
  211. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/regint.h +0 -1006
  212. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/regparse.h +0 -371
  213. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/revision.h +0 -5
  214. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/rjit.h +0 -101
  215. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/rjit_c.h +0 -164
  216. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/siphash.h +0 -48
  217. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/symbol.h +0 -118
  218. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/thread_win32.h +0 -58
  219. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/timev.h +0 -58
  220. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/transcode_data.h +0 -138
  221. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/variable.h +0 -39
  222. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/version.h +0 -69
  223. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/vm.inc +0 -5436
  224. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/vm_call_iseq_optimized.inc +0 -244
  225. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/vm_callinfo.h +0 -614
  226. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/vm_exec.h +0 -199
  227. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/vm_insnhelper.h +0 -261
  228. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/vm_sync.h +0 -137
  229. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/vmtc.inc +0 -245
  230. data/lib/datadog/ruby_core_source/ruby-3.3.5-p100/yjit.h +0 -72
  231. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/addr2line.h +0 -22
  232. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/builtin.h +0 -119
  233. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/constant.h +0 -53
  234. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/darray.h +0 -191
  235. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/debug_counter.h +0 -423
  236. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/dln.h +0 -34
  237. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/encindex.h +0 -70
  238. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/eval_intern.h +0 -324
  239. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/hrtime.h +0 -237
  240. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/insns.inc +0 -259
  241. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/insns_info.inc +0 -9530
  242. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/known_errors.inc +0 -1419
  243. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/node_name.inc +0 -224
  244. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/optinsn.inc +0 -128
  245. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/optunifs.inc +0 -43
  246. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/parse.h +0 -243
  247. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/parser_bits.h +0 -564
  248. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/parser_node.h +0 -32
  249. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/prism/regexp.h +0 -33
  250. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string_list.h +0 -44
  251. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/probes_helper.h +0 -42
  252. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/regenc.h +0 -254
  253. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/regint.h +0 -1010
  254. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/regparse.h +0 -371
  255. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/revision.h +0 -5
  256. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/rjit.h +0 -101
  257. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/rjit_c.h +0 -165
  258. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/siphash.h +0 -48
  259. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/symbol.h +0 -118
  260. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/thread_win32.h +0 -58
  261. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/timev.h +0 -58
  262. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/transcode_data.h +0 -138
  263. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/variable.h +0 -39
  264. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/version.h +0 -69
  265. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/vm.inc +0 -5643
  266. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/vm_call_iseq_optimized.inc +0 -244
  267. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/vm_callinfo.h +0 -605
  268. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/vm_exec.h +0 -199
  269. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/vm_insnhelper.h +0 -272
  270. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/vm_sync.h +0 -137
  271. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/vmtc.inc +0 -253
  272. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview1/yjit.h +0 -79
  273. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/addr2line.h +0 -22
  274. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/builtin.h +0 -119
  275. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/constant.h +0 -53
  276. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/darray.h +0 -209
  277. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/debug_counter.h +0 -423
  278. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/dln.h +0 -32
  279. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/encindex.h +0 -70
  280. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/eval_intern.h +0 -324
  281. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/hrtime.h +0 -237
  282. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/insns.inc +0 -265
  283. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/insns_info.inc +0 -9902
  284. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/known_errors.inc +0 -1419
  285. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/node_name.inc +0 -224
  286. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/optinsn.inc +0 -128
  287. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/optunifs.inc +0 -43
  288. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/parse.h +0 -244
  289. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/parser_bits.h +0 -564
  290. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/parser_node.h +0 -32
  291. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/probes_helper.h +0 -42
  292. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/regenc.h +0 -254
  293. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/regint.h +0 -1006
  294. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/regparse.h +0 -371
  295. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/revision.h +0 -5
  296. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/rjit.h +0 -101
  297. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/rjit_c.h +0 -165
  298. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/siphash.h +0 -48
  299. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/symbol.h +0 -123
  300. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/thread_win32.h +0 -58
  301. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/timev.h +0 -58
  302. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/transcode_data.h +0 -138
  303. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/variable.h +0 -39
  304. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/version.h +0 -69
  305. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/vm.inc +0 -5840
  306. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/vm_call_iseq_optimized.inc +0 -244
  307. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/vm_callinfo.h +0 -627
  308. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/vm_exec.h +0 -199
  309. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/vm_insnhelper.h +0 -277
  310. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/vm_sync.h +0 -137
  311. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/vmtc.inc +0 -259
  312. data/lib/datadog/ruby_core_source/ruby-3.4.0-preview2/yjit.h +0 -79
  313. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/ccan/build_assert/build_assert.h +0 -0
  314. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/ccan/check_type/check_type.h +0 -0
  315. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/ccan/container_of/container_of.h +0 -0
  316. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/ccan/list/list.h +0 -0
  317. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/ccan/str/str.h +0 -0
  318. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/id_table.h +0 -0
  319. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/bignum.h +0 -0
  320. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/cmdlineopt.h +0 -0
  321. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/compar.h +0 -0
  322. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/compile.h +0 -0
  323. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/compilers.h +0 -0
  324. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/complex.h +0 -0
  325. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/cont.h +0 -0
  326. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/dir.h +0 -0
  327. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/enc.h +0 -0
  328. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/enum.h +0 -0
  329. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/enumerator.h +0 -0
  330. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/eval.h +0 -0
  331. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/file.h +0 -0
  332. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/inits.h +0 -0
  333. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/load.h +0 -0
  334. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/loadpath.h +0 -0
  335. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/math.h +0 -0
  336. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/missing.h +0 -0
  337. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/numeric.h +0 -0
  338. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/object.h +0 -0
  339. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/proc.h +0 -0
  340. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/process.h +0 -0
  341. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/random.h +0 -0
  342. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/range.h +0 -0
  343. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/rational.h +0 -0
  344. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/re.h +0 -0
  345. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/ruby_parser.h +0 -0
  346. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/serial.h +0 -0
  347. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/signal.h +0 -0
  348. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/st.h +0 -0
  349. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/static_assert.h +0 -0
  350. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/struct.h +0 -0
  351. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/symbol.h +0 -0
  352. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/time.h +0 -0
  353. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/transcode.h +0 -0
  354. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/util.h +0 -0
  355. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/variable.h +0 -0
  356. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal/warnings.h +0 -0
  357. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/internal.h +0 -0
  358. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/iseq.h +0 -0
  359. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/node.h +0 -0
  360. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/parser_st.h +0 -0
  361. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/parser_value.h +0 -0
  362. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/encoding.h +0 -0
  363. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/pack.h +0 -0
  364. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/prettyprint.h +0 -0
  365. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_buffer.h +0 -0
  366. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_list.h +0 -0
  367. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_memchr.h +0 -0
  368. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_strncasecmp.h +0 -0
  369. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/prism/util/pm_strpbrk.h +0 -0
  370. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/ruby_assert.h +0 -0
  371. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/ruby_atomic.h +0 -0
  372. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/thread_none.h +0 -0
  373. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/vm_debug.h +0 -0
  374. /data/lib/datadog/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-rc1}/vm_opts.h +0 -0
@@ -25,6 +25,15 @@
25
25
  #define __STDC_FORMAT_MACROS
26
26
  #include <inttypes.h>
27
27
 
28
+ /**
29
+ * When we are parsing using recursive descent, we want to protect against
30
+ * malicious payloads that could attempt to crash our parser. We do this by
31
+ * specifying a maximum depth to which we are allowed to recurse.
32
+ */
33
+ #ifndef PRISM_DEPTH_MAXIMUM
34
+ #define PRISM_DEPTH_MAXIMUM 1000
35
+ #endif
36
+
28
37
  /**
29
38
  * By default, we compile with -fvisibility=hidden. When this is enabled, we
30
39
  * need to mark certain functions as being publically-visible. This macro does
@@ -119,14 +128,24 @@
119
128
  #endif
120
129
 
121
130
  /**
122
- * isinf on Windows is defined as accepting a float, but on POSIX systems it
123
- * accepts a float, a double, or a long double. We want to mirror this behavior
124
- * on windows.
131
+ * If PRISM_HAS_NO_FILESYSTEM is defined, then we want to exclude all filesystem
132
+ * related code from the library. All filesystem related code should be guarded
133
+ * by PRISM_HAS_FILESYSTEM.
125
134
  */
126
- #ifdef _WIN32
127
- # include <float.h>
128
- # undef isinf
129
- # define isinf(x) (sizeof(x) == sizeof(float) ? !_finitef(x) : !_finite(x))
135
+ #ifndef PRISM_HAS_NO_FILESYSTEM
136
+ # define PRISM_HAS_FILESYSTEM
137
+ #endif
138
+
139
+ /**
140
+ * isinf on POSIX systems it accepts a float, a double, or a long double.
141
+ * But mingw didn't provide an isinf macro, only an isinf function that only
142
+ * accepts floats, so we need to use _finite instead.
143
+ */
144
+ #ifdef __MINGW64__
145
+ #include <float.h>
146
+ #define PRISM_ISINF(x) (!_finite(x))
147
+ #else
148
+ #define PRISM_ISINF(x) isinf(x)
130
149
  #endif
131
150
 
132
151
  /**
@@ -203,4 +222,22 @@
203
222
  #define PRISM_ENCODING_EXCLUDE_FULL
204
223
  #endif
205
224
 
225
+ /**
226
+ * Support PRISM_LIKELY and PRISM_UNLIKELY to help the compiler optimize its
227
+ * branch predication.
228
+ */
229
+ #if defined(__GNUC__) || defined(__clang__)
230
+ /** The compiler should predicate that this branch will be taken. */
231
+ #define PRISM_LIKELY(x) __builtin_expect(!!(x), 1)
232
+
233
+ /** The compiler should predicate that this branch will not be taken. */
234
+ #define PRISM_UNLIKELY(x) __builtin_expect(!!(x), 0)
235
+ #else
236
+ /** Void because this platform does not support branch prediction hints. */
237
+ #define PRISM_LIKELY(x) (x)
238
+
239
+ /** Void because this platform does not support branch prediction hints. */
240
+ #define PRISM_UNLIKELY(x) (x)
241
+ #endif
242
+
206
243
  #endif
@@ -1,10 +1,10 @@
1
- /******************************************************************************/
1
+ /*----------------------------------------------------------------------------*/
2
2
  /* This file is generated by the templates/template.rb script and should not */
3
3
  /* be modified manually. See */
4
4
  /* templates/include/prism/diagnostic.h.erb */
5
5
  /* if you are looking to modify the */
6
6
  /* template */
7
- /******************************************************************************/
7
+ /*----------------------------------------------------------------------------*/
8
8
 
9
9
  /**
10
10
  * @file diagnostic.h
@@ -44,7 +44,6 @@ typedef enum {
44
44
  PM_ERR_ARGUMENT_FORMAL_GLOBAL,
45
45
  PM_ERR_ARGUMENT_FORMAL_IVAR,
46
46
  PM_ERR_ARGUMENT_FORWARDING_UNBOUND,
47
- PM_ERR_ARGUMENT_IN,
48
47
  PM_ERR_ARGUMENT_NO_FORWARDING_AMPERSAND,
49
48
  PM_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES,
50
49
  PM_ERR_ARGUMENT_NO_FORWARDING_STAR,
@@ -110,8 +109,10 @@ typedef enum {
110
109
  PM_ERR_ESCAPE_INVALID_META_REPEAT,
111
110
  PM_ERR_ESCAPE_INVALID_UNICODE,
112
111
  PM_ERR_ESCAPE_INVALID_UNICODE_CM_FLAGS,
112
+ PM_ERR_ESCAPE_INVALID_UNICODE_LIST,
113
113
  PM_ERR_ESCAPE_INVALID_UNICODE_LITERAL,
114
114
  PM_ERR_ESCAPE_INVALID_UNICODE_LONG,
115
+ PM_ERR_ESCAPE_INVALID_UNICODE_SHORT,
115
116
  PM_ERR_ESCAPE_INVALID_UNICODE_TERM,
116
117
  PM_ERR_EXPECT_ARGUMENT,
117
118
  PM_ERR_EXPECT_EOL_AFTER_STATEMENT,
@@ -126,6 +127,7 @@ typedef enum {
126
127
  PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT,
127
128
  PM_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH,
128
129
  PM_ERR_EXPECT_EXPRESSION_AFTER_STAR,
130
+ PM_ERR_EXPECT_FOR_DELIMITER,
129
131
  PM_ERR_EXPECT_IDENT_REQ_PARAMETER,
130
132
  PM_ERR_EXPECT_IN_DELIMITER,
131
133
  PM_ERR_EXPECT_LPAREN_REQ_PARAMETER,
@@ -134,6 +136,7 @@ typedef enum {
134
136
  PM_ERR_EXPECT_RPAREN,
135
137
  PM_ERR_EXPECT_RPAREN_AFTER_MULTI,
136
138
  PM_ERR_EXPECT_RPAREN_REQ_PARAMETER,
139
+ PM_ERR_EXPECT_SINGLETON_CLASS_DELIMITER,
137
140
  PM_ERR_EXPECT_STRING_CONTENT,
138
141
  PM_ERR_EXPECT_WHEN_DELIMITER,
139
142
  PM_ERR_EXPRESSION_BARE_HASH,
@@ -143,6 +146,7 @@ typedef enum {
143
146
  PM_ERR_EXPRESSION_NOT_WRITABLE_FILE,
144
147
  PM_ERR_EXPRESSION_NOT_WRITABLE_LINE,
145
148
  PM_ERR_EXPRESSION_NOT_WRITABLE_NIL,
149
+ PM_ERR_EXPRESSION_NOT_WRITABLE_NUMBERED,
146
150
  PM_ERR_EXPRESSION_NOT_WRITABLE_SELF,
147
151
  PM_ERR_EXPRESSION_NOT_WRITABLE_TRUE,
148
152
  PM_ERR_FLOAT_PARSE,
@@ -166,6 +170,7 @@ typedef enum {
166
170
  PM_ERR_INSTANCE_VARIABLE_BARE,
167
171
  PM_ERR_INVALID_BLOCK_EXIT,
168
172
  PM_ERR_INVALID_CHARACTER,
173
+ PM_ERR_INVALID_COMMA,
169
174
  PM_ERR_INVALID_ENCODING_MAGIC_COMMENT,
170
175
  PM_ERR_INVALID_ESCAPE_CHARACTER,
171
176
  PM_ERR_INVALID_FLOAT_EXPONENT,
@@ -182,6 +187,7 @@ typedef enum {
182
187
  PM_ERR_INVALID_NUMBER_UNDERSCORE_INNER,
183
188
  PM_ERR_INVALID_NUMBER_UNDERSCORE_TRAILING,
184
189
  PM_ERR_INVALID_PERCENT,
190
+ PM_ERR_INVALID_PERCENT_EOF,
185
191
  PM_ERR_INVALID_PRINTABLE_CHARACTER,
186
192
  PM_ERR_INVALID_RETRY_AFTER_ELSE,
187
193
  PM_ERR_INVALID_RETRY_AFTER_ENSURE,
@@ -210,12 +216,15 @@ typedef enum {
210
216
  PM_ERR_MODULE_TERM,
211
217
  PM_ERR_MULTI_ASSIGN_MULTI_SPLATS,
212
218
  PM_ERR_MULTI_ASSIGN_UNEXPECTED_REST,
219
+ PM_ERR_NESTING_TOO_DEEP,
213
220
  PM_ERR_NO_LOCAL_VARIABLE,
221
+ PM_ERR_NON_ASSOCIATIVE_OPERATOR,
214
222
  PM_ERR_NOT_EXPRESSION,
215
223
  PM_ERR_NUMBER_LITERAL_UNDERSCORE,
224
+ PM_ERR_NUMBERED_PARAMETER_INNER_BLOCK,
216
225
  PM_ERR_NUMBERED_PARAMETER_IT,
217
226
  PM_ERR_NUMBERED_PARAMETER_ORDINARY,
218
- PM_ERR_NUMBERED_PARAMETER_OUTER_SCOPE,
227
+ PM_ERR_NUMBERED_PARAMETER_OUTER_BLOCK,
219
228
  PM_ERR_OPERATOR_MULTI_ASSIGN,
220
229
  PM_ERR_OPERATOR_WRITE_ARGUMENTS,
221
230
  PM_ERR_OPERATOR_WRITE_BLOCK,
@@ -232,8 +241,9 @@ typedef enum {
232
241
  PM_ERR_PARAMETER_SPLAT_MULTI,
233
242
  PM_ERR_PARAMETER_STAR,
234
243
  PM_ERR_PARAMETER_UNEXPECTED_FWD,
235
- PM_ERR_PARAMETER_WILD_LOOSE_COMMA,
236
244
  PM_ERR_PARAMETER_UNEXPECTED_NO_KW,
245
+ PM_ERR_PARAMETER_WILD_LOOSE_COMMA,
246
+ PM_ERR_PATTERN_ARRAY_MULTIPLE_RESTS,
237
247
  PM_ERR_PATTERN_CAPTURE_DUPLICATE,
238
248
  PM_ERR_PATTERN_EXPRESSION_AFTER_BRACKET,
239
249
  PM_ERR_PATTERN_EXPRESSION_AFTER_COMMA,
@@ -245,6 +255,7 @@ typedef enum {
245
255
  PM_ERR_PATTERN_EXPRESSION_AFTER_PIPE,
246
256
  PM_ERR_PATTERN_EXPRESSION_AFTER_RANGE,
247
257
  PM_ERR_PATTERN_EXPRESSION_AFTER_REST,
258
+ PM_ERR_PATTERN_FIND_MISSING_INNER,
248
259
  PM_ERR_PATTERN_HASH_IMPLICIT,
249
260
  PM_ERR_PATTERN_HASH_KEY,
250
261
  PM_ERR_PATTERN_HASH_KEY_DUPLICATE,
@@ -262,6 +273,7 @@ typedef enum {
262
273
  PM_ERR_REGEXP_INCOMPAT_CHAR_ENCODING,
263
274
  PM_ERR_REGEXP_INVALID_UNICODE_RANGE,
264
275
  PM_ERR_REGEXP_NON_ESCAPED_MBC,
276
+ PM_ERR_REGEXP_PARSE_ERROR,
265
277
  PM_ERR_REGEXP_TERM,
266
278
  PM_ERR_REGEXP_UNKNOWN_OPTIONS,
267
279
  PM_ERR_REGEXP_UTF8_CHAR_NON_UTF8_REGEXP,
@@ -286,11 +298,15 @@ typedef enum {
286
298
  PM_ERR_TERNARY_COLON,
287
299
  PM_ERR_TERNARY_EXPRESSION_FALSE,
288
300
  PM_ERR_TERNARY_EXPRESSION_TRUE,
301
+ PM_ERR_UNARY_DISALLOWED,
289
302
  PM_ERR_UNARY_RECEIVER,
290
303
  PM_ERR_UNDEF_ARGUMENT,
291
304
  PM_ERR_UNEXPECTED_BLOCK_ARGUMENT,
292
305
  PM_ERR_UNEXPECTED_INDEX_BLOCK,
293
306
  PM_ERR_UNEXPECTED_INDEX_KEYWORDS,
307
+ PM_ERR_UNEXPECTED_LABEL,
308
+ PM_ERR_UNEXPECTED_MULTI_WRITE,
309
+ PM_ERR_UNEXPECTED_RANGE_OPERATOR,
294
310
  PM_ERR_UNEXPECTED_SAFE_NAVIGATION,
295
311
  PM_ERR_UNEXPECTED_TOKEN_CLOSE_CONTEXT,
296
312
  PM_ERR_UNEXPECTED_TOKEN_IGNORE,
@@ -303,6 +319,7 @@ typedef enum {
303
319
  PM_ERR_XSTRING_TERM,
304
320
 
305
321
  // These are the warning diagnostics.
322
+ PM_WARN_AMBIGUOUS_BINARY_OPERATOR,
306
323
  PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_MINUS,
307
324
  PM_WARN_AMBIGUOUS_FIRST_ARGUMENT_PLUS,
308
325
  PM_WARN_AMBIGUOUS_PREFIX_AMPERSAND,
@@ -318,10 +335,11 @@ typedef enum {
318
335
  PM_WARN_DUPLICATED_WHEN_CLAUSE,
319
336
  PM_WARN_FLOAT_OUT_OF_RANGE,
320
337
  PM_WARN_IGNORED_FROZEN_STRING_LITERAL,
338
+ PM_WARN_INDENTATION_MISMATCH,
321
339
  PM_WARN_INTEGER_IN_FLIP_FLOP,
322
340
  PM_WARN_INVALID_CHARACTER,
341
+ PM_WARN_INVALID_MAGIC_COMMENT_VALUE,
323
342
  PM_WARN_INVALID_NUMBERED_REFERENCE,
324
- PM_WARN_INVALID_SHAREABLE_CONSTANT_VALUE,
325
343
  PM_WARN_KEYWORD_EOL,
326
344
  PM_WARN_LITERAL_IN_CONDITION_DEFAULT,
327
345
  PM_WARN_LITERAL_IN_CONDITION_VERBOSE,
@@ -1,7 +1,7 @@
1
1
  #ifndef PRISM_EXT_NODE_H
2
2
  #define PRISM_EXT_NODE_H
3
3
 
4
- #define EXPECTED_PRISM_VERSION "0.29.0"
4
+ #define EXPECTED_PRISM_VERSION "1.0.0"
5
5
 
6
6
  #include <ruby.h>
7
7
  #include <ruby/encoding.h>
@@ -14,6 +14,6 @@ VALUE pm_integer_new(const pm_integer_t *integer);
14
14
 
15
15
  void Init_prism_api_node(void);
16
16
  void Init_prism_pack(void);
17
- PRISM_EXPORTED_FUNCTION void Init_prism(void);
17
+ RUBY_FUNC_EXPORTED void Init_prism(void);
18
18
 
19
19
  #endif
@@ -56,27 +56,6 @@ void pm_node_list_free(pm_node_list_t *list);
56
56
  */
57
57
  PRISM_EXPORTED_FUNCTION void pm_node_destroy(pm_parser_t *parser, struct pm_node *node);
58
58
 
59
- /**
60
- * This struct stores the information gathered by the pm_node_memsize function.
61
- * It contains both the memory footprint and additionally metadata about the
62
- * shape of the tree.
63
- */
64
- typedef struct {
65
- /** The total memory footprint of the node and all of its children. */
66
- size_t memsize;
67
-
68
- /** The number of children the node has. */
69
- size_t node_count;
70
- } pm_memsize_t;
71
-
72
- /**
73
- * Calculates the memory footprint of a given node.
74
- *
75
- * @param node The node to calculate the memory footprint of.
76
- * @param memsize The memory footprint of the node and all of its children.
77
- */
78
- PRISM_EXPORTED_FUNCTION void pm_node_memsize(pm_node_t *node, pm_memsize_t *memsize);
79
-
80
59
  /**
81
60
  * Returns a string representation of the given node type.
82
61
  *
@@ -7,6 +7,7 @@
7
7
  #define PRISM_OPTIONS_H
8
8
 
9
9
  #include "prism/defines.h"
10
+ #include "prism/util/pm_char.h"
10
11
  #include "prism/util/pm_string.h"
11
12
 
12
13
  #include <stdbool.h>
@@ -40,6 +41,23 @@ typedef struct pm_options_scope {
40
41
  pm_string_t *locals;
41
42
  } pm_options_scope_t;
42
43
 
44
+ // Forward declaration needed by the callback typedef.
45
+ struct pm_options;
46
+
47
+ /**
48
+ * The callback called when additional switches are found in a shebang comment
49
+ * that need to be processed by the runtime.
50
+ *
51
+ * @param options The options struct that may be updated by this callback.
52
+ * Certain fields will be checked for changes, specifically encoding,
53
+ * command_line, and frozen_string_literal.
54
+ * @param source The source of the shebang comment.
55
+ * @param length The length of the source.
56
+ * @param shebang_callback_data Any additional data that should be passed along
57
+ * to the callback.
58
+ */
59
+ typedef void (*pm_options_shebang_callback_t)(struct pm_options *options, const uint8_t *source, size_t length, void *shebang_callback_data);
60
+
43
61
  /**
44
62
  * The version of Ruby syntax that we should be parsing with. This is used to
45
63
  * allow consumers to specify which behavior they want in case they need to
@@ -56,7 +74,19 @@ typedef enum {
56
74
  /**
57
75
  * The options that can be passed to the parser.
58
76
  */
59
- typedef struct {
77
+ typedef struct pm_options {
78
+ /**
79
+ * The callback to call when additional switches are found in a shebang
80
+ * comment.
81
+ */
82
+ pm_options_shebang_callback_t shebang_callback;
83
+
84
+ /**
85
+ * Any additional data that should be passed along to the shebang callback
86
+ * if one was set.
87
+ */
88
+ void *shebang_callback_data;
89
+
60
90
  /** The name of the file that is currently being parsed. */
61
91
  pm_string_t filepath;
62
92
 
@@ -103,6 +133,30 @@ typedef struct {
103
133
  * - PM_OPTIONS_FROZEN_STRING_LITERAL_UNSET
104
134
  */
105
135
  int8_t frozen_string_literal;
136
+
137
+ /**
138
+ * Whether or not the encoding magic comments should be respected. This is a
139
+ * niche use-case where you want to parse a file with a specific encoding
140
+ * but ignore any encoding magic comments at the top of the file.
141
+ */
142
+ bool encoding_locked;
143
+
144
+ /**
145
+ * When the file being parsed is the main script, the shebang will be
146
+ * considered for command-line flags (or for implicit -x). The caller needs
147
+ * to pass this information to the parser so that it can behave correctly.
148
+ */
149
+ bool main_script;
150
+
151
+ /**
152
+ * When the file being parsed is considered a "partial" script, jumps will
153
+ * not be marked as errors if they are not contained within loops/blocks.
154
+ * This is used in the case that you're parsing a script that you know will
155
+ * be embedded inside another script later, but you do not have that context
156
+ * yet. For example, when parsing an ERB template that will be evaluated
157
+ * inside another script.
158
+ */
159
+ bool partial_script;
106
160
  } pm_options_t;
107
161
 
108
162
  /**
@@ -142,6 +196,16 @@ static const uint8_t PM_OPTIONS_COMMAND_LINE_P = 0x10;
142
196
  */
143
197
  static const uint8_t PM_OPTIONS_COMMAND_LINE_X = 0x20;
144
198
 
199
+ /**
200
+ * Set the shebang callback option on the given options struct.
201
+ *
202
+ * @param options The options struct to set the shebang callback on.
203
+ * @param shebang_callback The shebang callback to set.
204
+ * @param shebang_callback_data Any additional data that should be passed along
205
+ * to the callback.
206
+ */
207
+ PRISM_EXPORTED_FUNCTION void pm_options_shebang_callback_set(pm_options_t *options, pm_options_shebang_callback_t shebang_callback, void *shebang_callback_data);
208
+
145
209
  /**
146
210
  * Set the filepath option on the given options struct.
147
211
  *
@@ -166,6 +230,14 @@ PRISM_EXPORTED_FUNCTION void pm_options_line_set(pm_options_t *options, int32_t
166
230
  */
167
231
  PRISM_EXPORTED_FUNCTION void pm_options_encoding_set(pm_options_t *options, const char *encoding);
168
232
 
233
+ /**
234
+ * Set the encoding_locked option on the given options struct.
235
+ *
236
+ * @param options The options struct to set the encoding_locked value on.
237
+ * @param encoding_locked The encoding_locked value to set.
238
+ */
239
+ PRISM_EXPORTED_FUNCTION void pm_options_encoding_locked_set(pm_options_t *options, bool encoding_locked);
240
+
169
241
  /**
170
242
  * Set the frozen string literal option on the given options struct.
171
243
  *
@@ -194,6 +266,22 @@ PRISM_EXPORTED_FUNCTION void pm_options_command_line_set(pm_options_t *options,
194
266
  */
195
267
  PRISM_EXPORTED_FUNCTION bool pm_options_version_set(pm_options_t *options, const char *version, size_t length);
196
268
 
269
+ /**
270
+ * Set the main script option on the given options struct.
271
+ *
272
+ * @param options The options struct to set the main script value on.
273
+ * @param main_script The main script value to set.
274
+ */
275
+ PRISM_EXPORTED_FUNCTION void pm_options_main_script_set(pm_options_t *options, bool main_script);
276
+
277
+ /**
278
+ * Set the partial script option on the given options struct.
279
+ *
280
+ * @param options The options struct to set the partial script value on.
281
+ * @param partial_script The partial script value to set.
282
+ */
283
+ PRISM_EXPORTED_FUNCTION void pm_options_partial_script_set(pm_options_t *options, bool partial_script);
284
+
197
285
  /**
198
286
  * Allocate and zero out the scopes array on the given options struct.
199
287
  *
@@ -261,6 +349,9 @@ PRISM_EXPORTED_FUNCTION void pm_options_free(pm_options_t *options);
261
349
  * | `1` | -l command line option |
262
350
  * | `1` | -a command line option |
263
351
  * | `1` | the version |
352
+ * | `1` | encoding locked |
353
+ * | `1` | main script |
354
+ * | `1` | partial script |
264
355
  * | `4` | the number of scopes |
265
356
  * | ... | the scopes |
266
357
  *
@@ -293,8 +384,8 @@ PRISM_EXPORTED_FUNCTION void pm_options_free(pm_options_t *options);
293
384
  * * The encoding can have a length of 0, in which case we'll use the default
294
385
  * encoding (UTF-8). If it's not 0, it should correspond to a name of an
295
386
  * encoding that can be passed to `Encoding.find` in Ruby.
296
- * * The frozen string literal and suppress warnings fields are booleans, so
297
- * their values should be either 0 or 1.
387
+ * * The frozen string literal, encoding locked, main script, and partial script
388
+ * fields are booleans, so their values should be either 0 or 1.
298
389
  * * The number of scopes can be 0.
299
390
  *
300
391
  * @param options The options struct to deserialize into.
@@ -82,6 +82,23 @@ typedef enum {
82
82
  PM_HEREDOC_INDENT_TILDE,
83
83
  } pm_heredoc_indent_t;
84
84
 
85
+ /**
86
+ * All of the information necessary to store to lexing a heredoc.
87
+ */
88
+ typedef struct {
89
+ /** A pointer to the start of the heredoc identifier. */
90
+ const uint8_t *ident_start;
91
+
92
+ /** The length of the heredoc identifier. */
93
+ size_t ident_length;
94
+
95
+ /** The type of quote that the heredoc uses. */
96
+ pm_heredoc_quote_t quote;
97
+
98
+ /** The type of indentation that the heredoc uses. */
99
+ pm_heredoc_indent_t indent;
100
+ } pm_heredoc_lex_mode_t;
101
+
85
102
  /**
86
103
  * When lexing Ruby source, the lexer has a small amount of state to tell which
87
104
  * kind of token it is currently lexing. For example, when we find the start of
@@ -210,17 +227,10 @@ typedef struct pm_lex_mode {
210
227
  } string;
211
228
 
212
229
  struct {
213
- /** A pointer to the start of the heredoc identifier. */
214
- const uint8_t *ident_start;
215
-
216
- /** The length of the heredoc identifier. */
217
- size_t ident_length;
218
-
219
- /** The type of quote that the heredoc uses. */
220
- pm_heredoc_quote_t quote;
221
-
222
- /** The type of indentation that the heredoc uses. */
223
- pm_heredoc_indent_t indent;
230
+ /**
231
+ * All of the data necessary to lex a heredoc.
232
+ */
233
+ pm_heredoc_lex_mode_t base;
224
234
 
225
235
  /**
226
236
  * This is the pointer to the character where lexing should resume
@@ -233,7 +243,7 @@ typedef struct pm_lex_mode {
233
243
  * line so that we know how much to dedent each line in the case of
234
244
  * a tilde heredoc.
235
245
  */
236
- size_t common_whitespace;
246
+ size_t *common_whitespace;
237
247
 
238
248
  /** True if the previous token ended with a line continuation. */
239
249
  bool line_continuation;
@@ -364,6 +374,9 @@ typedef enum {
364
374
  /** a rescue statement within a lambda expression */
365
375
  PM_CONTEXT_LAMBDA_RESCUE,
366
376
 
377
+ /** the predicate clause of a loop statement */
378
+ PM_CONTEXT_LOOP_PREDICATE,
379
+
367
380
  /** the top level context */
368
381
  PM_CONTEXT_MAIN,
369
382
 
@@ -379,6 +392,9 @@ typedef enum {
379
392
  /** a rescue statement within a module statement */
380
393
  PM_CONTEXT_MODULE_RESCUE,
381
394
 
395
+ /** a multiple target expression */
396
+ PM_CONTEXT_MULTI_TARGET,
397
+
382
398
  /** a parenthesized expression */
383
399
  PM_CONTEXT_PARENS,
384
400
 
@@ -505,9 +521,9 @@ typedef struct {
505
521
  /** The type of shareable constant value that can be set. */
506
522
  typedef uint8_t pm_shareable_constant_value_t;
507
523
  static const pm_shareable_constant_value_t PM_SCOPE_SHAREABLE_CONSTANT_NONE = 0x0;
508
- static const pm_shareable_constant_value_t PM_SCOPE_SHAREABLE_CONSTANT_LITERAL = 0x1;
509
- static const pm_shareable_constant_value_t PM_SCOPE_SHAREABLE_CONSTANT_EXPERIMENTAL_EVERYTHING = 0x2;
510
- static const pm_shareable_constant_value_t PM_SCOPE_SHAREABLE_CONSTANT_EXPERIMENTAL_COPY = 0x4;
524
+ static const pm_shareable_constant_value_t PM_SCOPE_SHAREABLE_CONSTANT_LITERAL = PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL;
525
+ static const pm_shareable_constant_value_t PM_SCOPE_SHAREABLE_CONSTANT_EXPERIMENTAL_EVERYTHING = PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING;
526
+ static const pm_shareable_constant_value_t PM_SCOPE_SHAREABLE_CONSTANT_EXPERIMENTAL_COPY = PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY;
511
527
 
512
528
  /**
513
529
  * This tracks an individual local variable in a certain lexical context, as
@@ -546,6 +562,17 @@ typedef struct pm_locals {
546
562
  pm_local_t *locals;
547
563
  } pm_locals_t;
548
564
 
565
+ /** The flags about scope parameters that can be set. */
566
+ typedef uint8_t pm_scope_parameters_t;
567
+ static const pm_scope_parameters_t PM_SCOPE_PARAMETERS_NONE = 0x0;
568
+ static const pm_scope_parameters_t PM_SCOPE_PARAMETERS_FORWARDING_POSITIONALS = 0x1;
569
+ static const pm_scope_parameters_t PM_SCOPE_PARAMETERS_FORWARDING_KEYWORDS = 0x2;
570
+ static const pm_scope_parameters_t PM_SCOPE_PARAMETERS_FORWARDING_BLOCK = 0x4;
571
+ static const pm_scope_parameters_t PM_SCOPE_PARAMETERS_FORWARDING_ALL = 0x8;
572
+ static const pm_scope_parameters_t PM_SCOPE_PARAMETERS_IMPLICIT_DISALLOWED = 0x10;
573
+ static const pm_scope_parameters_t PM_SCOPE_PARAMETERS_NUMBERED_INNER = 0x20;
574
+ static const pm_scope_parameters_t PM_SCOPE_PARAMETERS_NUMBERED_FOUND = 0x40;
575
+
549
576
  /**
550
577
  * This struct represents a node in a linked list of scopes. Some scopes can see
551
578
  * into their parent scopes, while others cannot.
@@ -557,10 +584,19 @@ typedef struct pm_scope {
557
584
  /** The IDs of the locals in the given scope. */
558
585
  pm_locals_t locals;
559
586
 
587
+ /**
588
+ * This is a list of the implicit parameters contained within the block.
589
+ * These will be processed after the block is parsed to determine the kind
590
+ * of parameters node that should be used and to check if any errors need to
591
+ * be added.
592
+ */
593
+ pm_node_list_t implicit_parameters;
594
+
560
595
  /**
561
596
  * This is a bitfield that indicates the parameters that are being used in
562
- * this scope. It is a combination of the PM_SCOPE_PARAMS_* constants. There
563
- * are three different kinds of parameters that can be used in a scope:
597
+ * this scope. It is a combination of the PM_SCOPE_PARAMETERS_* constants.
598
+ * There are three different kinds of parameters that can be used in a
599
+ * scope:
564
600
  *
565
601
  * - Ordinary parameters (e.g., def foo(bar); end)
566
602
  * - Numbered parameters (e.g., def foo; _1; end)
@@ -575,15 +611,7 @@ typedef struct pm_scope {
575
611
  * - def foo(&); end
576
612
  * - def foo(...); end
577
613
  */
578
- uint8_t parameters;
579
-
580
- /**
581
- * An integer indicating the number of numbered parameters on this scope.
582
- * This is necessary to determine if child blocks are allowed to use
583
- * numbered parameters, and to pass information to consumers of the AST
584
- * about how many numbered parameters exist.
585
- */
586
- int8_t numbered_parameters;
614
+ pm_scope_parameters_t parameters;
587
615
 
588
616
  /**
589
617
  * The current state of constant shareability for this scope. This is
@@ -598,20 +626,6 @@ typedef struct pm_scope {
598
626
  bool closed;
599
627
  } pm_scope_t;
600
628
 
601
- static const uint8_t PM_SCOPE_PARAMETERS_NONE = 0x0;
602
- static const uint8_t PM_SCOPE_PARAMETERS_ORDINARY = 0x1;
603
- static const uint8_t PM_SCOPE_PARAMETERS_NUMBERED = 0x2;
604
- static const uint8_t PM_SCOPE_PARAMETERS_IT = 0x4;
605
- static const uint8_t PM_SCOPE_PARAMETERS_TYPE_MASK = 0x7;
606
-
607
- static const uint8_t PM_SCOPE_PARAMETERS_FORWARDING_POSITIONALS = 0x8;
608
- static const uint8_t PM_SCOPE_PARAMETERS_FORWARDING_KEYWORDS = 0x10;
609
- static const uint8_t PM_SCOPE_PARAMETERS_FORWARDING_BLOCK = 0x20;
610
- static const uint8_t PM_SCOPE_PARAMETERS_FORWARDING_ALL = 0x40;
611
-
612
- static const int8_t PM_SCOPE_NUMBERED_PARAMETERS_DISALLOWED = -1;
613
- static const int8_t PM_SCOPE_NUMBERED_PARAMETERS_NONE = 0;
614
-
615
629
  /**
616
630
  * A struct that represents a stack of boolean values.
617
631
  */
@@ -624,6 +638,13 @@ typedef uint32_t pm_state_stack_t;
624
638
  * it's considering.
625
639
  */
626
640
  struct pm_parser {
641
+ /**
642
+ * The next node identifier that will be assigned. This is a unique
643
+ * identifier used to track nodes such that the syntax tree can be dropped
644
+ * but the node can be found through another parse.
645
+ */
646
+ uint32_t node_id;
647
+
627
648
  /** The current state of the lexer. */
628
649
  pm_lex_state_t lex_state;
629
650
 
@@ -853,12 +874,27 @@ struct pm_parser {
853
874
  */
854
875
  bool parsing_eval;
855
876
 
877
+ /**
878
+ * Whether or not we are parsing a "partial" script, which is a script that
879
+ * will be evaluated in the context of another script, so we should not
880
+ * check jumps (next/break/etc.) for validity.
881
+ */
882
+ bool partial_script;
883
+
856
884
  /** Whether or not we're at the beginning of a command. */
857
885
  bool command_start;
858
886
 
859
887
  /** Whether or not we're currently recovering from a syntax error. */
860
888
  bool recovering;
861
889
 
890
+ /**
891
+ * This is very specialized behavior for when you want to parse in a context
892
+ * that does not respect encoding comments. Its main use case is translating
893
+ * into the whitequark/parser AST which re-encodes source files in UTF-8
894
+ * before they are parsed and ignores encoding comments.
895
+ */
896
+ bool encoding_locked;
897
+
862
898
  /**
863
899
  * Whether or not the encoding has been changed by a magic comment. We use
864
900
  * this to provide a fast path for the lexer instead of going through the
@@ -886,6 +922,12 @@ struct pm_parser {
886
922
  * characters.
887
923
  */
888
924
  bool current_regular_expression_ascii_only;
925
+
926
+ /**
927
+ * By default, Ruby always warns about mismatched indentation. This can be
928
+ * toggled with a magic comment.
929
+ */
930
+ bool warn_mismatched_indentation;
889
931
  };
890
932
 
891
933
  #endif