ibex 0.1.0 → 0.2.0

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 (384) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +247 -104
  3. data/docs/architecture.md +322 -28
  4. data/docs/cst-migration.md +107 -0
  5. data/docs/cst.md +213 -0
  6. data/docs/development.md +129 -0
  7. data/docs/editor-setup.md +25 -0
  8. data/docs/error-ux.md +60 -0
  9. data/docs/grammar-reference.md +458 -18
  10. data/docs/lexer-migration.md +51 -0
  11. data/docs/racc-migration.md +34 -6
  12. data/docs/release-readiness.md +163 -0
  13. data/docs/stability.md +124 -0
  14. data/examples/README.md +60 -0
  15. data/examples/calculator.y +44 -0
  16. data/examples/csv.y +32 -0
  17. data/examples/ini.y +70 -0
  18. data/examples/json.y +48 -0
  19. data/examples/tiny_language.y +75 -0
  20. data/lib/ibex/analysis/sets.rb +5 -4
  21. data/lib/ibex/artifact_set.rb +63 -0
  22. data/lib/ibex/cli/ambiguity.rb +66 -0
  23. data/lib/ibex/cli/counterexample_options.rb +6 -2
  24. data/lib/ibex/cli/coverage.rb +173 -0
  25. data/lib/ibex/cli/debug.rb +106 -0
  26. data/lib/ibex/cli/diagnostics.rb +116 -0
  27. data/lib/ibex/cli/documentation.rb +67 -0
  28. data/lib/ibex/cli/error_messages.rb +177 -0
  29. data/lib/ibex/cli/explain.rb +76 -0
  30. data/lib/ibex/cli/formatting.rb +386 -0
  31. data/lib/ibex/cli/generation_artifacts.rb +138 -0
  32. data/lib/ibex/cli/generation_error_messages.rb +39 -0
  33. data/lib/ibex/cli/grammar_tests.rb +122 -0
  34. data/lib/ibex/cli/ir_tools.rb +184 -0
  35. data/lib/ibex/cli/lsp.rb +33 -0
  36. data/lib/ibex/cli/outputs.rb +91 -8
  37. data/lib/ibex/cli/racc_migration.rb +87 -0
  38. data/lib/ibex/cli/samples.rb +92 -0
  39. data/lib/ibex/cli/watch.rb +103 -0
  40. data/lib/ibex/cli.rb +506 -37
  41. data/lib/ibex/codegen/action_locations.rb +103 -0
  42. data/lib/ibex/codegen/action_method_source.rb +210 -0
  43. data/lib/ibex/codegen/action_source.rb +118 -0
  44. data/lib/ibex/codegen/ambiguity.rb +173 -0
  45. data/lib/ibex/codegen/cst_metadata.rb +171 -0
  46. data/lib/ibex/codegen/documentation.rb +170 -0
  47. data/lib/ibex/codegen/explain.rb +312 -0
  48. data/lib/ibex/codegen/generated_action_abi.rb +288 -0
  49. data/lib/ibex/codegen/html.rb +94 -10
  50. data/lib/ibex/codegen/mermaid.rb +43 -0
  51. data/lib/ibex/codegen/railroad.rb +197 -0
  52. data/lib/ibex/codegen/railroad_documentation.rb +59 -0
  53. data/lib/ibex/codegen/rbs.rb +323 -2
  54. data/lib/ibex/codegen/report.rb +46 -6
  55. data/lib/ibex/codegen/ruby.rb +334 -59
  56. data/lib/ibex/codegen/ruby_actions.rb +143 -0
  57. data/lib/ibex/codegen/ruby_ast.rb +121 -0
  58. data/lib/ibex/codegen/ruby_error_messages.rb +28 -0
  59. data/lib/ibex/codegen/ruby_lexer.rb +83 -0
  60. data/lib/ibex/codegen/ruby_syntax.rb +90 -0
  61. data/lib/ibex/codegen/ruby_table_metadata.rb +57 -0
  62. data/lib/ibex/codegen/ruby_value_printers.rb +56 -0
  63. data/lib/ibex/codegen/symbol_labels.rb +1 -1
  64. data/lib/ibex/coverage/collector.rb +188 -0
  65. data/lib/ibex/coverage/event_stream.rb +97 -0
  66. data/lib/ibex/coverage/report.rb +259 -0
  67. data/lib/ibex/coverage/runtime_event_validator.rb +160 -0
  68. data/lib/ibex/coverage.rb +13 -0
  69. data/lib/ibex/error_messages/parser.rb +159 -0
  70. data/lib/ibex/error_messages/parser_v2.rb +198 -0
  71. data/lib/ibex/error_messages/renderer.rb +65 -0
  72. data/lib/ibex/error_messages/sentence_search.rb +196 -0
  73. data/lib/ibex/error_messages/update.rb +169 -0
  74. data/lib/ibex/error_messages.rb +165 -0
  75. data/lib/ibex/frontend/ast.rb +145 -6
  76. data/lib/ibex/frontend/bootstrap_parser.rb +47 -4
  77. data/lib/ibex/frontend/diagnostic.rb +81 -0
  78. data/lib/ibex/frontend/diagnostic_recovery.rb +268 -0
  79. data/lib/ibex/frontend/dsl.rb +66 -7
  80. data/lib/ibex/frontend/formatter.rb +407 -0
  81. data/lib/ibex/frontend/generated_parser.rb +614 -190
  82. data/lib/ibex/frontend/generated_parser_base.rb +164 -30
  83. data/lib/ibex/frontend/generated_parser_includes.rb +61 -0
  84. data/lib/ibex/frontend/generated_parser_metadata.rb +61 -0
  85. data/lib/ibex/frontend/generated_parser_parameters.rb +60 -0
  86. data/lib/ibex/frontend/generation.rb +33 -0
  87. data/lib/ibex/frontend/lexer.rb +162 -10
  88. data/lib/ibex/frontend/lexer_recovery.rb +84 -0
  89. data/lib/ibex/frontend/parser/declarations.rb +247 -11
  90. data/lib/ibex/frontend/parser/parameters.rb +82 -0
  91. data/lib/ibex/frontend/parser/rules.rb +43 -6
  92. data/lib/ibex/frontend/parser.rb +182 -4
  93. data/lib/ibex/frontend/regenerator.rb +26 -1
  94. data/lib/ibex/frontend/resolution.rb +69 -0
  95. data/lib/ibex/frontend/resolver.rb +217 -0
  96. data/lib/ibex/frontend/rule_documentation.rb +103 -0
  97. data/lib/ibex/frontend/source_cursor.rb +132 -8
  98. data/lib/ibex/frontend/source_document.rb +229 -0
  99. data/lib/ibex/frontend/source_loader.rb +150 -0
  100. data/lib/ibex/frontend/source_span.rb +81 -0
  101. data/lib/ibex/frontend/token_adapter/declaration_document_state.rb +47 -0
  102. data/lib/ibex/frontend/token_adapter/declaration_lexer_state.rb +83 -0
  103. data/lib/ibex/frontend/token_adapter/declaration_state.rb +216 -26
  104. data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +8 -2
  105. data/lib/ibex/frontend/token_adapter/rule_state.rb +60 -2
  106. data/lib/ibex/frontend/token_adapter.rb +8 -3
  107. data/lib/ibex/frontend.rb +13 -2
  108. data/lib/ibex/generation_input.rb +57 -0
  109. data/lib/ibex/generation_manifest.rb +200 -0
  110. data/lib/ibex/generation_transaction.rb +261 -0
  111. data/lib/ibex/generation_transaction_recovery.rb +109 -0
  112. data/lib/ibex/generation_transaction_validation.rb +196 -0
  113. data/lib/ibex/grammar_tests.rb +206 -0
  114. data/lib/ibex/ir/automaton_ir.rb +38 -5
  115. data/lib/ibex/ir/grammar_ir.rb +137 -24
  116. data/lib/ibex/ir/lexer_ir.rb +76 -0
  117. data/lib/ibex/ir/migration.rb +120 -0
  118. data/lib/ibex/ir/serialize.rb +110 -19
  119. data/lib/ibex/ir/validator/automaton.rb +345 -0
  120. data/lib/ibex/ir/validator/base.rb +129 -0
  121. data/lib/ibex/ir/validator/grammar.rb +604 -0
  122. data/lib/ibex/ir/validator/lexer.rb +113 -0
  123. data/lib/ibex/ir/validator.rb +62 -0
  124. data/lib/ibex/ir.rb +57 -4
  125. data/lib/ibex/lalr/build_metrics.rb +23 -0
  126. data/lib/ibex/lalr/builder.rb +379 -52
  127. data/lib/ibex/lalr/conflict.rb +1 -0
  128. data/lib/ibex/lalr/conflict_search.rb +11 -5
  129. data/lib/ibex/lalr/counterexample.rb +20 -5
  130. data/lib/ibex/lalr/direct_lookaheads.rb +236 -0
  131. data/lib/ibex/lalr/ielr_partition.rb +152 -0
  132. data/lib/ibex/lalr/on_error_reductions.rb +74 -0
  133. data/lib/ibex/lalr.rb +7 -0
  134. data/lib/ibex/location.rb +129 -0
  135. data/lib/ibex/lsp/document_handlers.rb +66 -0
  136. data/lib/ibex/lsp/document_store.rb +264 -0
  137. data/lib/ibex/lsp/document_store_diagnostics.rb +44 -0
  138. data/lib/ibex/lsp/document_store_validation.rb +61 -0
  139. data/lib/ibex/lsp/initialization_handlers.rb +78 -0
  140. data/lib/ibex/lsp/navigation_handlers.rb +56 -0
  141. data/lib/ibex/lsp/position_codec.rb +109 -0
  142. data/lib/ibex/lsp/protocol_error.rb +33 -0
  143. data/lib/ibex/lsp/request_handlers.rb +45 -0
  144. data/lib/ibex/lsp/request_support.rb +87 -0
  145. data/lib/ibex/lsp/server.rb +146 -0
  146. data/lib/ibex/lsp/symbol_index.rb +241 -0
  147. data/lib/ibex/lsp/symbol_index_builder.rb +267 -0
  148. data/lib/ibex/lsp/symbol_index_precedence_references.rb +44 -0
  149. data/lib/ibex/lsp/symbol_index_source_queries.rb +61 -0
  150. data/lib/ibex/lsp/symbol_occurrence.rb +17 -0
  151. data/lib/ibex/lsp/transport.rb +118 -0
  152. data/lib/ibex/lsp/workspace.rb +127 -0
  153. data/lib/ibex/lsp/workspace_analyzer.rb +199 -0
  154. data/lib/ibex/lsp.rb +32 -0
  155. data/lib/ibex/normalize/declarations.rb +140 -7
  156. data/lib/ibex/normalize/diagnostics.rb +50 -5
  157. data/lib/ibex/normalize/expander.rb +59 -55
  158. data/lib/ibex/normalize/expression.rb +60 -39
  159. data/lib/ibex/normalize/inline_expansion.rb +414 -0
  160. data/lib/ibex/normalize/inline_validation.rb +174 -0
  161. data/lib/ibex/normalize/lexer.rb +131 -0
  162. data/lib/ibex/normalize/named_references.rb +60 -0
  163. data/lib/ibex/normalize/nodes.rb +46 -0
  164. data/lib/ibex/normalize/parameter_ebnf_lowering.rb +69 -0
  165. data/lib/ibex/normalize/parameter_lowering.rb +126 -0
  166. data/lib/ibex/normalize/parameter_substitution.rb +125 -0
  167. data/lib/ibex/normalize/parameter_validation.rb +140 -0
  168. data/lib/ibex/normalize/parameters.rb +199 -0
  169. data/lib/ibex/normalize/recovery_declarations.rb +84 -0
  170. data/lib/ibex/normalize.rb +179 -14
  171. data/lib/ibex/racc_migration/checker.rb +122 -0
  172. data/lib/ibex/racc_migration/harness.rb +177 -0
  173. data/lib/ibex/racc_migration/report.rb +94 -0
  174. data/lib/ibex/racc_migration.rb +12 -0
  175. data/lib/ibex/rake_task.rb +116 -0
  176. data/lib/ibex/samples.rb +186 -0
  177. data/lib/ibex/table_simulation/result.rb +51 -0
  178. data/lib/ibex/table_simulation/simulator.rb +253 -0
  179. data/lib/ibex/table_simulation/step.rb +60 -0
  180. data/lib/ibex/table_simulation/text.rb +31 -0
  181. data/lib/ibex/table_simulation.rb +13 -0
  182. data/lib/ibex/tables.rb +9 -70
  183. data/lib/ibex/version.rb +1 -1
  184. data/lib/ibex/watch/runner.rb +172 -0
  185. data/lib/ibex/watch/source_snapshot.rb +93 -0
  186. data/lib/ibex/watch.rb +11 -0
  187. data/lib/ibex.rb +25 -1
  188. data/schema/automaton-ir-v1.schema.json +401 -0
  189. data/schema/automaton-ir-v2.schema.json +58 -0
  190. data/schema/benchmark-v1.schema.json +212 -0
  191. data/schema/benchmark-v2.schema.json +61 -0
  192. data/schema/cst-v1.json +170 -0
  193. data/schema/error-ux-v1.schema.json +258 -0
  194. data/schema/explain-v1.schema.json +433 -0
  195. data/schema/frontend-diagnostics-v1.schema.json +154 -0
  196. data/schema/generation-manifest-v1.schema.json +115 -0
  197. data/schema/grammar-ir-v1.schema.json +426 -0
  198. data/schema/grammar-ir-v2.schema.json +779 -0
  199. data/schema/lexer-ir-v1.schema.json +215 -0
  200. data/schema/migration-check-v1.schema.json +60 -0
  201. data/schema/performance-comparison-v1.schema.json +395 -0
  202. data/schema/public-performance-comparison-v1.schema.json +506 -0
  203. data/schema/public-performance-profile-v1.schema.json +360 -0
  204. data/schema/runtime-coverage-v1.schema.json +86 -0
  205. data/schema/runtime-event-v1.schema.json +308 -0
  206. data/schema/table-simulation-v1.schema.json +70 -0
  207. data/sig/ibex/artifact_set.rbs +37 -0
  208. data/sig/ibex/cli/ambiguity.rbs +22 -0
  209. data/sig/ibex/cli/counterexample_options.rbs +2 -0
  210. data/sig/ibex/cli/coverage.rbs +53 -0
  211. data/sig/ibex/cli/debug.rbs +28 -0
  212. data/sig/ibex/cli/diagnostics.rbs +38 -0
  213. data/sig/ibex/cli/documentation.rbs +25 -0
  214. data/sig/ibex/cli/error_messages.rbs +57 -0
  215. data/sig/ibex/cli/explain.rbs +25 -0
  216. data/sig/ibex/cli/formatting.rbs +103 -0
  217. data/sig/ibex/cli/generation_artifacts.rbs +50 -0
  218. data/sig/ibex/cli/generation_error_messages.rbs +19 -0
  219. data/sig/ibex/cli/grammar_tests.rbs +36 -0
  220. data/sig/ibex/cli/ir_tools.rbs +51 -0
  221. data/sig/ibex/cli/lsp.rbs +14 -0
  222. data/sig/ibex/cli/outputs.rbs +17 -0
  223. data/sig/ibex/cli/racc_migration.rbs +30 -0
  224. data/sig/ibex/cli/samples.rbs +30 -0
  225. data/sig/ibex/cli/watch.rbs +43 -0
  226. data/sig/ibex/cli.rbs +104 -5
  227. data/sig/ibex/codegen/action_locations.rbs +45 -0
  228. data/sig/ibex/codegen/action_method_source.rbs +65 -0
  229. data/sig/ibex/codegen/action_source.rbs +50 -0
  230. data/sig/ibex/codegen/ambiguity.rbs +60 -0
  231. data/sig/ibex/codegen/cst_metadata.rbs +59 -0
  232. data/sig/ibex/codegen/documentation.rbs +50 -0
  233. data/sig/ibex/codegen/explain.rbs +85 -0
  234. data/sig/ibex/codegen/generated_action_abi.rbs +101 -0
  235. data/sig/ibex/codegen/html.rbs +18 -2
  236. data/sig/ibex/codegen/mermaid.rbs +16 -0
  237. data/sig/ibex/codegen/railroad.rbs +82 -0
  238. data/sig/ibex/codegen/railroad_documentation.rbs +31 -0
  239. data/sig/ibex/codegen/rbs.rbs +84 -4
  240. data/sig/ibex/codegen/report.rbs +8 -0
  241. data/sig/ibex/codegen/ruby.rbs +97 -23
  242. data/sig/ibex/codegen/ruby_actions.rbs +54 -0
  243. data/sig/ibex/codegen/ruby_ast.rbs +34 -0
  244. data/sig/ibex/codegen/ruby_error_messages.rbs +16 -0
  245. data/sig/ibex/codegen/ruby_lexer.rbs +25 -0
  246. data/sig/ibex/codegen/ruby_syntax.rbs +25 -0
  247. data/sig/ibex/codegen/ruby_table_metadata.rbs +26 -0
  248. data/sig/ibex/codegen/ruby_value_printers.rbs +28 -0
  249. data/sig/ibex/coverage/collector.rbs +76 -0
  250. data/sig/ibex/coverage/event_stream.rbs +42 -0
  251. data/sig/ibex/coverage/report.rbs +100 -0
  252. data/sig/ibex/coverage/runtime_event_validator.rbs +68 -0
  253. data/sig/ibex/coverage.rbs +7 -0
  254. data/sig/ibex/error_messages/parser.rbs +58 -0
  255. data/sig/ibex/error_messages/parser_v2.rbs +67 -0
  256. data/sig/ibex/error_messages/renderer.rbs +23 -0
  257. data/sig/ibex/error_messages/sentence_search.rbs +80 -0
  258. data/sig/ibex/error_messages/update.rbs +43 -0
  259. data/sig/ibex/error_messages.rbs +85 -0
  260. data/sig/ibex/frontend/ast.rbs +208 -19
  261. data/sig/ibex/frontend/bootstrap_parser.rbs +11 -0
  262. data/sig/ibex/frontend/diagnostic.rbs +53 -0
  263. data/sig/ibex/frontend/diagnostic_recovery.rbs +98 -0
  264. data/sig/ibex/frontend/dsl.rbs +33 -4
  265. data/sig/ibex/frontend/formatter.rbs +135 -0
  266. data/sig/ibex/frontend/generated_parser.rbs +218 -68
  267. data/sig/ibex/frontend/generated_parser_base.rbs +61 -10
  268. data/sig/ibex/frontend/generated_parser_includes.rbs +23 -0
  269. data/sig/ibex/frontend/generated_parser_metadata.rbs +23 -0
  270. data/sig/ibex/frontend/generated_parser_parameters.rbs +24 -0
  271. data/sig/ibex/frontend/generation.rbs +6 -0
  272. data/sig/ibex/frontend/lexer.rbs +49 -2
  273. data/sig/ibex/frontend/lexer_recovery.rbs +25 -0
  274. data/sig/ibex/frontend/parser/declarations.rbs +54 -0
  275. data/sig/ibex/frontend/parser/parameters.rbs +28 -0
  276. data/sig/ibex/frontend/parser/rules.rbs +3 -0
  277. data/sig/ibex/frontend/parser.rbs +66 -0
  278. data/sig/ibex/frontend/regenerator.rbs +11 -0
  279. data/sig/ibex/frontend/resolution.rbs +33 -0
  280. data/sig/ibex/frontend/resolver.rbs +91 -0
  281. data/sig/ibex/frontend/rule_documentation.rbs +42 -0
  282. data/sig/ibex/frontend/source_cursor.rbs +36 -3
  283. data/sig/ibex/frontend/source_document.rbs +119 -0
  284. data/sig/ibex/frontend/source_loader.rbs +66 -0
  285. data/sig/ibex/frontend/source_span.rbs +53 -0
  286. data/sig/ibex/frontend/token_adapter/declaration_document_state.rbs +21 -0
  287. data/sig/ibex/frontend/token_adapter/declaration_lexer_state.rbs +27 -0
  288. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +73 -5
  289. data/sig/ibex/frontend/token_adapter/rule_state.rbs +20 -0
  290. data/sig/ibex/frontend/token_adapter.rbs +5 -2
  291. data/sig/ibex/frontend.rbs +1 -1
  292. data/sig/ibex/generation_input.rbs +37 -0
  293. data/sig/ibex/generation_manifest.rbs +67 -0
  294. data/sig/ibex/generation_transaction.rbs +82 -0
  295. data/sig/ibex/generation_transaction_recovery.rbs +36 -0
  296. data/sig/ibex/generation_transaction_validation.rbs +65 -0
  297. data/sig/ibex/grammar_tests.rbs +93 -0
  298. data/sig/ibex/ir/automaton_ir.rbs +8 -2
  299. data/sig/ibex/ir/grammar_ir.rbs +75 -15
  300. data/sig/ibex/ir/lexer_ir.rbs +57 -0
  301. data/sig/ibex/ir/migration.rbs +34 -0
  302. data/sig/ibex/ir/serialize.rbs +23 -6
  303. data/sig/ibex/ir/validator/automaton.rbs +109 -0
  304. data/sig/ibex/ir/validator/base.rbs +65 -0
  305. data/sig/ibex/ir/validator/grammar.rbs +184 -0
  306. data/sig/ibex/ir/validator/lexer.rbs +37 -0
  307. data/sig/ibex/ir/validator.rbs +16 -0
  308. data/sig/ibex/ir.rbs +38 -4
  309. data/sig/ibex/lalr/build_metrics.rbs +20 -0
  310. data/sig/ibex/lalr/builder.rbs +95 -15
  311. data/sig/ibex/lalr/conflict_search.rbs +7 -3
  312. data/sig/ibex/lalr/counterexample.rbs +5 -2
  313. data/sig/ibex/lalr/direct_lookaheads.rbs +86 -0
  314. data/sig/ibex/lalr/ielr_partition.rbs +59 -0
  315. data/sig/ibex/lalr/on_error_reductions.rbs +22 -0
  316. data/sig/ibex/lalr.rbs +6 -0
  317. data/sig/ibex/location.rbs +67 -0
  318. data/sig/ibex/lsp/document_handlers.rbs +24 -0
  319. data/sig/ibex/lsp/document_store.rbs +94 -0
  320. data/sig/ibex/lsp/document_store_diagnostics.rbs +20 -0
  321. data/sig/ibex/lsp/document_store_validation.rbs +26 -0
  322. data/sig/ibex/lsp/initialization_handlers.rbs +30 -0
  323. data/sig/ibex/lsp/navigation_handlers.rbs +30 -0
  324. data/sig/ibex/lsp/position_codec.rbs +40 -0
  325. data/sig/ibex/lsp/protocol_error.rbs +32 -0
  326. data/sig/ibex/lsp/request_handlers.rbs +26 -0
  327. data/sig/ibex/lsp/request_support.rbs +40 -0
  328. data/sig/ibex/lsp/server.rbs +55 -0
  329. data/sig/ibex/lsp/symbol_index.rbs +78 -0
  330. data/sig/ibex/lsp/symbol_index_builder.rbs +87 -0
  331. data/sig/ibex/lsp/symbol_index_precedence_references.rbs +18 -0
  332. data/sig/ibex/lsp/symbol_index_source_queries.rbs +26 -0
  333. data/sig/ibex/lsp/symbol_occurrence.rbs +25 -0
  334. data/sig/ibex/lsp/transport.rbs +35 -0
  335. data/sig/ibex/lsp/workspace.rbs +41 -0
  336. data/sig/ibex/lsp/workspace_analyzer.rbs +69 -0
  337. data/sig/ibex/lsp.rbs +7 -0
  338. data/sig/ibex/normalize/declarations.rbs +31 -0
  339. data/sig/ibex/normalize/diagnostics.rbs +9 -0
  340. data/sig/ibex/normalize/expander.rbs +20 -14
  341. data/sig/ibex/normalize/expression.rbs +10 -10
  342. data/sig/ibex/normalize/inline_expansion.rbs +120 -0
  343. data/sig/ibex/normalize/inline_validation.rbs +40 -0
  344. data/sig/ibex/normalize/lexer.rbs +37 -0
  345. data/sig/ibex/normalize/named_references.rbs +20 -0
  346. data/sig/ibex/normalize/nodes.rbs +14 -0
  347. data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +32 -0
  348. data/sig/ibex/normalize/parameter_lowering.rbs +35 -0
  349. data/sig/ibex/normalize/parameter_substitution.rbs +42 -0
  350. data/sig/ibex/normalize/parameter_validation.rbs +44 -0
  351. data/sig/ibex/normalize/parameters.rbs +46 -0
  352. data/sig/ibex/normalize/recovery_declarations.rbs +24 -0
  353. data/sig/ibex/normalize.rbs +123 -18
  354. data/sig/ibex/racc_migration/checker.rbs +36 -0
  355. data/sig/ibex/racc_migration/harness.rbs +16 -0
  356. data/sig/ibex/racc_migration/report.rbs +53 -0
  357. data/sig/ibex/racc_migration.rbs +8 -0
  358. data/sig/ibex/rake_task.rbs +51 -0
  359. data/sig/ibex/samples.rbs +51 -0
  360. data/sig/ibex/table_simulation/result.rbs +32 -0
  361. data/sig/ibex/table_simulation/simulator.rbs +98 -0
  362. data/sig/ibex/table_simulation/step.rbs +40 -0
  363. data/sig/ibex/table_simulation/text.rbs +14 -0
  364. data/sig/ibex/table_simulation.rbs +7 -0
  365. data/sig/ibex/tables.rbs +0 -26
  366. data/sig/ibex/watch/runner.rbs +48 -0
  367. data/sig/ibex/watch/source_snapshot.rbs +42 -0
  368. data/sig/ibex/watch.rbs +7 -0
  369. data/sig/ibex.rbs +2 -0
  370. metadata +301 -16
  371. data/.rubocop.yml +0 -43
  372. data/CHANGELOG.md +0 -30
  373. data/Rakefile +0 -25
  374. data/Steepfile +0 -10
  375. data/docs/compat-notes.md +0 -37
  376. data/docs/lexer-coverage.md +0 -14
  377. data/docs/phase10-extensions.md +0 -27
  378. data/gemfiles/Gemfile +0 -7
  379. data/gemfiles/Gemfile.lock +0 -98
  380. data/lib/ibex/frontend/grammar.y +0 -156
  381. data/lib/ibex/runtime/parser.rb +0 -360
  382. data/lib/ibex/runtime.rb +0 -8
  383. data/sig/ibex/runtime/parser.rbs +0 -167
  384. data/sig/ibex/runtime.rbs +0 -6
@@ -0,0 +1,119 @@
1
+ # Generated from lib/ibex/frontend/source_document.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Frontend
5
+ # An immutable lexical unit or trivia slice in a concrete syntax tree.
6
+ class Segment
7
+ TRIVIA_KINDS: Array[Symbol]
8
+
9
+ OPAQUE_KINDS: Array[Symbol]
10
+
11
+ attr_reader kind: Symbol
12
+
13
+ attr_reader span: SourceSpan
14
+
15
+ attr_reader text: String
16
+
17
+ attr_reader token_type: Symbol?
18
+
19
+ attr_reader token_index: Integer?
20
+
21
+ # @rbs (kind: Symbol, span: SourceSpan, text: String, ?token_type: Symbol?,
22
+ # ?token_index: Integer?) -> void
23
+ def initialize: (kind: Symbol, span: SourceSpan, text: String, ?token_type: Symbol?, ?token_index: Integer?) -> void
24
+
25
+ # @rbs () -> bool
26
+ def trivia?: () -> bool
27
+
28
+ # @rbs () -> bool
29
+ def opaque?: () -> bool
30
+
31
+ # @rbs () -> bool
32
+ def token?: () -> bool
33
+
34
+ # @rbs () -> String
35
+ def render: () -> String
36
+ end
37
+
38
+ module CST
39
+ # The immutable lexical root of a grammar source document.
40
+ class Document
41
+ include Enumerable[Segment]
42
+
43
+ attr_reader segments: Array[Segment]
44
+
45
+ # @rbs (Array[Segment] segments) -> void
46
+ def initialize: (Array[Segment] segments) -> void
47
+
48
+ def each: () -> Enumerator[Segment, Document]
49
+ | () { (Segment) -> void } -> Document
50
+
51
+ # @rbs () -> String
52
+ def render: () -> String
53
+
54
+ private
55
+
56
+ # @rbs (Array[Segment] segments) -> void
57
+ def validate_contiguous: (Array[Segment] segments) -> void
58
+ end
59
+ end
60
+
61
+ # Lossless grammar source plus its semantic parse and lexical concrete syntax tree.
62
+ class SourceDocument
63
+ attr_reader source: String
64
+
65
+ attr_reader file: String
66
+
67
+ attr_reader tokens: Array[Token]
68
+
69
+ attr_reader cst: CST::Document
70
+
71
+ attr_reader ast: AST::Root | AST::Fragment | nil
72
+
73
+ # @rbs (source: String, file: String, tokens: Array[Token], cst: CST::Document,
74
+ # ?ast: AST::Root | AST::Fragment | nil) -> void
75
+ def initialize: (source: String, file: String, tokens: Array[Token], cst: CST::Document, ?ast: AST::Root | AST::Fragment | nil) -> void
76
+
77
+ # @rbs () -> String
78
+ def render: () -> String
79
+
80
+ # @rbs (SourceSpan span) -> String
81
+ def slice: (SourceSpan span) -> String
82
+
83
+ # @rbs (Integer byte_offset) -> SourcePosition
84
+ def position_at: (Integer byte_offset) -> SourcePosition
85
+
86
+ # @rbs (Integer line, Integer column) -> Integer
87
+ def byte_offset_at: (Integer line, Integer column) -> Integer
88
+
89
+ # @rbs (Integer start_byte, Integer end_byte) -> SourceSpan
90
+ def span: (Integer start_byte, Integer end_byte) -> SourceSpan
91
+
92
+ # @rbs (Segment segment) -> Token?
93
+ def token_for: (Segment segment) -> Token?
94
+
95
+ # @rbs (AST::Root | AST::Fragment ast) -> SourceDocument
96
+ def with_ast: (AST::Root | AST::Fragment ast) -> SourceDocument
97
+
98
+ private
99
+
100
+ # @rbs () -> Array[Integer]
101
+ def build_line_starts: () -> Array[Integer]
102
+
103
+ # @rbs () -> void
104
+ def validate_render: () -> void
105
+
106
+ # @rbs () -> bool
107
+ def full_source_coverage?: () -> bool
108
+
109
+ # @rbs () -> bool
110
+ def segment_slices_match?: () -> bool
111
+
112
+ # @rbs (Integer byte_offset) -> void
113
+ def validate_byte_offset: (Integer byte_offset) -> void
114
+
115
+ # @rbs (SourceSpan span) -> void
116
+ def validate_span: (SourceSpan span) -> void
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,66 @@
1
+ # Generated from lib/ibex/frontend/source_loader.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Frontend
5
+ # Resolves canonical grammar paths and reads either open-buffer overlays or disk.
6
+ class SourceLoader
7
+ @access_paths: Hash[String, Array[String]]
8
+
9
+ @record_reads: bool
10
+
11
+ @read_records: Hash[String, GenerationInput]
12
+
13
+ @aliases: Hash[String, String]
14
+
15
+ @overlays: Hash[String, String]
16
+
17
+ # @rbs () -> Array[GenerationInput]
18
+ def read_records: () -> Array[GenerationInput]
19
+
20
+ # Associate the lexical path used by a resolver with its canonical source.
21
+ # @rbs (String canonical, String access_path) -> void
22
+ def record_access: (String canonical, String access_path) -> void
23
+
24
+ # @rbs (?overlays: Hash[String, String], ?record_reads: bool) -> void
25
+ def initialize: (?overlays: Hash[String, String], ?record_reads: bool) -> void
26
+
27
+ # Canonicalize an existing file, or a missing path explicitly allowed by an open overlay.
28
+ # @rbs (String path, ?base: String, ?allow_missing: bool) -> String
29
+ def canonical_path: (String path, ?base: String, ?allow_missing: bool) -> String
30
+
31
+ # @rbs (String path) -> String
32
+ def read: (String path) -> String
33
+
34
+ # @rbs (String path) -> bool
35
+ def file?: (String path) -> bool
36
+
37
+ # @rbs (String path) -> bool
38
+ def overlay?: (String path) -> bool
39
+
40
+ # Install or replace an editor buffer without writing it to disk.
41
+ # @rbs (String path, String source) -> String
42
+ def set_overlay: (String path, String source) -> String
43
+
44
+ # Remove an editor buffer and return its canonical path.
45
+ # @rbs (String path) -> String
46
+ def delete_overlay: (String path) -> String
47
+
48
+ # Read disk while deliberately bypassing an open overlay.
49
+ # @rbs (String path) -> String
50
+ def disk_source: (String path) -> String
51
+
52
+ # @rbs (String path) -> bool
53
+ def disk_file?: (String path) -> bool
54
+
55
+ # Resolve the current disk target without consulting overlay aliases.
56
+ # @rbs (String path) -> String
57
+ def disk_path: (String path) -> String
58
+
59
+ private
60
+
61
+ # Resolve the nearest existing ancestor so symlink escapes remain visible for new files.
62
+ # @rbs (String expanded) -> String
63
+ def canonical_missing_path: (String expanded) -> String
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,53 @@
1
+ # Generated from lib/ibex/frontend/source_span.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Frontend
5
+ # Normalizes grammar source without changing its bytes.
6
+ module SourceEncoding
7
+ # @rbs (String source, String file) -> String
8
+ def self.validated_utf8: (String source, String file) -> String
9
+ end
10
+
11
+ # An immutable position in grammar source.
12
+ class SourcePosition
13
+ attr_reader byte_offset: Integer
14
+
15
+ attr_reader line: Integer
16
+
17
+ attr_reader column: Integer
18
+
19
+ # @rbs (byte_offset: Integer, line: Integer, column: Integer) -> void
20
+ def initialize: (byte_offset: Integer, line: Integer, column: Integer) -> void
21
+
22
+ # @rbs () -> Hash[Symbol, Integer]
23
+ def to_h: () -> Hash[Symbol, Integer]
24
+ end
25
+
26
+ # An immutable half-open byte span in one grammar source.
27
+ class SourceSpan
28
+ attr_reader file: String
29
+
30
+ attr_reader start: SourcePosition
31
+
32
+ attr_reader finish: SourcePosition
33
+
34
+ # @rbs (file: String, start: SourcePosition, finish: SourcePosition) -> void
35
+ def initialize: (file: String, start: SourcePosition, finish: SourcePosition) -> void
36
+
37
+ # @rbs () -> Integer
38
+ def start_byte: () -> Integer
39
+
40
+ # @rbs () -> Integer
41
+ def end_byte: () -> Integer
42
+
43
+ # @rbs () -> Integer
44
+ def length: () -> Integer
45
+
46
+ # @rbs () -> bool
47
+ def empty?: () -> bool
48
+
49
+ # @rbs () -> Hash[Symbol, untyped]
50
+ def to_h: () -> Hash[Symbol, untyped]
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,21 @@
1
+ # Generated from lib/ibex/frontend/token_adapter/declaration_document_state.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Frontend
5
+ class TokenAdapter
6
+ # Root/fragment header and include-path transitions for declaration classification.
7
+ module DeclarationDocumentState
8
+ private
9
+
10
+ # @rbs (Token token) -> external_token
11
+ def class_keyword: (Token token) -> external_token
12
+
13
+ # @rbs (external_token type) -> external_token?
14
+ def classify_include: (external_token type) -> external_token?
15
+
16
+ # @rbs (Token token, String value) -> void
17
+ def reject_fragment_pragma: (Token token, String value) -> void
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ # Generated from lib/ibex/frontend/token_adapter/declaration_lexer_state.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Frontend
5
+ class TokenAdapter
6
+ # Context transitions for the extended root-only lexer declaration.
7
+ module DeclarationLexerState
8
+ private
9
+
10
+ # @rbs () -> bool
11
+ def lexer_declaration_state?: () -> bool
12
+
13
+ # @rbs (Token token) -> external_token
14
+ def classify_lexer_identifier: (Token token) -> external_token
15
+
16
+ # @rbs (Token token) -> external_token
17
+ def begin_lexer_entry: (Token token) -> external_token
18
+
19
+ # @rbs () -> external_token
20
+ def finish_lexer_scope: () -> external_token
21
+
22
+ # @rbs (external_token type) -> external_token?
23
+ def classify_lexer_scalar: (external_token type) -> external_token?
24
+ end
25
+ end
26
+ end
27
+ end
@@ -4,7 +4,13 @@ module Ibex
4
4
  module Frontend
5
5
  class TokenAdapter
6
6
  # Classifies tokens through the class header and declaration section.
7
+ # rubocop:disable Metrics/ClassLength, Metrics/CyclomaticComplexity
8
+ # One state machine owns declaration-boundary classification.
7
9
  class DeclarationState
10
+ include DeclarationDocumentState
11
+
12
+ include DeclarationLexerState
13
+
8
14
  DECLARATIONS: Hash[String, [ external_token, Symbol ]]
9
15
 
10
16
  ASSOCIATIONS: Hash[String, external_token]
@@ -21,8 +27,16 @@ module Ibex
21
27
 
22
28
  attr_reader state: Symbol
23
29
 
24
- # @rbs () -> void
25
- def initialize: () -> void
30
+ @pragma_location: Location?
31
+
32
+ @pragmas: Hash[String, bool]
33
+
34
+ @fragment: bool?
35
+
36
+ @extended_mode: bool
37
+
38
+ # @rbs (?extended: bool) -> void
39
+ def initialize: (?extended: bool) -> void
26
40
 
27
41
  # @rbs (Token token, Array[Token] remaining) -> external_token
28
42
  def classify: (Token token, Array[Token] remaining) -> external_token
@@ -33,6 +47,9 @@ module Ibex
33
47
  # @rbs () -> bool
34
48
  def extended_pragma?: () -> bool
35
49
 
50
+ # @rbs () -> bool
51
+ def cst_pragma?: () -> bool
52
+
36
53
  # @rbs (Token? token) -> String?
37
54
  def expectation: (Token? token) -> String?
38
55
 
@@ -41,9 +58,6 @@ module Ibex
41
58
  # @rbs (Token token, Array[Token] remaining) -> external_token
42
59
  def classify_identifier: (Token token, Array[Token] remaining) -> external_token
43
60
 
44
- # @rbs (Token token) -> external_token
45
- def class_keyword: (Token token) -> external_token
46
-
47
61
  # @rbs (Array[Token] remaining) -> external_token
48
62
  def constant_name: (Array[Token] remaining) -> external_token
49
63
 
@@ -62,6 +76,9 @@ module Ibex
62
76
  # @rbs (String value) -> bool
63
77
  def declaration_boundary?: (String value) -> bool
64
78
 
79
+ # @rbs () -> bool
80
+ def extended_features?: () -> bool
81
+
65
82
  # @rbs (Token token) -> external_token
66
83
  def precedence_identifier: (Token token) -> external_token
67
84
 
@@ -74,9 +91,60 @@ module Ibex
74
91
  # @rbs (Token token, Array[Token] remaining) -> external_token
75
92
  def classify_scalar: (Token token, Array[Token] remaining) -> external_token
76
93
 
94
+ # @rbs (external_token type) -> external_token?
95
+ def classify_single_symbol: (external_token type) -> external_token?
96
+
97
+ # @rbs (external_token type) -> external_token?
98
+ def continue_first_symbol: (external_token type) -> external_token?
99
+
100
+ # @rbs (Token token, external_token type) -> external_token?
101
+ def classify_token_alias: (Token token, external_token type) -> external_token?
102
+
103
+ # @rbs (external_token type) -> external_token?
104
+ def classify_metadata: (external_token type) -> external_token?
105
+
106
+ # @rbs (external_token type) -> external_token?
107
+ def classify_printer: (external_token type) -> external_token?
108
+
109
+ # @rbs (external_token type) -> external_token?
110
+ def classify_grammar_test: (external_token type) -> external_token?
111
+
112
+ # @rbs (Token token, external_token type, Array[Token] remaining) -> external_token?
113
+ def classify_conversion: (Token token, external_token type, Array[Token] remaining) -> external_token?
114
+
77
115
  # @rbs (external_token type) -> external_token
78
116
  def finish_single_symbol: (external_token type) -> external_token
79
117
 
118
+ # @rbs (external_token type) -> external_token
119
+ def continue_start_symbols: (external_token type) -> external_token
120
+
121
+ # @rbs (external_token type) -> external_token
122
+ def continue_recovery_symbols: (external_token type) -> external_token
123
+
124
+ # @rbs (external_token type) -> external_token
125
+ def continue_on_error_reduce_symbols: (external_token type) -> external_token
126
+
127
+ # @rbs (external_token type) -> external_token
128
+ def begin_metadata_value: (external_token type) -> external_token
129
+
130
+ # @rbs () -> external_token
131
+ def begin_param_type: () -> external_token
132
+
133
+ # @rbs (external_token type) -> external_token
134
+ def begin_printer_action: (external_token type) -> external_token
135
+
136
+ # @rbs (Token token) -> external_token
137
+ def begin_recovery_colon: (Token token) -> external_token
138
+
139
+ # @rbs (Token token) -> external_token
140
+ def begin_test_source: (Token token) -> external_token
141
+
142
+ # @rbs (external_token type) -> external_token
143
+ def finish_param_type: (external_token type) -> external_token
144
+
145
+ # @rbs (external_token type) -> external_token
146
+ def finish_metadata_value: (external_token type) -> external_token
147
+
80
148
  # @rbs (external_token type) -> external_token
81
149
  def finish_conversion: (external_token type) -> external_token
82
150
 
@@ -11,6 +11,8 @@ module Ibex
11
11
 
12
12
  attr_reader state: Symbol
13
13
 
14
+ @node_annotation: bool?
15
+
14
16
  @rule_seen: bool?
15
17
 
16
18
  @lhs_column: Integer?
@@ -35,10 +37,16 @@ module Ibex
35
37
 
36
38
  private
37
39
 
40
+ # @rbs () -> external_token
41
+ def classify_inline: () -> external_token
42
+
38
43
  # @rbs (Token token, Array[Token] remaining, external_token? last_external,
39
44
  # external_token? previous_external) -> external_token
40
45
  def classify_identifier: (Token token, Array[Token] remaining, external_token? last_external, external_token? previous_external) -> external_token
41
46
 
47
+ # @rbs (Token token, Array[Token] remaining) -> external_token
48
+ def classify_rhs_identifier: (Token token, Array[Token] remaining) -> external_token
49
+
42
50
  # @rbs (Token token) -> external_token
43
51
  def rule_lhs: (Token token) -> external_token
44
52
 
@@ -48,6 +56,12 @@ module Ibex
48
56
  # @rbs (Token token, Token following) -> bool
49
57
  def rule_boundary?: (Token token, Token following) -> bool
50
58
 
59
+ # @rbs (Token token, Array[Token] remaining) -> bool
60
+ def parameterized_rule_boundary?: (Token token, Array[Token] remaining) -> bool
61
+
62
+ # @rbs (Array[Token] tail) -> bool
63
+ def parameter_definition_tail?: (Array[Token] tail) -> bool
64
+
51
65
  # @rbs (Token token) -> external_token
52
66
  def start_rule: (Token token) -> external_token
53
67
 
@@ -60,6 +74,12 @@ module Ibex
60
74
  # @rbs (Token token) -> external_token
61
75
  def separated_terminal: (Token token) -> external_token
62
76
 
77
+ # @rbs (Token token, Token following) -> bool
78
+ def parameterized_call?: (Token token, Token following) -> bool
79
+
80
+ # @rbs (Token left, Token right) -> bool
81
+ def adjacent?: (Token left, Token right) -> bool
82
+
63
83
  # @rbs (Token token) -> external_token
64
84
  def classify_punctuation: (Token token) -> external_token
65
85
 
@@ -22,8 +22,8 @@ module Ibex
22
22
 
23
23
  @tokens: Array[Token]
24
24
 
25
- # @rbs (Array[Token] tokens) -> void
26
- def initialize: (Array[Token] tokens) -> void
25
+ # @rbs (Array[Token] tokens, ?extended: bool) -> void
26
+ def initialize: (Array[Token] tokens, ?extended: bool) -> void
27
27
 
28
28
  # @rbs () -> ([external_token, Token] | false)
29
29
  def next_token: () -> ([ external_token, Token ] | false)
@@ -40,6 +40,9 @@ module Ibex
40
40
  # @rbs () -> bool
41
41
  def extended_pragma?: () -> bool
42
42
 
43
+ # @rbs () -> bool
44
+ def cst_pragma?: () -> bool
45
+
43
46
  # @rbs () -> parser_section
44
47
  def section: () -> parser_section
45
48
 
@@ -10,6 +10,6 @@ module Ibex
10
10
 
11
11
  type parser_section = :declarations | :rules | :user_code
12
12
 
13
- type delimiter_kind = :group | :separated
13
+ type delimiter_kind = :group | :separated | :parameter
14
14
  end
15
15
  end
@@ -0,0 +1,37 @@
1
+ # Generated from lib/ibex/generation_input.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Digest and identity of source bytes actually consumed by one generation.
5
+ class GenerationInput
6
+ attr_reader path: String
7
+
8
+ attr_reader sha256: String
9
+
10
+ attr_reader bytesize: Integer
11
+
12
+ attr_reader dev: Integer
13
+
14
+ attr_reader ino: Integer
15
+
16
+ attr_reader access_paths: Array[String]
17
+
18
+ # @rbs (String path, String source, ?access_path: String) -> void
19
+ def initialize: (String path, String source, ?access_path: String) -> void
20
+
21
+ # Record another lexical path that supplied these canonical bytes.
22
+ # @rbs (String path) -> void
23
+ def add_access_path: (String path) -> void
24
+
25
+ # @rbs () -> Hash[String, untyped]
26
+ def to_h: () -> Hash[String, untyped]
27
+
28
+ # Detect content changes even when size and timestamps are preserved.
29
+ # @rbs () -> bool
30
+ def current?: () -> bool
31
+
32
+ private
33
+
34
+ # @rbs () -> bool
35
+ def lexical_paths_current?: () -> bool
36
+ end
37
+ end
@@ -0,0 +1,67 @@
1
+ # Generated from lib/ibex/generation_manifest.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Deterministic description of one published parser generation.
5
+ module GenerationManifest
6
+ SCHEMA_VERSION: Integer
7
+
8
+ IDENTIFIER: String
9
+
10
+ ROOT_KEYS: Array[String]
11
+
12
+ INPUT_KEYS: Array[String]
13
+
14
+ FILE_KEYS: Array[String]
15
+
16
+ ARTIFACT_KEYS: Array[String]
17
+
18
+ # @rbs (ArtifactSet artifacts, source_records: Array[GenerationInput], options: Hash[String, untyped]) -> String
19
+ def self?.render: (ArtifactSet artifacts, source_records: Array[GenerationInput], options: Hash[String, untyped]) -> String
20
+
21
+ # Validate the manifest shape and, by default, every published artifact digest.
22
+ # @rbs (String source, ?verify_artifacts: bool) -> Hash[String, untyped]
23
+ def self?.validate: (String source, ?verify_artifacts: bool) -> Hash[String, untyped]
24
+
25
+ # @rbs (String path, ?verify_artifacts: bool) -> Hash[String, untyped]
26
+ def self?.validate_file: (String path, ?verify_artifacts: bool) -> Hash[String, untyped]
27
+
28
+ # @rbs (Artifact artifact) -> Hash[String, untyped]
29
+ def self?.artifact_entry: (Artifact artifact) -> Hash[String, untyped]
30
+
31
+ # @rbs (Array[Hash[String, untyped]] files) -> String
32
+ def self?.input_digest: (Array[Hash[String, untyped]] files) -> String
33
+
34
+ # @rbs (Hash[String, untyped] value) -> Hash[String, untyped]
35
+ def self?.sorted_hash: (Hash[String, untyped] value) -> Hash[String, untyped]
36
+
37
+ # @rbs (untyped document) -> void
38
+ def self?.validate_document: (untyped document) -> void
39
+
40
+ # @rbs (Hash[untyped, untyped] document) -> void
41
+ def self?.validate_identity: (Hash[untyped, untyped] document) -> void
42
+
43
+ # @rbs (untyped input) -> void
44
+ def self?.validate_input: (untyped input) -> void
45
+
46
+ # @rbs (Array[untyped] entries, String label, ?require_kind: bool) -> void
47
+ def self?.validate_entries: (Array[untyped] entries, String label, ?require_kind: bool) -> void
48
+
49
+ # @rbs (untyped entry, String label, bool require_kind) -> void
50
+ def self?.validate_entry: (untyped entry, String label, bool require_kind) -> void
51
+
52
+ # @rbs (untyped path, String label) -> void
53
+ def self?.validate_path: (untyped path, String label) -> void
54
+
55
+ # @rbs (untyped kind, String label) -> void
56
+ def self?.validate_kind: (untyped kind, String label) -> void
57
+
58
+ # @rbs (untyped digest, String label) -> void
59
+ def self?.validate_digest: (untyped digest, String label) -> void
60
+
61
+ # @rbs (Hash[untyped, untyped] value, Array[String] expected, String label) -> void
62
+ def self?.exact_keys!: (Hash[untyped, untyped] value, Array[String] expected, String label) -> void
63
+
64
+ # @rbs (Array[untyped] entries) -> void
65
+ def self?.verify_entries: (Array[untyped] entries) -> void
66
+ end
67
+ end
@@ -0,0 +1,82 @@
1
+ # Generated from lib/ibex/generation_transaction.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Publishes a rendered ArtifactSet with rollback and a manifest-last marker.
5
+ class GenerationTransaction
6
+ include GenerationTransactionRecovery
7
+
8
+ include GenerationTransactionValidation
9
+
10
+ class SourceChanged < Ibex::Error
11
+ end
12
+
13
+ class Error < Ibex::Error
14
+ attr_reader rollback_failed: bool
15
+
16
+ attr_reader recovery_artifacts: Array[String]
17
+
18
+ # @rbs (String message, ?rollback_failed: bool, ?recovery_artifacts: Array[String]) -> void
19
+ def initialize: (String message, ?rollback_failed: bool, ?recovery_artifacts: Array[String]) -> void
20
+ end
21
+
22
+ # rubocop:disable Layout/LineLength
23
+ # @rbs (ArtifactSet artifacts, ?warning: ^(String) -> void, ?stability_check: ^() -> bool, ?source_records: Array[GenerationInput], ?lock_sleeper: ^(Float) -> void) -> void
24
+ def initialize: (ArtifactSet artifacts, ?warning: ^(String) -> void, ?stability_check: ^() -> bool, ?source_records: Array[GenerationInput], ?lock_sleeper: ^(Float) -> void) -> void
25
+
26
+ # @rbs () -> void
27
+ def commit: () -> void
28
+
29
+ private
30
+
31
+ # @rbs () -> void
32
+ def prepare_records: () -> void
33
+
34
+ # @rbs (Artifact artifact, String target) -> Integer
35
+ def target_mode: (Artifact artifact, String target) -> Integer
36
+
37
+ # @rbs () -> void
38
+ def acquire_locks: () -> void
39
+
40
+ # @rbs (File lock, String path) -> void
41
+ def acquire_lock: (File lock, String path) -> void
42
+
43
+ # @rbs (String target) -> String
44
+ def lock_path: (String target) -> String
45
+
46
+ # @rbs () -> void
47
+ def stage_records: () -> void
48
+
49
+ # @rbs () -> void
50
+ def backup_records: () -> void
51
+
52
+ # @rbs (String directory, String suffix) -> File
53
+ def create_temporary_file: (String directory, String suffix) -> File
54
+
55
+ # @rbs (String target, String directory) -> String
56
+ def create_backup_link: (String target, String directory) -> String
57
+
58
+ # @rbs (String directory, String suffix) { (String) -> void } -> void
59
+ def with_temporary_path: (String directory, String suffix) { (String) -> void } -> void
60
+
61
+ # @rbs (Symbol group) -> void
62
+ def install_group: (Symbol group) -> void
63
+
64
+ # @rbs (Artifact artifact) -> Symbol
65
+ def publication_group: (Artifact artifact) -> Symbol
66
+
67
+ # @rbs () -> void
68
+ def sync_directories!: () -> void
69
+
70
+ # @rbs () -> void
71
+ def cleanup_success: () -> void
72
+
73
+ # @rbs (Exception error) -> void
74
+ def report_post_commit_failure: (Exception error) -> void
75
+
76
+ # @rbs (String message) -> void
77
+ def warn_best_effort: (String message) -> void
78
+
79
+ # @rbs () -> void
80
+ def release_locks: () -> void
81
+ end
82
+ end