ibex 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/README.md +95 -272
- data/docs/architecture.md +187 -35
- data/docs/bison-import.md +103 -0
- data/docs/comparison-policy.md +127 -0
- data/docs/configuration-model.md +59 -0
- data/docs/configuration-report.md +28 -0
- data/docs/conflict-explanation-reviews/v1/records/README.md +28 -0
- data/docs/conflict-explanation-study.md +62 -0
- data/docs/construction-profiling.md +157 -0
- data/docs/cst-migration.md +3 -4
- data/docs/cst.md +24 -0
- data/docs/decisions/0000-template.md +24 -0
- data/docs/decisions/0001-separate-ir-pipeline.md +34 -0
- data/docs/decisions/0002-opaque-user-code-boundary.md +32 -0
- data/docs/decisions/0003-self-hosted-grammar-frontend.md +32 -0
- data/docs/decisions/0004-shared-semantic-and-lossless-source-model.md +33 -0
- data/docs/decisions/0005-contained-grammar-composition.md +34 -0
- data/docs/decisions/0006-bounded-structural-grammar-lowering.md +32 -0
- data/docs/decisions/0007-shared-parser-construction-pipeline.md +33 -0
- data/docs/decisions/0008-versioned-runtime-package-boundary.md +36 -0
- data/docs/decisions/0009-isolated-parser-sessions.md +34 -0
- data/docs/decisions/0010-committed-runtime-observation.md +34 -0
- data/docs/decisions/0011-versioned-semantic-action-boundary.md +37 -0
- data/docs/decisions/0012-bounded-nonexecuting-analysis.md +37 -0
- data/docs/decisions/0013-transactional-generation-publication.md +37 -0
- data/docs/decisions/0014-versioned-generated-lexer.md +35 -0
- data/docs/decisions/0015-worker-isolated-browser-analysis.md +32 -0
- data/docs/decisions/0016-red-green-concrete-syntax.md +34 -0
- data/docs/decisions/0017-persistent-syntax-artifacts.md +35 -0
- data/docs/decisions/0018-conservative-incremental-syntax-reuse.md +38 -0
- data/docs/decisions/0019-runtime-syntax-session-boundary.md +51 -0
- data/docs/decisions/0020-grammar-ir-parser-contract.md +65 -0
- data/docs/decisions/0021-data-only-parser-table-sidecar.md +50 -0
- data/docs/decisions/0022-manifest-bound-verification-report.md +77 -0
- data/docs/decisions/0023-syntax-only-repair-results.md +48 -0
- data/docs/decisions/0024-direct-ielr-construction.md +42 -0
- data/docs/decisions/README.md +74 -0
- data/docs/declarative-configuration.md +262 -0
- data/docs/development.md +179 -2
- data/docs/direct-ielr-decision.md +120 -0
- data/docs/direct-multi-entry-decision.md +82 -0
- data/docs/editor-setup.md +2 -1
- data/docs/error-ux-review-rubric-v1.md +117 -0
- data/docs/error-ux-reviews/v1/records/README.md +22 -0
- data/docs/error-ux-round2-review-status-v1.json +27 -0
- data/docs/error-ux-round2-reviews/v1/records/README.md +30 -0
- data/docs/error-ux-round2-v1.json +1581 -0
- data/docs/error-ux-round2.md +111 -0
- data/docs/error-ux.md +54 -0
- data/docs/getting-started.md +80 -0
- data/docs/grammar-reference.md +184 -13
- data/docs/ielr-design.md +43 -0
- data/docs/ielr.md +92 -0
- data/docs/ja/bison-import.md +51 -0
- data/docs/ja/stable-api.md +53 -0
- data/docs/lexer-construction-profile.md +109 -0
- data/docs/lexer-migration.md +5 -0
- data/docs/maturity.md +128 -0
- data/docs/project-site-strategy.md +54 -0
- data/docs/racc-migration-evidence.md +45 -0
- data/docs/racc-migration.md +11 -0
- data/docs/release-readiness.md +126 -68
- data/docs/repair-semantics.md +123 -0
- data/docs/runtime-abi-evolution.md +307 -0
- data/docs/stability.md +144 -34
- data/docs/status.md +43 -0
- data/docs/syntax-sessions.md +183 -0
- data/docs/table-artifact.md +125 -0
- data/docs/test-interactions.md +219 -0
- data/docs/verification-report.md +137 -0
- data/docs/verifier-trust-boundary.md +199 -0
- data/docs/workloads.md +132 -0
- data/lib/ibex/analysis/digraph.rb +128 -0
- data/lib/ibex/analysis.rb +1 -0
- data/lib/ibex/bison_import/importer.rb +516 -0
- data/lib/ibex/bison_import/tokenizer.rb +260 -0
- data/lib/ibex/bison_import.rb +200 -0
- data/lib/ibex/bounded_subprocess.rb +171 -0
- data/lib/ibex/cli/ambiguity.rb +14 -5
- data/lib/ibex/cli/analysis.rb +134 -0
- data/lib/ibex/cli/bison_import.rb +121 -0
- data/lib/ibex/cli/config.rb +128 -0
- data/lib/ibex/cli/diagnostics.rb +31 -11
- data/lib/ibex/cli/documentation.rb +11 -8
- data/lib/ibex/cli/equiv.rb +169 -0
- data/lib/ibex/cli/error_messages.rb +11 -4
- data/lib/ibex/cli/explain.rb +14 -5
- data/lib/ibex/cli/fix.rb +203 -0
- data/lib/ibex/cli/formatting.rb +11 -10
- data/lib/ibex/cli/fuzz.rb +200 -0
- data/lib/ibex/cli/fuzz_regressions.rb +145 -0
- data/lib/ibex/cli/generation_artifacts.rb +53 -2
- data/lib/ibex/cli/generation_error_messages.rb +1 -1
- data/lib/ibex/cli/grammar_tests.rb +32 -14
- data/lib/ibex/cli/ir_tools.rb +5 -61
- data/lib/ibex/cli/outputs.rb +60 -33
- data/lib/ibex/cli/reduce.rb +202 -0
- data/lib/ibex/cli/reduce_reporting.rb +71 -0
- data/lib/ibex/cli/samples.rb +49 -23
- data/lib/ibex/cli/verify.rb +116 -0
- data/lib/ibex/cli/watch.rb +6 -5
- data/lib/ibex/cli.rb +357 -56
- data/lib/ibex/codegen/action_locations.rb +1 -1
- data/lib/ibex/codegen/action_method_source.rb +5 -6
- data/lib/ibex/codegen/action_source.rb +3 -2
- data/lib/ibex/codegen/ambiguity.rb +5 -4
- data/lib/ibex/codegen/explain.rb +123 -55
- data/lib/ibex/codegen/generated_action_abi.rb +10 -5
- data/lib/ibex/codegen/rbs.rb +15 -7
- data/lib/ibex/codegen/report.rb +25 -13
- data/lib/ibex/codegen/ruby.rb +28 -64
- data/lib/ibex/codegen/ruby_actions.rb +9 -6
- data/lib/ibex/codegen/ruby_syntax.rb +15 -9
- data/lib/ibex/configuration/analysis_grammar.rb +35 -0
- data/lib/ibex/configuration/explanation.rb +421 -0
- data/lib/ibex/configuration/inspector.rb +232 -0
- data/lib/ibex/configuration.rb +580 -0
- data/lib/ibex/coverage/collector.rb +21 -11
- data/lib/ibex/coverage/event_stream.rb +13 -7
- data/lib/ibex/coverage/report.rb +26 -18
- data/lib/ibex/coverage/runtime_event_validator.rb +30 -21
- data/lib/ibex/delta_reducer.rb +99 -0
- data/lib/ibex/diff.rb +140 -0
- data/lib/ibex/equiv/machine.rb +135 -0
- data/lib/ibex/equiv.rb +373 -0
- data/lib/ibex/fix.rb +557 -0
- data/lib/ibex/frontend/ast.rb +22 -2
- data/lib/ibex/frontend/bootstrap_parser.rb +6 -13
- data/lib/ibex/frontend/diagnostic.rb +1 -1
- data/lib/ibex/frontend/formatter.rb +72 -26
- data/lib/ibex/frontend/generated_parser.rb +147 -117
- data/lib/ibex/frontend/generated_parser_base.rb +7 -3
- data/lib/ibex/frontend/generated_parser_includes.rb +1 -11
- data/lib/ibex/frontend/generation.rb +1 -1
- data/lib/ibex/frontend/parser/declarations.rb +17 -2
- data/lib/ibex/frontend/parser_configuration_support.rb +56 -0
- data/lib/ibex/frontend/regenerator.rb +1 -0
- data/lib/ibex/frontend/resolution.rb +2 -1
- data/lib/ibex/frontend/resolver.rb +1 -1
- data/lib/ibex/frontend/rule_documentation.rb +2 -1
- data/lib/ibex/frontend/source_cursor.rb +2 -2
- data/lib/ibex/frontend/source_span.rb +9 -1
- data/lib/ibex/frontend/token_adapter/declaration_state.rb +38 -6
- data/lib/ibex/frontend/token_adapter.rb +10 -0
- data/lib/ibex/frontend.rb +1 -0
- data/lib/ibex/fuzz.rb +219 -0
- data/lib/ibex/generation_input.rb +1 -1
- data/lib/ibex/generation_manifest.rb +36 -25
- data/lib/ibex/generation_transaction.rb +1 -1
- data/lib/ibex/generation_transaction_recovery.rb +4 -4
- data/lib/ibex/generation_transaction_validation.rb +2 -2
- data/lib/ibex/grammar_tests.rb +1 -1
- data/lib/ibex/ir/automaton_ir.rb +61 -19
- data/lib/ibex/ir/grammar_ir.rb +76 -45
- data/lib/ibex/ir/lexer_ir.rb +5 -5
- data/lib/ibex/ir/parser_contract.rb +135 -0
- data/lib/ibex/ir/serialize.rb +203 -76
- data/lib/ibex/ir/validator/automaton.rb +64 -34
- data/lib/ibex/ir/validator/base.rb +51 -33
- data/lib/ibex/ir/validator/grammar.rb +113 -83
- data/lib/ibex/ir/validator/lexer.rb +2 -2
- data/lib/ibex/ir/validator.rb +2 -1
- data/lib/ibex/ir.rb +16 -3
- data/lib/ibex/lalr/build_metrics.rb +50 -2
- data/lib/ibex/lalr/builder.rb +191 -56
- data/lib/ibex/lalr/conflict_search.rb +15 -4
- data/lib/ibex/lalr/counterexample.rb +19 -14
- data/lib/ibex/lalr/direct_lookaheads.rb +110 -57
- data/lib/ibex/lalr/goto_follows.rb +229 -0
- data/lib/ibex/lalr/ielr/annotator.rb +214 -0
- data/lib/ibex/lalr/ielr/bits.rb +28 -0
- data/lib/ibex/lalr/ielr/inadequacy.rb +47 -0
- data/lib/ibex/lalr/ielr/item_lookaheads.rb +78 -0
- data/lib/ibex/lalr/ielr/pipeline.rb +75 -0
- data/lib/ibex/lalr/ielr/split_stability.rb +78 -0
- data/lib/ibex/lalr/ielr/split_state.rb +20 -0
- data/lib/ibex/lalr/ielr/state_splitter.rb +258 -0
- data/lib/ibex/lalr/ielr_partition.rb +22 -8
- data/lib/ibex/lalr/inadequacy_report.rb +50 -0
- data/lib/ibex/lalr/lookahead_propagation.rb +111 -0
- data/lib/ibex/lalr/lr0_collection.rb +121 -0
- data/lib/ibex/lalr/unreachable_states.rb +80 -0
- data/lib/ibex/lalr.rb +52 -1
- data/lib/ibex/location.rb +3 -3
- data/lib/ibex/lsp/document_handlers.rb +9 -7
- data/lib/ibex/lsp/initialization_handlers.rb +9 -7
- data/lib/ibex/lsp/navigation_handlers.rb +25 -11
- data/lib/ibex/lsp/parser_configuration_assistance.rb +149 -0
- data/lib/ibex/lsp/position_codec.rb +6 -2
- data/lib/ibex/lsp/request_handlers.rb +3 -2
- data/lib/ibex/lsp/request_support.rb +14 -7
- data/lib/ibex/lsp/server.rb +13 -11
- data/lib/ibex/lsp/symbol_index.rb +13 -13
- data/lib/ibex/lsp/symbol_index_builder.rb +30 -20
- data/lib/ibex/lsp/symbol_occurrence.rb +8 -2
- data/lib/ibex/lsp/transport.rb +13 -3
- data/lib/ibex/lsp/workspace.rb +5 -4
- data/lib/ibex/lsp/workspace_analyzer.rb +1 -1
- data/lib/ibex/lsp.rb +1 -0
- data/lib/ibex/messages/en.yml +28 -0
- data/lib/ibex/messages/ja.yml +28 -0
- data/lib/ibex/messages.rb +68 -0
- data/lib/ibex/metrics.rb +175 -0
- data/lib/ibex/normalize/declarations.rb +2 -0
- data/lib/ibex/normalize/diagnostics.rb +63 -38
- data/lib/ibex/normalize/expander.rb +5 -4
- data/lib/ibex/normalize/expression.rb +8 -6
- data/lib/ibex/normalize/grammar_builder.rb +26 -0
- data/lib/ibex/normalize/inline_expansion.rb +100 -49
- data/lib/ibex/normalize/lexer.rb +3 -3
- data/lib/ibex/normalize/parameter_ebnf_lowering.rb +11 -10
- data/lib/ibex/normalize/parameter_lowering.rb +40 -23
- data/lib/ibex/normalize/parameters.rb +31 -4
- data/lib/ibex/normalize/parser_configuration.rb +70 -0
- data/lib/ibex/normalize.rb +10 -20
- data/lib/ibex/racc_migration/report.rb +6 -3
- data/lib/ibex/rake_task.rb +1 -1
- data/lib/ibex/samples.rb +43 -13
- data/lib/ibex/table_artifact/builder.rb +266 -0
- data/lib/ibex/table_artifact/cst_projection.rb +70 -0
- data/lib/ibex/table_artifact/document.rb +39 -0
- data/lib/ibex/table_artifact/executor.rb +187 -0
- data/lib/ibex/table_artifact/serializer.rb +57 -0
- data/lib/ibex/table_artifact/validator/metadata.rb +179 -0
- data/lib/ibex/table_artifact/validator/support.rb +86 -0
- data/lib/ibex/table_artifact/validator/tables.rb +238 -0
- data/lib/ibex/table_artifact/validator.rb +253 -0
- data/lib/ibex/table_artifact.rb +88 -0
- data/lib/ibex/table_simulation/result.rb +6 -2
- data/lib/ibex/table_simulation/step.rb +3 -1
- data/lib/ibex/tables.rb +14 -0
- data/lib/ibex/verifiable_generation_bundle.rb +86 -0
- data/lib/ibex/verification_report/builder.rb +159 -0
- data/lib/ibex/verification_report/canonical_ir.rb +123 -0
- data/lib/ibex/verification_report/logical_path.rb +68 -0
- data/lib/ibex/verification_report/validator.rb +329 -0
- data/lib/ibex/verification_report.rb +69 -0
- data/lib/ibex/verify/action_correspondence.rb +138 -0
- data/lib/ibex/verify/language_witness.rb +295 -0
- data/lib/ibex/verify/reference_collection.rb +190 -0
- data/lib/ibex/verify/result.rb +73 -0
- data/lib/ibex/verify/verifier.rb +598 -0
- data/lib/ibex/verify.rb +15 -0
- data/lib/ibex/version.rb +1 -1
- data/lib/ibex/watch/runner.rb +10 -1
- data/lib/ibex/watch/source_snapshot.rb +13 -8
- data/lib/ibex.rb +10 -0
- data/schema/{automaton-ir-v1.schema.json → automaton-ir-definitions.schema.json} +6 -6
- data/schema/{automaton-ir-v2.schema.json → automaton-ir.schema.json} +14 -7
- data/schema/bison-import-v1.schema.json +106 -0
- data/schema/conflict-explanation-review-v1.schema.json +196 -0
- data/schema/conflict-explanation-study-v1.schema.json +528 -0
- data/schema/construction-profile-v1.schema.json +779 -0
- data/schema/diff-v1.schema.json +41 -0
- data/schema/direct-ielr-decision-v1.schema.json +200 -0
- data/schema/equiv-v1.schema.json +64 -0
- data/schema/error-ux-review-v1.schema.json +609 -0
- data/schema/error-ux-round2-review-v1.schema.json +191 -0
- data/schema/error-ux-round2-v1.schema.json +519 -0
- data/schema/explain-v1.schema.json +63 -1
- data/schema/fix-v1.schema.json +64 -0
- data/schema/fix-v2.schema.json +66 -0
- data/schema/fix-v3.schema.json +101 -0
- data/schema/fuzz-regression-v1.schema.json +79 -0
- data/schema/fuzz-v1.schema.json +114 -0
- data/schema/{grammar-ir-v2.schema.json → grammar-ir-extensions.schema.json} +20 -65
- data/schema/{grammar-ir-v1.schema.json → grammar-ir-foundation.schema.json} +3 -3
- data/schema/grammar-ir.schema.json +271 -0
- data/schema/ielr-benchmark-v1.schema.json +85 -0
- data/schema/lexer-profile-v1.schema.json +491 -0
- data/schema/metrics-v1.schema.json +60 -0
- data/schema/reduce-v1.schema.json +22 -0
- data/schema/reduce-v2.schema.json +63 -0
- data/schema/table-artifact-v1.schema.json +377 -0
- data/schema/verification-report-v1.schema.json +222 -0
- data/schema/verify-v1.schema.json +42 -0
- data/sig/ibex/analysis/digraph.rbs +19 -0
- data/sig/ibex/bison_import/importer.rbs +140 -0
- data/sig/ibex/bison_import/tokenizer.rbs +91 -0
- data/sig/ibex/bison_import.rbs +95 -0
- data/sig/ibex/bounded_subprocess.rbs +76 -0
- data/sig/ibex/cli/ambiguity.rbs +6 -0
- data/sig/ibex/cli/analysis.rbs +43 -0
- data/sig/ibex/cli/bison_import.rbs +32 -0
- data/sig/ibex/cli/config.rbs +35 -0
- data/sig/ibex/cli/diagnostics.rbs +16 -3
- data/sig/ibex/cli/documentation.rbs +5 -1
- data/sig/ibex/cli/equiv.rbs +49 -0
- data/sig/ibex/cli/error_messages.rbs +6 -0
- data/sig/ibex/cli/explain.rbs +6 -0
- data/sig/ibex/cli/fix.rbs +53 -0
- data/sig/ibex/cli/formatting.rbs +5 -1
- data/sig/ibex/cli/fuzz.rbs +47 -0
- data/sig/ibex/cli/fuzz_regressions.rbs +40 -0
- data/sig/ibex/cli/generation_artifacts.rbs +21 -2
- data/sig/ibex/cli/generation_error_messages.rbs +2 -2
- data/sig/ibex/cli/grammar_tests.rbs +15 -3
- data/sig/ibex/cli/ir_tools.rbs +7 -19
- data/sig/ibex/cli/outputs.rbs +9 -3
- data/sig/ibex/cli/reduce.rbs +60 -0
- data/sig/ibex/cli/reduce_reporting.rbs +27 -0
- data/sig/ibex/cli/samples.rbs +8 -0
- data/sig/ibex/cli/verify.rbs +28 -0
- data/sig/ibex/cli/watch.rbs +2 -2
- data/sig/ibex/cli.rbs +79 -5
- data/sig/ibex/codegen/action_method_source.rbs +4 -4
- data/sig/ibex/codegen/explain.rbs +45 -25
- data/sig/ibex/codegen/generated_action_abi.rbs +14 -10
- data/sig/ibex/codegen/rbs.rbs +12 -10
- data/sig/ibex/codegen/report.rbs +12 -12
- data/sig/ibex/codegen/ruby.rbs +18 -15
- data/sig/ibex/codegen/ruby_actions.rbs +6 -6
- data/sig/ibex/codegen/ruby_syntax.rbs +10 -8
- data/sig/ibex/configuration/analysis_grammar.rbs +13 -0
- data/sig/ibex/configuration/explanation.rbs +195 -0
- data/sig/ibex/configuration/inspector.rbs +53 -0
- data/sig/ibex/configuration.rbs +242 -0
- data/sig/ibex/coverage/collector.rbs +16 -14
- data/sig/ibex/coverage/event_stream.rbs +12 -10
- data/sig/ibex/coverage/report.rbs +20 -18
- data/sig/ibex/coverage/runtime_event_validator.rbs +38 -36
- data/sig/ibex/delta_reducer.rbs +38 -0
- data/sig/ibex/diff.rbs +47 -0
- data/sig/ibex/equiv/machine.rbs +54 -0
- data/sig/ibex/equiv.rbs +129 -0
- data/sig/ibex/fix.rbs +138 -0
- data/sig/ibex/frontend/ast.rbs +33 -7
- data/sig/ibex/frontend/bootstrap_parser.rbs +2 -0
- data/sig/ibex/frontend/diagnostic.rbs +2 -2
- data/sig/ibex/frontend/formatter.rbs +38 -30
- data/sig/ibex/frontend/generated_parser.rbs +87 -77
- data/sig/ibex/frontend/generated_parser_base.rbs +4 -2
- data/sig/ibex/frontend/parser/declarations.rbs +3 -0
- data/sig/ibex/frontend/parser_configuration_support.rbs +27 -0
- data/sig/ibex/frontend/resolution.rbs +3 -2
- data/sig/ibex/frontend/source_cursor.rbs +2 -2
- data/sig/ibex/frontend/source_span.rbs +5 -2
- data/sig/ibex/frontend/token_adapter/declaration_state.rbs +13 -1
- data/sig/ibex/frontend/token_adapter.rbs +6 -0
- data/sig/ibex/fuzz.rbs +71 -0
- data/sig/ibex/generation_input.rbs +2 -2
- data/sig/ibex/generation_manifest.rbs +35 -32
- data/sig/ibex/generation_transaction_recovery.rbs +2 -2
- data/sig/ibex/generation_transaction_validation.rbs +2 -2
- data/sig/ibex/grammar_tests.rbs +2 -2
- data/sig/ibex/ir/automaton_ir.rbs +30 -11
- data/sig/ibex/ir/grammar_ir.rbs +41 -27
- data/sig/ibex/ir/lexer_ir.rbs +8 -8
- data/sig/ibex/ir/parser_contract.rbs +69 -0
- data/sig/ibex/ir/serialize.rbs +63 -28
- data/sig/ibex/ir/validator/automaton.rbs +47 -44
- data/sig/ibex/ir/validator/base.rbs +35 -31
- data/sig/ibex/ir/validator/grammar.rbs +78 -67
- data/sig/ibex/ir/validator/lexer.rbs +4 -4
- data/sig/ibex/ir.rbs +9 -3
- data/sig/ibex/lalr/build_metrics.rbs +42 -2
- data/sig/ibex/lalr/builder.rbs +75 -24
- data/sig/ibex/lalr/conflict_search.rbs +5 -2
- data/sig/ibex/lalr/counterexample.rbs +17 -14
- data/sig/ibex/lalr/direct_lookaheads.rbs +35 -28
- data/sig/ibex/lalr/goto_follows.rbs +89 -0
- data/sig/ibex/lalr/ielr/annotator.rbs +67 -0
- data/sig/ibex/lalr/ielr/bits.rbs +14 -0
- data/sig/ibex/lalr/ielr/inadequacy.rbs +24 -0
- data/sig/ibex/lalr/ielr/item_lookaheads.rbs +35 -0
- data/sig/ibex/lalr/ielr/pipeline.rbs +17 -0
- data/sig/ibex/lalr/ielr/split_stability.rbs +27 -0
- data/sig/ibex/lalr/ielr/split_state.rbs +14 -0
- data/sig/ibex/lalr/ielr/state_splitter.rbs +76 -0
- data/sig/ibex/lalr/ielr_partition.rbs +17 -5
- data/sig/ibex/lalr/inadequacy_report.rbs +21 -0
- data/sig/ibex/lalr/lookahead_propagation.rbs +38 -0
- data/sig/ibex/lalr/lr0_collection.rbs +50 -0
- data/sig/ibex/lalr/unreachable_states.rbs +25 -0
- data/sig/ibex/lalr.rbs +11 -1
- data/sig/ibex/location.rbs +6 -6
- data/sig/ibex/lsp/document_handlers.rbs +8 -8
- data/sig/ibex/lsp/initialization_handlers.rbs +12 -12
- data/sig/ibex/lsp/navigation_handlers.rbs +15 -12
- data/sig/ibex/lsp/parser_configuration_assistance.rbs +49 -0
- data/sig/ibex/lsp/position_codec.rbs +8 -4
- data/sig/ibex/lsp/request_handlers.rbs +4 -4
- data/sig/ibex/lsp/request_support.rbs +8 -8
- data/sig/ibex/lsp/server.rbs +16 -16
- data/sig/ibex/lsp/symbol_index.rbs +20 -21
- data/sig/ibex/lsp/symbol_index_builder.rbs +9 -8
- data/sig/ibex/lsp/symbol_occurrence.rbs +11 -5
- data/sig/ibex/lsp/transport.rbs +18 -6
- data/sig/ibex/lsp/workspace.rbs +3 -2
- data/sig/ibex/lsp/workspace_analyzer.rbs +1 -1
- data/sig/ibex/messages.rbs +26 -0
- data/sig/ibex/metrics.rbs +50 -0
- data/sig/ibex/normalize/diagnostics.rbs +4 -4
- data/sig/ibex/normalize/expander.rbs +2 -2
- data/sig/ibex/normalize/expression.rbs +10 -8
- data/sig/ibex/normalize/grammar_builder.rbs +11 -0
- data/sig/ibex/normalize/inline_expansion.rbs +59 -50
- data/sig/ibex/normalize/lexer.rbs +4 -4
- data/sig/ibex/normalize/parameter_ebnf_lowering.rbs +15 -14
- data/sig/ibex/normalize/parameter_lowering.rbs +18 -18
- data/sig/ibex/normalize/parameters.rbs +13 -8
- data/sig/ibex/normalize/parser_configuration.rbs +23 -0
- data/sig/ibex/normalize.rbs +11 -5
- data/sig/ibex/racc_migration/report.rbs +8 -6
- data/sig/ibex/rake_task.rbs +1 -1
- data/sig/ibex/samples.rbs +13 -4
- data/sig/ibex/table_artifact/builder.rbs +93 -0
- data/sig/ibex/table_artifact/cst_projection.rbs +20 -0
- data/sig/ibex/table_artifact/document.rbs +27 -0
- data/sig/ibex/table_artifact/executor.rbs +66 -0
- data/sig/ibex/table_artifact/serializer.rbs +25 -0
- data/sig/ibex/table_artifact/validator/metadata.rbs +52 -0
- data/sig/ibex/table_artifact/validator/support.rbs +46 -0
- data/sig/ibex/table_artifact/validator/tables.rbs +63 -0
- data/sig/ibex/table_artifact/validator.rbs +66 -0
- data/sig/ibex/table_artifact.rbs +32 -0
- data/sig/ibex/table_simulation/result.rbs +8 -4
- data/sig/ibex/table_simulation/step.rbs +4 -2
- data/sig/ibex/tables.rbs +10 -9
- data/sig/ibex/verifiable_generation_bundle.rbs +24 -0
- data/sig/ibex/verification_report/builder.rbs +53 -0
- data/sig/ibex/verification_report/canonical_ir.rbs +41 -0
- data/sig/ibex/verification_report/logical_path.rbs +34 -0
- data/sig/ibex/verification_report/validator.rbs +114 -0
- data/sig/ibex/verification_report.rbs +44 -0
- data/sig/ibex/verify/action_correspondence.rbs +50 -0
- data/sig/ibex/verify/language_witness.rbs +112 -0
- data/sig/ibex/verify/reference_collection.rbs +63 -0
- data/sig/ibex/verify/result.rbs +52 -0
- data/sig/ibex/verify/verifier.rbs +170 -0
- data/sig/ibex/verify.rbs +6 -0
- data/sig/ibex/watch/runner.rbs +12 -2
- data/sig/ibex/watch/source_snapshot.rbs +13 -9
- metadata +232 -12
- data/lib/ibex/ir/migration.rb +0 -120
- data/sig/ibex/ir/migration.rbs +0 -34
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/lr0_collection.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Constructs only the LR(0) core collection. Keeping this separate from
|
|
6
|
+
# lookahead propagation makes the direct IELR phases reusable and gives
|
|
7
|
+
# them a stable, canonical-free input representation.
|
|
8
|
+
class LR0Collection
|
|
9
|
+
AUGMENTED_PRODUCTION: Integer
|
|
10
|
+
|
|
11
|
+
@grammar: IR::Grammar
|
|
12
|
+
|
|
13
|
+
@productions_by_lhs: Hash[Integer, Array[IR::Production]]
|
|
14
|
+
|
|
15
|
+
@starts: Array[String]
|
|
16
|
+
|
|
17
|
+
@augmented_rhs: Hash[Integer, Array[Integer]]
|
|
18
|
+
|
|
19
|
+
@production_rhs: Array[Array[Integer]]
|
|
20
|
+
|
|
21
|
+
@item_key_stride: Integer
|
|
22
|
+
|
|
23
|
+
# @rbs (IR::Grammar grammar, ?starts: Array[String]?) -> void
|
|
24
|
+
def initialize: (IR::Grammar grammar, ?starts: Array[String]?) -> void
|
|
25
|
+
|
|
26
|
+
# @rbs () -> [Array[core_set], transitions]
|
|
27
|
+
def build: () -> [ Array[core_set], transitions ]
|
|
28
|
+
|
|
29
|
+
# @rbs (Integer index) -> Integer
|
|
30
|
+
def augmented_production: (Integer index) -> Integer
|
|
31
|
+
|
|
32
|
+
# @rbs (Integer production_id) -> Array[Integer]
|
|
33
|
+
def rhs_for: (Integer production_id) -> Array[Integer]
|
|
34
|
+
|
|
35
|
+
# @rbs (Integer production_id) -> Integer
|
|
36
|
+
def lhs_for: (Integer production_id) -> Integer
|
|
37
|
+
|
|
38
|
+
# @rbs (core_set items) -> Hash[Integer, core_set]
|
|
39
|
+
def shifted_kernels: (core_set items) -> Hash[Integer, core_set]
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
# @rbs (core_set seed) -> core_set
|
|
44
|
+
def closure: (core_set seed) -> core_set
|
|
45
|
+
|
|
46
|
+
# @rbs (core_set items) -> Array[Integer]
|
|
47
|
+
def item_key: (core_set items) -> Array[Integer]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Generated from lib/ibex/lalr/unreachable_states.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LALR
|
|
5
|
+
# Optional post-resolution compaction. It is intentionally off by
|
|
6
|
+
# default because state numbers are part of diagnostics and golden output.
|
|
7
|
+
module UnreachableStates
|
|
8
|
+
# @rbs (Array[IR::AutomatonState] states, Array[Integer] start_states) ->
|
|
9
|
+
# [Array[IR::AutomatonState], Hash[Integer, Integer]]
|
|
10
|
+
def self?.remove: (Array[IR::AutomatonState] states, Array[Integer] start_states) -> [ Array[IR::AutomatonState], Hash[Integer, Integer] ]
|
|
11
|
+
|
|
12
|
+
# @rbs (Array[IR::AutomatonState], Array[Integer]) -> Array[Integer]
|
|
13
|
+
def self?.reachable_states: (Array[IR::AutomatonState], Array[Integer]) -> Array[Integer]
|
|
14
|
+
|
|
15
|
+
# @rbs (Hash[Integer, Integer], Hash[Integer, Integer]) -> Hash[Integer, Integer]
|
|
16
|
+
def self?.remap_edges: (Hash[Integer, Integer], Hash[Integer, Integer]) -> Hash[Integer, Integer]
|
|
17
|
+
|
|
18
|
+
# @rbs (IR::parser_action?, Hash[Integer, Integer]) -> IR::parser_action?
|
|
19
|
+
def self?.remap_action: (IR::parser_action?, Hash[Integer, Integer]) -> IR::parser_action?
|
|
20
|
+
|
|
21
|
+
# @rbs (IR::conflict, Hash[Integer, Integer]) -> IR::conflict
|
|
22
|
+
def self?.remap_conflict: (IR::conflict, Hash[Integer, Integer]) -> IR::conflict
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
data/sig/ibex/lalr.rbs
CHANGED
|
@@ -14,16 +14,26 @@ module Ibex
|
|
|
14
14
|
|
|
15
15
|
type transitions = Array[Hash[Integer, Integer]]
|
|
16
16
|
|
|
17
|
+
type build_collection = { construction_states: Integer, canonical_states: Integer?, strategy: Symbol, lr0_states: Integer?, lr0_items: Integer?, canonical_items: Integer?, propagation_edges: Integer?, ielr_initial_partitions: Integer?, ielr_final_partitions: Integer?, ielr_annotations: Integer?, ielr_annotated_states: Integer?, ielr_inadequacies: Integer?, ielr_split_stable_discarded: Integer?, ielr_lalr_states: Integer?, ielr_split_states: Integer?, ielr_unreachable_removed: Integer?, ielr_remergeable_candidates: Integer? }
|
|
18
|
+
|
|
19
|
+
type conflict_fingerprint = [ Symbol, String, Array[Integer] ]
|
|
20
|
+
|
|
17
21
|
type lookahead_node = [ Integer, Integer, Integer ]
|
|
18
22
|
|
|
19
23
|
type state_partition = Array[Integer]
|
|
20
24
|
|
|
21
|
-
type derivation_node = Hash[Symbol,
|
|
25
|
+
type derivation_node = Hash[Symbol, Object?]
|
|
22
26
|
|
|
23
27
|
type search_status = :conflict | :shifted | :accepted
|
|
24
28
|
|
|
25
29
|
type search_entry = [ search_status, ConflictSearch::Configuration ]
|
|
26
30
|
|
|
27
31
|
type search_result = { sentence_ids: Array[Integer], lookahead_index: Integer, interpretations: Array[IR::interpretation] }
|
|
32
|
+
|
|
33
|
+
type search_bounds = { max_tokens: Integer, max_configurations: Integer }
|
|
34
|
+
|
|
35
|
+
type search_outcome = { status: :found | :not_found | :exhausted, result: search_result?, explored: Integer, exhausted: bool, bounds: search_bounds }
|
|
36
|
+
|
|
37
|
+
type search_counterexample = { state: Integer, type: Symbol, symbol_path: Array[String], sentence: Array[String], lookahead_index: Integer, unifying: bool, inconclusive: bool, search: search_outcome, interpretations: Array[IR::interpretation] }
|
|
28
38
|
end
|
|
29
39
|
end
|
data/sig/ibex/location.rbs
CHANGED
|
@@ -38,16 +38,16 @@ module Ibex
|
|
|
38
38
|
# @rbs () -> bool
|
|
39
39
|
def empty?: () -> bool
|
|
40
40
|
|
|
41
|
-
# @rbs () -> Hash[Symbol,
|
|
42
|
-
def to_h: () -> Hash[Symbol,
|
|
41
|
+
# @rbs () -> Hash[Symbol, String | Integer]
|
|
42
|
+
def to_h: () -> Hash[Symbol, String | Integer]
|
|
43
43
|
|
|
44
44
|
private
|
|
45
45
|
|
|
46
|
-
# @rbs (Symbol name,
|
|
47
|
-
def positive_coordinate: (Symbol name,
|
|
46
|
+
# @rbs (Symbol name, Object? value) -> Integer
|
|
47
|
+
def positive_coordinate: (Symbol name, Object? value) -> Integer
|
|
48
48
|
|
|
49
|
-
# @rbs (Symbol name,
|
|
50
|
-
def optional_offset: (Symbol name,
|
|
49
|
+
# @rbs (Symbol name, Object? value) -> Integer?
|
|
50
|
+
def optional_offset: (Symbol name, Object? value) -> Integer?
|
|
51
51
|
|
|
52
52
|
# @rbs () -> void
|
|
53
53
|
def validate_order!: () -> void
|
|
@@ -8,17 +8,17 @@ module Ibex
|
|
|
8
8
|
|
|
9
9
|
private
|
|
10
10
|
|
|
11
|
-
# @rbs (
|
|
12
|
-
def did_open: (
|
|
11
|
+
# @rbs (lsp_value? raw_params) -> nil
|
|
12
|
+
def did_open: (lsp_value? raw_params) -> nil
|
|
13
13
|
|
|
14
|
-
# @rbs (
|
|
15
|
-
def did_change: (
|
|
14
|
+
# @rbs (lsp_value? raw_params) -> nil
|
|
15
|
+
def did_change: (lsp_value? raw_params) -> nil
|
|
16
16
|
|
|
17
|
-
# @rbs (
|
|
18
|
-
def did_save: (
|
|
17
|
+
# @rbs (lsp_value? raw_params) -> nil
|
|
18
|
+
def did_save: (lsp_value? raw_params) -> nil
|
|
19
19
|
|
|
20
|
-
# @rbs (
|
|
21
|
-
def did_close: (
|
|
20
|
+
# @rbs (lsp_value? raw_params) -> nil
|
|
21
|
+
def did_close: (lsp_value? raw_params) -> nil
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -8,23 +8,23 @@ module Ibex
|
|
|
8
8
|
|
|
9
9
|
private
|
|
10
10
|
|
|
11
|
-
# @rbs (
|
|
12
|
-
def initialize_workspace: (
|
|
11
|
+
# @rbs (lsp_value? raw_params) -> lsp_object
|
|
12
|
+
def initialize_workspace: (lsp_value? raw_params) -> lsp_object
|
|
13
13
|
|
|
14
|
-
# @rbs (
|
|
15
|
-
def initialized_notification: (
|
|
14
|
+
# @rbs (lsp_value? params) -> nil
|
|
15
|
+
def initialized_notification: (lsp_value? params) -> nil
|
|
16
16
|
|
|
17
|
-
# @rbs (
|
|
18
|
-
def shutdown_request: (
|
|
17
|
+
# @rbs (lsp_value? params) -> nil
|
|
18
|
+
def shutdown_request: (lsp_value? params) -> nil
|
|
19
19
|
|
|
20
|
-
# @rbs (
|
|
21
|
-
def exit_notification: (
|
|
20
|
+
# @rbs (lsp_value? params) -> nil
|
|
21
|
+
def exit_notification: (lsp_value? params) -> nil
|
|
22
22
|
|
|
23
|
-
# @rbs () ->
|
|
24
|
-
def capabilities: () ->
|
|
23
|
+
# @rbs () -> lsp_object
|
|
24
|
+
def capabilities: () -> lsp_object
|
|
25
25
|
|
|
26
|
-
# @rbs (
|
|
27
|
-
def initialization_roots: (
|
|
26
|
+
# @rbs (lsp_object params) -> Array[String]
|
|
27
|
+
def initialization_roots: (lsp_object params) -> Array[String]
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -8,23 +8,26 @@ module Ibex
|
|
|
8
8
|
|
|
9
9
|
private
|
|
10
10
|
|
|
11
|
-
# @rbs (
|
|
12
|
-
def definition: (
|
|
11
|
+
# @rbs (lsp_object? raw_params) -> Array[lsp_object]
|
|
12
|
+
def definition: (lsp_object? raw_params) -> Array[lsp_object]
|
|
13
13
|
|
|
14
|
-
# @rbs (
|
|
15
|
-
def references: (
|
|
14
|
+
# @rbs (lsp_object? raw_params) -> Array[lsp_object]
|
|
15
|
+
def references: (lsp_object? raw_params) -> Array[lsp_object]
|
|
16
16
|
|
|
17
|
-
# @rbs (
|
|
18
|
-
def prepare_rename: (
|
|
17
|
+
# @rbs (lsp_object? raw_params) -> lsp_object?
|
|
18
|
+
def prepare_rename: (lsp_object? raw_params) -> lsp_object?
|
|
19
19
|
|
|
20
|
-
# @rbs (
|
|
21
|
-
def rename: (
|
|
20
|
+
# @rbs (lsp_object? raw_params) -> lsp_object
|
|
21
|
+
def rename: (lsp_object? raw_params) -> lsp_object
|
|
22
22
|
|
|
23
|
-
# @rbs (
|
|
24
|
-
def hover: (
|
|
23
|
+
# @rbs (lsp_object? raw_params) -> lsp_object?
|
|
24
|
+
def hover: (lsp_object? raw_params) -> lsp_object?
|
|
25
25
|
|
|
26
|
-
# @rbs (
|
|
27
|
-
def
|
|
26
|
+
# @rbs (lsp_object? raw_params) -> lsp_object
|
|
27
|
+
def completion: (lsp_object? raw_params) -> lsp_object
|
|
28
|
+
|
|
29
|
+
# @rbs (lsp_object? raw_params) { (SymbolIndex, String, lsp_object) -> Object? } -> Object?
|
|
30
|
+
def with_index: (lsp_object? raw_params) { (SymbolIndex, String, lsp_object) -> Object? } -> Object?
|
|
28
31
|
end
|
|
29
32
|
end
|
|
30
33
|
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Generated from lib/ibex/lsp/parser_configuration_assistance.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
module LSP
|
|
5
|
+
# Provides static editor assistance for the root parser declaration without evaluating grammar code.
|
|
6
|
+
class ParserConfigurationAssistance
|
|
7
|
+
SETTING_VALUES: Hash[String, Array[String]]
|
|
8
|
+
|
|
9
|
+
SETTING_DOCUMENTATION: Hash[String, String]
|
|
10
|
+
|
|
11
|
+
VALUE_DOCUMENTATION: Hash[String, String]
|
|
12
|
+
|
|
13
|
+
# @rbs (DocumentStore store, String path) -> void
|
|
14
|
+
def initialize: (DocumentStore store, String path) -> void
|
|
15
|
+
|
|
16
|
+
# @rbs (lsp_object position) -> lsp_object
|
|
17
|
+
def completion: (lsp_object position) -> lsp_object
|
|
18
|
+
|
|
19
|
+
# @rbs (lsp_object position) -> lsp_object?
|
|
20
|
+
def hover: (lsp_object position) -> lsp_object?
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
# @rbs () -> String
|
|
25
|
+
def source!: () -> String
|
|
26
|
+
|
|
27
|
+
# @rbs (String source, Integer offset) -> Integer
|
|
28
|
+
def line_start: (String source, Integer offset) -> Integer
|
|
29
|
+
|
|
30
|
+
# @rbs (String source) -> bool
|
|
31
|
+
def parser_block_open?: (String source) -> bool
|
|
32
|
+
|
|
33
|
+
# @rbs () -> Array[lsp_object]
|
|
34
|
+
def setting_items: () -> Array[lsp_object]
|
|
35
|
+
|
|
36
|
+
# @rbs (String setting) -> Array[lsp_object]
|
|
37
|
+
def value_items: (String setting) -> Array[lsp_object]
|
|
38
|
+
|
|
39
|
+
# @rbs (String label, Integer kind, String documentation) -> lsp_object
|
|
40
|
+
def completion_item: (String label, Integer kind, String documentation) -> lsp_object
|
|
41
|
+
|
|
42
|
+
# @rbs (Array[lsp_object] items) -> lsp_object
|
|
43
|
+
def completion_list: (Array[lsp_object] items) -> lsp_object
|
|
44
|
+
|
|
45
|
+
# @rbs (MatchData match, String line, Integer line_start, Integer offset) -> [String?, Integer, Integer]
|
|
46
|
+
def hovered_token: (MatchData match, String line, Integer line_start, Integer offset) -> [ String?, Integer, Integer ]
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
module Ibex
|
|
4
4
|
module LSP
|
|
5
|
+
type lsp_value = String | Integer | Float | bool | nil | Array[lsp_value] | Hash[String, lsp_value]
|
|
6
|
+
|
|
7
|
+
type lsp_object = Hash[String, lsp_value]
|
|
8
|
+
|
|
5
9
|
# Converts between frontend byte offsets and zero-based LSP UTF-16 positions.
|
|
6
10
|
class PositionCodec
|
|
7
11
|
# @rbs (String source) -> void
|
|
@@ -10,8 +14,8 @@ module Ibex
|
|
|
10
14
|
# @rbs (Integer byte_offset) -> Hash[String, Integer]
|
|
11
15
|
def position: (Integer byte_offset) -> Hash[String, Integer]
|
|
12
16
|
|
|
13
|
-
# @rbs (
|
|
14
|
-
def byte_offset: (
|
|
17
|
+
# @rbs (lsp_object position) -> Integer
|
|
18
|
+
def byte_offset: (lsp_object position) -> Integer
|
|
15
19
|
|
|
16
20
|
# @rbs (Frontend::SourceSpan span) -> Hash[String, Hash[String, Integer]]
|
|
17
21
|
def range: (Frontend::SourceSpan span) -> Hash[String, Hash[String, Integer]]
|
|
@@ -30,8 +34,8 @@ module Ibex
|
|
|
30
34
|
# @rbs (String text, Integer units) -> Integer
|
|
31
35
|
def byte_length_at_utf16: (String text, Integer units) -> Integer
|
|
32
36
|
|
|
33
|
-
# @rbs (
|
|
34
|
-
def integer_member: (
|
|
37
|
+
# @rbs (lsp_object position, String name) -> Integer
|
|
38
|
+
def integer_member: (lsp_object position, String name) -> Integer
|
|
35
39
|
|
|
36
40
|
# @rbs (Integer byte_offset) -> void
|
|
37
41
|
def validate_byte_offset: (Integer byte_offset) -> void
|
|
@@ -16,11 +16,11 @@ module Ibex
|
|
|
16
16
|
|
|
17
17
|
private
|
|
18
18
|
|
|
19
|
-
# @rbs (String method,
|
|
20
|
-
def dispatch: (String method,
|
|
19
|
+
# @rbs (String method, lsp_value? params) -> lsp_value?
|
|
20
|
+
def dispatch: (String method, lsp_value? params) -> lsp_value?
|
|
21
21
|
|
|
22
|
-
# @rbs (
|
|
23
|
-
def cancel_request: (
|
|
22
|
+
# @rbs (lsp_value? params) -> nil
|
|
23
|
+
def cancel_request: (lsp_value? params) -> nil
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -12,17 +12,17 @@ module Ibex
|
|
|
12
12
|
# @rbs (String uri, Integer version) -> bool
|
|
13
13
|
def stale_publication?: (String uri, Integer version) -> bool
|
|
14
14
|
|
|
15
|
-
# @rbs (
|
|
16
|
-
def params_hash: (
|
|
15
|
+
# @rbs (lsp_value? value) -> lsp_object
|
|
16
|
+
def params_hash: (lsp_value? value) -> lsp_object
|
|
17
17
|
|
|
18
|
-
# @rbs (
|
|
19
|
-
def hash_member: (
|
|
18
|
+
# @rbs (lsp_object value, String name) -> lsp_object
|
|
19
|
+
def hash_member: (lsp_object value, String name) -> lsp_object
|
|
20
20
|
|
|
21
|
-
# @rbs (
|
|
22
|
-
def string_member: (
|
|
21
|
+
# @rbs (lsp_object value, String name) -> String
|
|
22
|
+
def string_member: (lsp_object value, String name) -> String
|
|
23
23
|
|
|
24
|
-
# @rbs (
|
|
25
|
-
def integer_member: (
|
|
24
|
+
# @rbs (lsp_object value, String name) -> Integer
|
|
25
|
+
def integer_member: (lsp_object value, String name) -> Integer
|
|
26
26
|
|
|
27
27
|
# @rbs (Symbol state) -> void
|
|
28
28
|
def require_state!: (Symbol state) -> void
|
data/sig/ibex/lsp/server.rbs
CHANGED
|
@@ -10,40 +10,40 @@ module Ibex
|
|
|
10
10
|
|
|
11
11
|
NOTIFICATION_METHODS: Array[String]
|
|
12
12
|
|
|
13
|
-
# @rbs (stdin:
|
|
14
|
-
def initialize: (stdin:
|
|
13
|
+
# @rbs (stdin: Transport::_Input, stdout: Transport::_Output, stderr: Object?) -> void
|
|
14
|
+
def initialize: (stdin: Transport::_Input, stdout: Transport::_Output, stderr: Object?) -> void
|
|
15
15
|
|
|
16
16
|
# @rbs () -> Integer
|
|
17
17
|
def run: () -> Integer
|
|
18
18
|
|
|
19
19
|
private
|
|
20
20
|
|
|
21
|
-
# @rbs () ->
|
|
22
|
-
def read_message: () ->
|
|
21
|
+
# @rbs () -> lsp_object?
|
|
22
|
+
def read_message: () -> lsp_object?
|
|
23
23
|
|
|
24
|
-
# @rbs (
|
|
25
|
-
def process_message: (
|
|
24
|
+
# @rbs (lsp_object message) -> void
|
|
25
|
+
def process_message: (lsp_object message) -> void
|
|
26
26
|
|
|
27
|
-
# @rbs (
|
|
28
|
-
def safe_request_id: (
|
|
27
|
+
# @rbs (lsp_object message) -> (String | Integer)?
|
|
28
|
+
def safe_request_id: (lsp_object message) -> (String | Integer)?
|
|
29
29
|
|
|
30
|
-
# @rbs (
|
|
31
|
-
def notification_envelope?: (
|
|
30
|
+
# @rbs (lsp_object message) -> bool
|
|
31
|
+
def notification_envelope?: (lsp_object message) -> bool
|
|
32
32
|
|
|
33
33
|
# @rbs (String method, bool request) -> void
|
|
34
34
|
def validate_message_kind!: (String method, bool request) -> void
|
|
35
35
|
|
|
36
|
-
# @rbs (
|
|
37
|
-
def validate_envelope: (
|
|
36
|
+
# @rbs (lsp_object message) -> (String | Integer)?
|
|
37
|
+
def validate_envelope: (lsp_object message) -> (String | Integer)?
|
|
38
38
|
|
|
39
|
-
# @rbs (
|
|
40
|
-
def valid_request_id?: (
|
|
39
|
+
# @rbs (Object? value) -> bool
|
|
40
|
+
def valid_request_id?: (Object? value) -> bool
|
|
41
41
|
|
|
42
42
|
# @rbs (String method) -> void
|
|
43
43
|
def validate_lifecycle!: (String method) -> void
|
|
44
44
|
|
|
45
|
-
# @rbs (String | Integer request_id,
|
|
46
|
-
def send_result: (String | Integer request_id,
|
|
45
|
+
# @rbs (String | Integer request_id, lsp_value result) -> void
|
|
46
|
+
def send_result: (String | Integer request_id, lsp_value result) -> void
|
|
47
47
|
|
|
48
48
|
# @rbs (String | Integer | nil request_id, ProtocolError error) -> void
|
|
49
49
|
def send_error: (String | Integer | nil request_id, ProtocolError error) -> void
|
|
@@ -11,41 +11,40 @@ module Ibex
|
|
|
11
11
|
# @rbs (DocumentStore store, String path) -> void
|
|
12
12
|
def initialize: (DocumentStore store, String path) -> void
|
|
13
13
|
|
|
14
|
-
# @rbs (String path,
|
|
15
|
-
def definition: (String path,
|
|
14
|
+
# @rbs (String path, lsp_object position) -> Array[lsp_object]
|
|
15
|
+
def definition: (String path, lsp_object position) -> Array[lsp_object]
|
|
16
16
|
|
|
17
|
-
# @rbs (String path,
|
|
18
|
-
|
|
19
|
-
def references: (String path, Hash[String, untyped] position, ?include_declaration: bool) -> Array[Hash[String, untyped]]
|
|
17
|
+
# @rbs (String path, lsp_object position, ?include_declaration: bool) -> Array[lsp_object]
|
|
18
|
+
def references: (String path, lsp_object position, ?include_declaration: bool) -> Array[lsp_object]
|
|
20
19
|
|
|
21
|
-
# @rbs (String path,
|
|
22
|
-
def prepare_rename: (String path,
|
|
20
|
+
# @rbs (String path, lsp_object position) -> lsp_object?
|
|
21
|
+
def prepare_rename: (String path, lsp_object position) -> lsp_object?
|
|
23
22
|
|
|
24
|
-
# @rbs (String path,
|
|
25
|
-
def rename: (String path,
|
|
23
|
+
# @rbs (String path, lsp_object position, String new_name) -> lsp_object
|
|
24
|
+
def rename: (String path, lsp_object position, String new_name) -> lsp_object
|
|
26
25
|
|
|
27
|
-
# @rbs (String path,
|
|
28
|
-
def hover: (String path,
|
|
26
|
+
# @rbs (String path, lsp_object position) -> lsp_object?
|
|
27
|
+
def hover: (String path, lsp_object position) -> lsp_object?
|
|
29
28
|
|
|
30
29
|
private
|
|
31
30
|
|
|
32
|
-
# @rbs (String path,
|
|
33
|
-
def occurrence_at: (String path,
|
|
31
|
+
# @rbs (String path, lsp_object position) -> SymbolOccurrence?
|
|
32
|
+
def occurrence_at: (String path, lsp_object position) -> SymbolOccurrence?
|
|
34
33
|
|
|
35
|
-
# @rbs (
|
|
36
|
-
def matching: (
|
|
34
|
+
# @rbs (symbol_key key, ?role: Symbol?) -> Array[SymbolOccurrence]
|
|
35
|
+
def matching: (symbol_key key, ?role: Symbol?) -> Array[SymbolOccurrence]
|
|
37
36
|
|
|
38
|
-
# @rbs (SymbolOccurrence occurrence) ->
|
|
39
|
-
def location: (SymbolOccurrence occurrence) ->
|
|
37
|
+
# @rbs (SymbolOccurrence occurrence) -> lsp_object
|
|
38
|
+
def location: (SymbolOccurrence occurrence) -> lsp_object
|
|
40
39
|
|
|
41
|
-
# @rbs (SymbolOccurrence occurrence) ->
|
|
42
|
-
def include_target_location: (SymbolOccurrence occurrence) ->
|
|
40
|
+
# @rbs (SymbolOccurrence occurrence) -> lsp_object
|
|
41
|
+
def include_target_location: (SymbolOccurrence occurrence) -> lsp_object
|
|
43
42
|
|
|
44
43
|
# @rbs (SymbolOccurrence occurrence) -> Hash[String, Hash[String, Integer]]
|
|
45
44
|
def range: (SymbolOccurrence occurrence) -> Hash[String, Hash[String, Integer]]
|
|
46
45
|
|
|
47
|
-
# @rbs (String path,
|
|
48
|
-
def renameable_occurrence: (String path,
|
|
46
|
+
# @rbs (String path, lsp_object position) -> SymbolOccurrence
|
|
47
|
+
def renameable_occurrence: (String path, lsp_object position) -> SymbolOccurrence
|
|
49
48
|
|
|
50
49
|
# @rbs (SymbolOccurrence occurrence, String new_name) -> void
|
|
51
50
|
def validate_new_name: (SymbolOccurrence occurrence, String new_name) -> void
|
|
@@ -62,20 +62,21 @@ module Ibex
|
|
|
62
62
|
# @rbs (String path, Frontend::Token token, String name) -> void
|
|
63
63
|
def add_global_reference: (String path, Frontend::Token token, String name) -> void
|
|
64
64
|
|
|
65
|
-
# @rbs (Symbol kind, String name) ->
|
|
66
|
-
def symbol_data: (Symbol kind, String name) ->
|
|
65
|
+
# @rbs (Symbol kind, String name) -> symbol_data
|
|
66
|
+
def symbol_data: (Symbol kind, String name) -> symbol_data
|
|
67
67
|
|
|
68
68
|
# @rbs (String path, Array[Frontend::Token] tokens, Array[String] names, Symbol kind, Symbol role) -> void
|
|
69
69
|
def add_named_tokens: (String path, Array[Frontend::Token] tokens, Array[String] names, Symbol kind, Symbol role) -> void
|
|
70
70
|
|
|
71
|
-
# @rbs (
|
|
72
|
-
|
|
71
|
+
# @rbs (name: String, kind: Symbol, role: Symbol, key: symbol_key, path: String,
|
|
72
|
+
# span: Frontend::SourceSpan, data: symbol_data) -> void
|
|
73
|
+
def add_occurrence: (name: String, kind: Symbol, role: Symbol, key: symbol_key, path: String, span: Frontend::SourceSpan, data: symbol_data) -> void
|
|
73
74
|
|
|
74
|
-
# @rbs (String name) ->
|
|
75
|
-
def global_key: (String name) ->
|
|
75
|
+
# @rbs (String name) -> symbol_key
|
|
76
|
+
def global_key: (String name) -> symbol_key
|
|
76
77
|
|
|
77
|
-
# @rbs (String path, Integer rule_id, String name) ->
|
|
78
|
-
def parameter_key: (String path, Integer rule_id, String name) ->
|
|
78
|
+
# @rbs (String path, Integer rule_id, String name) -> symbol_key
|
|
79
|
+
def parameter_key: (String path, Integer rule_id, String name) -> symbol_key
|
|
79
80
|
|
|
80
81
|
# @rbs (Array[String] parameters) -> String
|
|
81
82
|
def parameter_signature: (Array[String] parameters) -> String
|
|
@@ -2,24 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
module Ibex
|
|
4
4
|
module LSP
|
|
5
|
+
type symbol_key = [ :symbol, String ] | [ :parameter, String, Integer, String ] | [ :include, String ]
|
|
6
|
+
|
|
7
|
+
type symbol_data_value = String | Symbol | Integer | bool | nil | Array[String] | Hash[Symbol, symbol_data_value]
|
|
8
|
+
|
|
9
|
+
type symbol_data = Hash[Symbol, symbol_data_value]
|
|
10
|
+
|
|
5
11
|
# A source-backed grammar symbol definition or reference.
|
|
6
|
-
class SymbolOccurrence < Struct[String | Symbol |
|
|
12
|
+
class SymbolOccurrence < Struct[String | Symbol | symbol_key | Frontend::SourceSpan | symbol_data]
|
|
7
13
|
attr_accessor name(): String
|
|
8
14
|
|
|
9
15
|
attr_accessor kind(): Symbol
|
|
10
16
|
|
|
11
17
|
attr_accessor role(): Symbol
|
|
12
18
|
|
|
13
|
-
attr_accessor key():
|
|
19
|
+
attr_accessor key(): symbol_key
|
|
14
20
|
|
|
15
21
|
attr_accessor path(): String
|
|
16
22
|
|
|
17
23
|
attr_accessor span(): Frontend::SourceSpan
|
|
18
24
|
|
|
19
|
-
attr_accessor data():
|
|
25
|
+
attr_accessor data(): symbol_data
|
|
20
26
|
|
|
21
|
-
def self.new: (?name: String, ?kind: Symbol, ?role: Symbol, ?key:
|
|
22
|
-
| ({ ?name: String, ?kind: Symbol, ?role: Symbol, ?key:
|
|
27
|
+
def self.new: (?name: String, ?kind: Symbol, ?role: Symbol, ?key: symbol_key, ?path: String, ?span: Frontend::SourceSpan, ?data: symbol_data) -> instance
|
|
28
|
+
| ({ ?name: String, ?kind: Symbol, ?role: Symbol, ?key: symbol_key, ?path: String, ?span: Frontend::SourceSpan, ?data: symbol_data }) -> instance
|
|
23
29
|
end
|
|
24
30
|
end
|
|
25
31
|
end
|
data/sig/ibex/lsp/transport.rbs
CHANGED
|
@@ -4,16 +4,28 @@ module Ibex
|
|
|
4
4
|
module LSP
|
|
5
5
|
# Reads and writes bounded LSP JSON-RPC messages over Content-Length framing.
|
|
6
6
|
class Transport
|
|
7
|
+
interface _Input
|
|
8
|
+
def read: (Integer length) -> String?
|
|
9
|
+
|
|
10
|
+
def readpartial: (Integer length) -> String
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
interface _Output
|
|
14
|
+
def write: (String value) -> Object?
|
|
15
|
+
|
|
16
|
+
def flush: () -> Object?
|
|
17
|
+
end
|
|
18
|
+
|
|
7
19
|
HEADER_SEPARATOR: ::String
|
|
8
20
|
|
|
9
|
-
# @rbs (
|
|
10
|
-
def initialize: (
|
|
21
|
+
# @rbs (_Input input, _Output output) -> void
|
|
22
|
+
def initialize: (_Input input, _Output output) -> void
|
|
11
23
|
|
|
12
|
-
# @rbs () ->
|
|
13
|
-
def read_message: () ->
|
|
24
|
+
# @rbs () -> LSP::lsp_object?
|
|
25
|
+
def read_message: () -> LSP::lsp_object?
|
|
14
26
|
|
|
15
|
-
# @rbs (
|
|
16
|
-
def write_message: (
|
|
27
|
+
# @rbs (LSP::lsp_object message) -> void
|
|
28
|
+
def write_message: (LSP::lsp_object message) -> void
|
|
17
29
|
|
|
18
30
|
private
|
|
19
31
|
|
data/sig/ibex/lsp/workspace.rbs
CHANGED
|
@@ -21,8 +21,9 @@ module Ibex
|
|
|
21
21
|
private
|
|
22
22
|
|
|
23
23
|
# URI is a stdlib boundary whose implementation class varies by scheme.
|
|
24
|
-
#
|
|
25
|
-
|
|
24
|
+
# URI parsing returns a scheme-specific URI::Generic subclass.
|
|
25
|
+
# @rbs (String uri) -> URI::Generic
|
|
26
|
+
def parse_file_uri: (String uri) -> URI::Generic
|
|
26
27
|
|
|
27
28
|
# Ruby's URI::File may discard userinfo and port, so validate the raw authority first.
|
|
28
29
|
# @rbs (String uri) -> void
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated from lib/ibex/messages.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Ibex
|
|
4
|
+
# Immutable built-in diagnostic translations, separate from user E00xx
|
|
5
|
+
# sentence-keyed parser error catalogs.
|
|
6
|
+
module Messages
|
|
7
|
+
ROOT: String
|
|
8
|
+
|
|
9
|
+
LANGUAGES: Array[String]
|
|
10
|
+
|
|
11
|
+
# @rbs (String? requested) -> String
|
|
12
|
+
def self?.language: (String? requested) -> String
|
|
13
|
+
|
|
14
|
+
# @rbs (String id, ?language: String, **Object? values) -> String
|
|
15
|
+
def self?.translate: (String id, ?language: String, **Object? values) -> String
|
|
16
|
+
|
|
17
|
+
# @rbs (String id) -> bool
|
|
18
|
+
def self?.known?: (String id) -> bool
|
|
19
|
+
|
|
20
|
+
# @rbs (String language) -> Hash[String, String]
|
|
21
|
+
def self?.catalog: (String language) -> Hash[String, String]
|
|
22
|
+
|
|
23
|
+
# @rbs (String language) -> Hash[String, String]
|
|
24
|
+
def self?.load_catalog: (String language) -> Hash[String, String]
|
|
25
|
+
end
|
|
26
|
+
end
|