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,86 @@
1
+ # Generated from lib/ibex/lalr/direct_lookaheads.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LALR
5
+ # Builds an LR(0) collection and propagates LALR(1) lookaheads directly
6
+ # over item occurrences. Canonical LR(1) states are never materialized.
7
+ class DirectLookaheads
8
+ AUGMENTED_PRODUCTION: Integer
9
+
10
+ EMPTY_PRODUCTIONS: Array[IR::Production]
11
+
12
+ EMPTY_NODES: Array[lookahead_node]
13
+
14
+ @terminal_masks: Array[Integer]
15
+
16
+ @terminal_ids: Array[Integer]
17
+
18
+ @production_item_cores: Array[Array[item_core]]
19
+
20
+ @augmented_item_cores: Array[item_core]
21
+
22
+ @production_rhs: Array[Array[Integer]]
23
+
24
+ @augmented_rhs: Array[Integer]
25
+
26
+ @productions_by_lhs: Hash[Integer, Array[IR::Production]]
27
+
28
+ @sets: Analysis::Sets
29
+
30
+ @grammar: IR::Grammar
31
+
32
+ # @rbs (IR::Grammar grammar, Analysis::Sets sets) -> void
33
+ def initialize: (IR::Grammar grammar, Analysis::Sets sets) -> void
34
+
35
+ # @rbs () -> [Array[packed_items], transitions]
36
+ def build: () -> [ Array[packed_items], transitions ]
37
+
38
+ private
39
+
40
+ # @rbs () -> [Array[core_set], transitions]
41
+ def lr0_collection: () -> [ Array[core_set], transitions ]
42
+
43
+ # @rbs (core_set seed) -> core_set
44
+ def closure: (core_set seed) -> core_set
45
+
46
+ # @rbs (core_set items) -> Hash[Integer, core_set]
47
+ def shifted_kernels: (core_set items) -> Hash[Integer, core_set]
48
+
49
+ # @rbs (Array[core_set] states) -> Array[packed_items]
50
+ def empty_lookaheads: (Array[core_set] states) -> Array[packed_items]
51
+
52
+ # @rbs (Array[core_set] states, transitions transitions, Array[packed_items] lookaheads) ->
53
+ # Hash[lookahead_node, Array[lookahead_node]]
54
+ def propagation_graph: (Array[core_set] states, transitions transitions, Array[packed_items] lookaheads) -> Hash[lookahead_node, Array[lookahead_node]]
55
+
56
+ # @rbs (Hash[lookahead_node, Array[lookahead_node]] edges, transitions transitions,
57
+ # Integer state_id, Integer production_id, Integer dot) -> void
58
+ def add_transition_edge: (Hash[lookahead_node, Array[lookahead_node]] edges, transitions transitions, Integer state_id, Integer production_id, Integer dot) -> void
59
+
60
+ # @rbs (Hash[lookahead_node, Array[lookahead_node]] edges, Array[packed_items] lookaheads,
61
+ # Integer state_id, Integer production_id, Integer dot) -> void
62
+ def add_closure_relations: (Hash[lookahead_node, Array[lookahead_node]] edges, Array[packed_items] lookaheads, Integer state_id, Integer production_id, Integer dot) -> void
63
+
64
+ # @rbs (Array[packed_items] lookaheads, Hash[lookahead_node, Array[lookahead_node]] edges) -> void
65
+ def propagate: (Array[packed_items] lookaheads, Hash[lookahead_node, Array[lookahead_node]] edges) -> void
66
+
67
+ # @rbs (Array[packed_items] lookaheads, lookahead_node node) -> Set[Integer]
68
+ def node_set: (Array[packed_items] lookaheads, lookahead_node node) -> Set[Integer]
69
+
70
+ # @rbs (Integer bits) -> Array[Integer]
71
+ def terminal_ids: (Integer bits) -> Array[Integer]
72
+
73
+ # @rbs (Integer production_id) -> Array[Integer]
74
+ def rhs_for: (Integer production_id) -> Array[Integer]
75
+
76
+ # @rbs (Integer production_id, Integer rhs_length) -> Array[item_core]
77
+ def item_cores_for: (Integer production_id, Integer rhs_length) -> Array[item_core]
78
+
79
+ # @rbs (Integer production_id, Integer dot) -> item_core
80
+ def item_core: (Integer production_id, Integer dot) -> item_core
81
+
82
+ # @rbs (core_set items) -> Array[item_core]
83
+ def item_key: (core_set items) -> Array[item_core]
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,59 @@
1
+ # Generated from lib/ibex/lalr/ielr_partition.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LALR
5
+ # Deterministically merges compatible canonical LR(1) states and splits
6
+ # partitions until their outgoing transitions are congruent.
7
+ class IELRPartition
8
+ AUGMENTED_PRODUCTION: Integer
9
+
10
+ @contributions: Array[Hash[Integer, Set[Array[untyped]]]]
11
+
12
+ @transitions: transitions
13
+
14
+ @states: Array[item_set]
15
+
16
+ @grammar: IR::Grammar
17
+
18
+ # @rbs (IR::Grammar grammar, Array[item_set] states, transitions transitions) -> void
19
+ def initialize: (IR::Grammar grammar, Array[item_set] states, transitions transitions) -> void
20
+
21
+ # @rbs () -> [Array[packed_items], transitions]
22
+ def build: () -> [ Array[packed_items], transitions ]
23
+
24
+ private
25
+
26
+ # @rbs () -> Array[state_partition]
27
+ def initial_partitions: () -> Array[state_partition]
28
+
29
+ # @rbs (Array[Integer] members) -> Array[state_partition]
30
+ def compatible_partitions: (Array[Integer] members) -> Array[state_partition]
31
+
32
+ # A canonical member may gain an action only where it previously had no
33
+ # action. Every nonempty member cell must equal the merged cell.
34
+ # @rbs (state_partition members) -> bool
35
+ def compatible?: (state_partition members) -> bool
36
+
37
+ # @rbs (Array[state_partition] partitions) -> Array[state_partition]
38
+ def refine_transitions: (Array[state_partition] partitions) -> Array[state_partition]
39
+
40
+ # @rbs (Integer state_id, Hash[Integer, Integer] indexes) -> Array[[Integer, Integer]]
41
+ def transition_signature: (Integer state_id, Hash[Integer, Integer] indexes) -> Array[[ Integer, Integer ]]
42
+
43
+ # @rbs (Array[state_partition] partitions) -> Hash[Integer, Integer]
44
+ def partition_indexes: (Array[state_partition] partitions) -> Hash[Integer, Integer]
45
+
46
+ # @rbs (state_partition members) -> packed_items
47
+ def merge_items: (state_partition members) -> packed_items
48
+
49
+ # @rbs (Integer state_id) -> Hash[Integer, Set[Array[untyped]]]
50
+ def action_contributions: (Integer state_id) -> Hash[Integer, Set[Array[untyped]]]
51
+
52
+ # @rbs (Integer production_id) -> Array[Integer]
53
+ def rhs_for: (Integer production_id) -> Array[Integer]
54
+
55
+ # @rbs (item_set items) -> Array[item_core]
56
+ def core_key: (item_set items) -> Array[item_core]
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,22 @@
1
+ # Generated from lib/ibex/lalr/on_error_reductions.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LALR
5
+ # Delays syntax-error detection by filling only otherwise erroneous table
6
+ # cells with one uniquely highest-priority declared reduction.
7
+ module OnErrorReductions
8
+ # @rbs (IR::Grammar grammar, Array[IR::AutomatonState] states) -> Array[IR::AutomatonState]
9
+ def self?.apply: (IR::Grammar grammar, Array[IR::AutomatonState] states) -> Array[IR::AutomatonState]
10
+
11
+ # @rbs (IR::Grammar grammar) -> Hash[Integer, Integer]
12
+ def self?.reduction_priorities: (IR::Grammar grammar) -> Hash[Integer, Integer]
13
+
14
+ # @rbs (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities,
15
+ # Array[Integer] terminal_ids) -> IR::AutomatonState
16
+ def apply_state: (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities, Array[Integer] terminal_ids) -> IR::AutomatonState
17
+
18
+ # @rbs (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities) -> Integer?
19
+ def selected_production: (IR::Grammar grammar, IR::AutomatonState state, Hash[Integer, Integer] priorities) -> Integer?
20
+ end
21
+ end
22
+ end
data/sig/ibex/lalr.rbs CHANGED
@@ -6,12 +6,18 @@ module Ibex
6
6
 
7
7
  type item_core = [ Integer, Integer ]
8
8
 
9
+ type core_set = Set[item_core]
10
+
9
11
  type item_set = Set[lr_item]
10
12
 
11
13
  type packed_items = Hash[item_core, Set[Integer]]
12
14
 
13
15
  type transitions = Array[Hash[Integer, Integer]]
14
16
 
17
+ type lookahead_node = [ Integer, Integer, Integer ]
18
+
19
+ type state_partition = Array[Integer]
20
+
15
21
  type derivation_node = Hash[Symbol, untyped]
16
22
 
17
23
  type search_status = :conflict | :shifted | :accepted
@@ -0,0 +1,67 @@
1
+ # Generated from lib/ibex/location.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Immutable source range suitable for lexer tokens and parser diagnostics.
5
+ #
6
+ # Coordinates are one-based. Byte offsets are optional, zero-based, and
7
+ # half-open. Keeping both forms lets Unicode-aware lexers report human
8
+ # columns without losing an exact source slice.
9
+ class Location
10
+ attr_reader file: String?
11
+
12
+ attr_reader line: Integer
13
+
14
+ attr_reader column: Integer
15
+
16
+ attr_reader end_line: Integer
17
+
18
+ attr_reader end_column: Integer
19
+
20
+ attr_reader start_byte: Integer?
21
+
22
+ attr_reader end_byte: Integer?
23
+
24
+ attr_reader source_line: String?
25
+
26
+ # @rbs (?file: String?, line: Integer, column: Integer, ?end_line: Integer?,
27
+ # ?end_column: Integer?, ?start_byte: Integer?, ?end_byte: Integer?, ?source_line: String?) -> void
28
+ def initialize: (line: Integer, column: Integer, ?file: String?, ?end_line: Integer?, ?end_column: Integer?, ?start_byte: Integer?, ?end_byte: Integer?, ?source_line: String?) -> void
29
+
30
+ # Return the smallest range covering both locations.
31
+ # @rbs (Location other) -> Location
32
+ def join: (Location other) -> Location
33
+
34
+ # Fold a nonempty collection into one covering range.
35
+ # @rbs (Enumerable[Location] locations) -> Location
36
+ def self.join: (Enumerable[Location] locations) -> Location
37
+
38
+ # @rbs () -> bool
39
+ def empty?: () -> bool
40
+
41
+ # @rbs () -> Hash[Symbol, untyped]
42
+ def to_h: () -> Hash[Symbol, untyped]
43
+
44
+ private
45
+
46
+ # @rbs (Symbol name, untyped value) -> Integer
47
+ def positive_coordinate: (Symbol name, untyped value) -> Integer
48
+
49
+ # @rbs (Symbol name, untyped value) -> Integer?
50
+ def optional_offset: (Symbol name, untyped value) -> Integer?
51
+
52
+ # @rbs () -> void
53
+ def validate_order!: () -> void
54
+
55
+ # @rbs (Location left, Location right) -> bool
56
+ def before_or_equal?: (Location left, Location right) -> bool
57
+
58
+ # @rbs (Location left, Location right) -> bool
59
+ def before_or_equal_end?: (Location left, Location right) -> bool
60
+
61
+ # @rbs (Location other) -> Integer?
62
+ def joined_start_byte: (Location other) -> Integer?
63
+
64
+ # @rbs (Location other) -> Integer?
65
+ def joined_end_byte: (Location other) -> Integer?
66
+ end
67
+ end
@@ -0,0 +1,24 @@
1
+ # Generated from lib/ibex/lsp/document_handlers.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Applies full-text LSP document notifications to the overlay-backed store.
6
+ module DocumentHandlers
7
+ include RequestSupport
8
+
9
+ private
10
+
11
+ # @rbs (untyped raw_params) -> nil
12
+ def did_open: (untyped raw_params) -> nil
13
+
14
+ # @rbs (untyped raw_params) -> nil
15
+ def did_change: (untyped raw_params) -> nil
16
+
17
+ # @rbs (untyped raw_params) -> nil
18
+ def did_save: (untyped raw_params) -> nil
19
+
20
+ # @rbs (untyped raw_params) -> nil
21
+ def did_close: (untyped raw_params) -> nil
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,94 @@
1
+ # Generated from lib/ibex/lsp/document_store.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Owns open buffers, parsed snapshots, include closures, and reverse dependencies.
6
+ class DocumentStore
7
+ include DocumentStoreValidation
8
+
9
+ include DocumentStoreDiagnostics
10
+
11
+ type snapshot = { uri: String, path: String, version: Integer?, source: String, open: bool, document: Frontend::SourceDocument? }
12
+
13
+ type publication = { uri: String, ?version: Integer, diagnostics: Array[WorkspaceAnalyzer::lsp_diagnostic] }
14
+
15
+ attr_reader loader: Frontend::SourceLoader
16
+
17
+ attr_reader workspace: Workspace
18
+
19
+ # @rbs (Workspace workspace, Frontend::SourceLoader loader) -> void
20
+ def initialize: (Workspace workspace, Frontend::SourceLoader loader) -> void
21
+
22
+ # @rbs (String uri, Integer version, String source) -> Array[publication]
23
+ def open: (String uri, Integer version, String source) -> Array[publication]
24
+
25
+ # @rbs (String uri, Integer version, String source) -> Array[publication]
26
+ def change: (String uri, Integer version, String source) -> Array[publication]
27
+
28
+ # @rbs (String uri, ?source: String?) -> Array[publication]
29
+ def save: (String uri, ?source: String?) -> Array[publication]
30
+
31
+ # Clear the open version first, then replace it with a disk snapshot if one exists.
32
+ # @rbs (String uri) -> Array[publication]
33
+ def close: (String uri) -> Array[publication]
34
+
35
+ # @rbs (String path) -> snapshot?
36
+ def snapshot_for: (String path) -> snapshot?
37
+
38
+ # Preserve the URI spelling used to open a document; closed files use their canonical URI.
39
+ # @rbs (String path) -> String
40
+ def uri_for: (String path) -> String
41
+
42
+ # @rbs (String path) -> Array[String]
43
+ def files_for: (String path) -> Array[String]
44
+
45
+ # @rbs (String path) -> Array[Frontend::Resolution]
46
+ def resolutions_for: (String path) -> Array[Frontend::Resolution]
47
+
48
+ # @rbs (String path) -> Array[String]
49
+ def roots_for: (String path) -> Array[String]
50
+
51
+ private
52
+
53
+ # @rbs (String path) -> Array[publication]
54
+ def refresh: (String path) -> Array[publication]
55
+
56
+ # @rbs (String path) -> Array[publication]
57
+ def refresh_dependents: (String path) -> Array[publication]
58
+
59
+ # @rbs (String root) -> void
60
+ def refresh_root: (String root) -> void
61
+
62
+ # @rbs () -> void
63
+ def rebuild_reverse_dependencies: () -> void
64
+
65
+ # @rbs (String path) -> Array[String]
66
+ def affected_roots: (String path) -> Array[String]
67
+
68
+ # @rbs (String path, WorkspaceAnalyzer::analyzed_document analyzed, ?own_diagnostics: bool) -> void
69
+ def update_snapshot: (String path, WorkspaceAnalyzer::analyzed_document analyzed, ?own_diagnostics: bool) -> void
70
+
71
+ # @rbs (String path, Frontend::SourceDocument? document) -> void
72
+ def update_root_membership: (String path, Frontend::SourceDocument? document) -> void
73
+
74
+ # @rbs (Array[String] paths) -> Array[publication]
75
+ def publish_paths: (Array[String] paths) -> Array[publication]
76
+
77
+ # @rbs (String uri, String path, Integer? version, String source, bool open,
78
+ # Frontend::SourceDocument? document) -> snapshot
79
+ def snapshot: (String uri, String path, Integer? version, String source, bool open, Frontend::SourceDocument? document) -> snapshot
80
+
81
+ # @rbs (String path, String uri) -> snapshot
82
+ def open_snapshot: (String path, String uri) -> snapshot
83
+
84
+ # @rbs () -> Array[String]
85
+ def empty_paths: () -> Array[String]
86
+
87
+ # @rbs (String path) -> void
88
+ def remove_path: (String path) -> void
89
+
90
+ # @rbs (String path) -> void
91
+ def remove_root_state: (String path) -> void
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,20 @@
1
+ # Generated from lib/ibex/lsp/document_store_diagnostics.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Owns per-document and per-root diagnostic aggregation for DocumentStore.
6
+ module DocumentStoreDiagnostics
7
+ private
8
+
9
+ # @rbs (String root, Array[String] files, Hash[String, WorkspaceAnalyzer::analyzed_document] analyzed,
10
+ # Array[WorkspaceAnalyzer::lsp_diagnostic] errors) -> void
11
+ def replace_root_diagnostics: (String root, Array[String] files, Hash[String, WorkspaceAnalyzer::analyzed_document] analyzed, Array[WorkspaceAnalyzer::lsp_diagnostic] errors) -> void
12
+
13
+ # @rbs (String path) -> Array[WorkspaceAnalyzer::lsp_diagnostic]
14
+ def aggregated_diagnostics: (String path) -> Array[WorkspaceAnalyzer::lsp_diagnostic]
15
+
16
+ # @rbs () -> Array[WorkspaceAnalyzer::lsp_diagnostic]
17
+ def empty_diagnostics: () -> Array[WorkspaceAnalyzer::lsp_diagnostic]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ # Generated from lib/ibex/lsp/document_store_validation.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Validates versions, source bounds, and prospective multi-file workspace edits.
6
+ module DocumentStoreValidation
7
+ # @rbs (Hash[String, String] replacements) -> bool
8
+ def valid_replacements?: (Hash[String, String] replacements) -> bool
9
+
10
+ private
11
+
12
+ # @rbs (Integer version) -> void
13
+ def validate_version: (Integer version) -> void
14
+
15
+ # @rbs (String source) -> void
16
+ def validate_source: (String source) -> void
17
+
18
+ # @rbs (String path, String source) -> void
19
+ def parse_candidate: (String path, String source) -> void
20
+
21
+ # Resolve disk independently from overlay aliases before removing an open buffer.
22
+ # @rbs (String path, String uri) -> String?
23
+ def disk_path_for_close: (String path, String uri) -> String?
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,30 @@
1
+ # Generated from lib/ibex/lsp/initialization_handlers.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Handles initialize/initialized/shutdown/exit lifecycle transitions.
6
+ module InitializationHandlers
7
+ include RequestSupport
8
+
9
+ private
10
+
11
+ # @rbs (untyped raw_params) -> Hash[String, untyped]
12
+ def initialize_workspace: (untyped raw_params) -> Hash[String, untyped]
13
+
14
+ # @rbs (untyped params) -> nil
15
+ def initialized_notification: (untyped params) -> nil
16
+
17
+ # @rbs (untyped params) -> nil
18
+ def shutdown_request: (untyped params) -> nil
19
+
20
+ # @rbs (untyped params) -> nil
21
+ def exit_notification: (untyped params) -> nil
22
+
23
+ # @rbs () -> Hash[String, untyped]
24
+ def capabilities: () -> Hash[String, untyped]
25
+
26
+ # @rbs (Hash[String, untyped] params) -> Array[String]
27
+ def initialization_roots: (Hash[String, untyped] params) -> Array[String]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ # Generated from lib/ibex/lsp/navigation_handlers.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Serves symbol navigation, rename, and hover requests.
6
+ module NavigationHandlers
7
+ include RequestSupport
8
+
9
+ private
10
+
11
+ # @rbs (untyped raw_params) -> Array[Hash[String, untyped]]
12
+ def definition: (untyped raw_params) -> Array[Hash[String, untyped]]
13
+
14
+ # @rbs (untyped raw_params) -> Array[Hash[String, untyped]]
15
+ def references: (untyped raw_params) -> Array[Hash[String, untyped]]
16
+
17
+ # @rbs (untyped raw_params) -> Hash[String, untyped]?
18
+ def prepare_rename: (untyped raw_params) -> Hash[String, untyped]?
19
+
20
+ # @rbs (untyped raw_params) -> Hash[String, untyped]
21
+ def rename: (untyped raw_params) -> Hash[String, untyped]
22
+
23
+ # @rbs (untyped raw_params) -> Hash[String, untyped]?
24
+ def hover: (untyped raw_params) -> Hash[String, untyped]?
25
+
26
+ # @rbs (untyped raw_params) { (SymbolIndex, String, Hash[String, untyped]) -> untyped } -> untyped
27
+ def with_index: (untyped raw_params) { (SymbolIndex, String, Hash[String, untyped]) -> untyped } -> untyped
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,40 @@
1
+ # Generated from lib/ibex/lsp/position_codec.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Converts between frontend byte offsets and zero-based LSP UTF-16 positions.
6
+ class PositionCodec
7
+ # @rbs (String source) -> void
8
+ def initialize: (String source) -> void
9
+
10
+ # @rbs (Integer byte_offset) -> Hash[String, Integer]
11
+ def position: (Integer byte_offset) -> Hash[String, Integer]
12
+
13
+ # @rbs (Hash[String, untyped] position) -> Integer
14
+ def byte_offset: (Hash[String, untyped] position) -> Integer
15
+
16
+ # @rbs (Frontend::SourceSpan span) -> Hash[String, Hash[String, Integer]]
17
+ def range: (Frontend::SourceSpan span) -> Hash[String, Hash[String, Integer]]
18
+
19
+ private
20
+
21
+ # @rbs () -> Array[Integer]
22
+ def build_line_starts: () -> Array[Integer]
23
+
24
+ # @rbs (Integer line) -> Integer
25
+ def content_end: (Integer line) -> Integer
26
+
27
+ # @rbs (String text) -> Integer
28
+ def utf16_length: (String text) -> Integer
29
+
30
+ # @rbs (String text, Integer units) -> Integer
31
+ def byte_length_at_utf16: (String text, Integer units) -> Integer
32
+
33
+ # @rbs (Hash[String, untyped] position, String name) -> Integer
34
+ def integer_member: (Hash[String, untyped] position, String name) -> Integer
35
+
36
+ # @rbs (Integer byte_offset) -> void
37
+ def validate_byte_offset: (Integer byte_offset) -> void
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,32 @@
1
+ # Generated from lib/ibex/lsp/protocol_error.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Resource bounds shared by transport and open-document validation.
6
+ module Limits
7
+ MAX_HEADER_BYTES: untyped
8
+
9
+ MAX_MESSAGE_BYTES: untyped
10
+
11
+ MAX_DOCUMENT_BYTES: untyped
12
+
13
+ MAX_OUTPUT_BYTES: untyped
14
+
15
+ MAX_ERROR_MESSAGE_CHARACTERS: ::Integer
16
+
17
+ MAX_REQUEST_ID_BYTES: ::Integer
18
+ end
19
+
20
+ # Bounded protocol and workspace failures with their JSON-RPC error code.
21
+ class ProtocolError < Ibex::Error
22
+ attr_reader code: Integer
23
+
24
+ attr_reader request_id: String | Integer | nil
25
+
26
+ attr_reader fatal: bool
27
+
28
+ # @rbs (String message, ?code: Integer, ?request_id: String | Integer | nil, ?fatal: bool) -> void
29
+ def initialize: (String message, ?code: Integer, ?request_id: String | Integer | nil, ?fatal: bool) -> void
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ # Generated from lib/ibex/lsp/request_handlers.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Dispatches the finite LSP surface to focused lifecycle, document, and navigation handlers.
6
+ module RequestHandlers
7
+ include InitializationHandlers
8
+
9
+ include DocumentHandlers
10
+
11
+ include NavigationHandlers
12
+
13
+ include RequestSupport
14
+
15
+ HANDLERS: Hash[String, Symbol]
16
+
17
+ private
18
+
19
+ # @rbs (String method, untyped params) -> untyped
20
+ def dispatch: (String method, untyped params) -> untyped
21
+
22
+ # @rbs (untyped params) -> nil
23
+ def cancel_request: (untyped params) -> nil
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,40 @@
1
+ # Generated from lib/ibex/lsp/request_support.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module LSP
5
+ # Shared publication, state, and parameter validation for request handlers.
6
+ module RequestSupport
7
+ private
8
+
9
+ # @rbs (Array[DocumentStore::publication] publications) -> void
10
+ def publish: (Array[DocumentStore::publication] publications) -> void
11
+
12
+ # @rbs (String uri, Integer version) -> bool
13
+ def stale_publication?: (String uri, Integer version) -> bool
14
+
15
+ # @rbs (untyped value) -> Hash[String, untyped]
16
+ def params_hash: (untyped value) -> Hash[String, untyped]
17
+
18
+ # @rbs (Hash[String, untyped] value, String name) -> Hash[String, untyped]
19
+ def hash_member: (Hash[String, untyped] value, String name) -> Hash[String, untyped]
20
+
21
+ # @rbs (Hash[String, untyped] value, String name) -> String
22
+ def string_member: (Hash[String, untyped] value, String name) -> String
23
+
24
+ # @rbs (Hash[String, untyped] value, String name) -> Integer
25
+ def integer_member: (Hash[String, untyped] value, String name) -> Integer
26
+
27
+ # @rbs (Symbol state) -> void
28
+ def require_state!: (Symbol state) -> void
29
+
30
+ # @rbs () -> void
31
+ def require_running!: () -> void
32
+
33
+ # @rbs () -> DocumentStore
34
+ def store: () -> DocumentStore
35
+
36
+ # @rbs () -> Workspace
37
+ def workspace: () -> Workspace
38
+ end
39
+ end
40
+ end