rbs-merge 1.0.0 → 2.0.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
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +122 -1
- data/README.md +200 -124
- data/lib/rbs/merge/backends/rbs_backend.rb +531 -0
- data/lib/rbs/merge/conflict_resolver.rb +148 -19
- data/lib/rbs/merge/file_aligner.rb +10 -1
- data/lib/rbs/merge/file_analysis.rb +360 -98
- data/lib/rbs/merge/freeze_node.rb +65 -4
- data/lib/rbs/merge/merge_result.rb +43 -10
- data/lib/rbs/merge/node_type_normalizer.rb +290 -0
- data/lib/rbs/merge/node_wrapper.rb +456 -0
- data/lib/rbs/merge/smart_merger.rb +142 -74
- data/lib/rbs/merge/version.rb +1 -1
- data/lib/rbs/merge.rb +69 -1
- data.tar.gz.sig +0 -0
- metadata +25 -10
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7e4057790a0643cd6c0fd1821ec4a0ad52ad6160ec3d87ae2c787e80598dd604
|
|
4
|
+
data.tar.gz: 2c601503144989b9790853fd5a6bcbaccd6664c16a15c817faeec2bff4933a4f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7ea82d18877258e1ef05d9481b01027c40eafff471a6b31dc578d7b19f5a05a6bd642b7f2155271b611782c017d302b16b6804435d9e403e578d1966f6ca5761
|
|
7
|
+
data.tar.gz: c19d630681e6595da1f4a1cbd51e70b4981b280c635cc650ce69781bf759d5dce36a2b1c88ca844fe89955718a598a796a5e83570296ad476dec83f4bded882a
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,125 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [2.0.0] - 2026-02-19
|
|
34
|
+
|
|
35
|
+
- TAG: [v2.0.0][2.0.0t]
|
|
36
|
+
- COVERAGE: 72.31% -- 713/986 lines in 12 files
|
|
37
|
+
- BRANCH COVERAGE: 39.77% -- 208/523 branches in 12 files
|
|
38
|
+
- 98.63% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- AGENTS.md
|
|
43
|
+
- **Dependency Tags Support**: Added `spec/support/dependency_tags.rb` to load shared
|
|
44
|
+
dependency tags from tree_haver and ast-merge. This enables automatic exclusion of
|
|
45
|
+
tests when required backends or dependencies are not available.
|
|
46
|
+
- Tests tagged with `:ffi_backend`, `:java_backend`, `:rust_backend` are now properly
|
|
47
|
+
excluded when those backends aren't available
|
|
48
|
+
- Tests tagged with `:rbs_grammar` are excluded when tree-sitter-rbs isn't available
|
|
49
|
+
- Tests tagged with `:rbs_parsing` work with any available RBS parsing backend
|
|
50
|
+
- FFI backend isolation for test suite
|
|
51
|
+
- Added `bin/rspec-ffi` script to run FFI specs in isolation (before MRI backend loads)
|
|
52
|
+
- Added `spec/spec_ffi_helper.rb` for FFI-specific test configuration
|
|
53
|
+
- Updated Rakefile with `ffi_specs` and `remaining_specs` tasks
|
|
54
|
+
- The `:test` task now runs FFI specs first, then remaining specs
|
|
55
|
+
- **BackendRegistry Integration**: RbsBackend now registers its availability checker with `TreeHaver::BackendRegistry`
|
|
56
|
+
- Enables `TreeHaver::RSpec::DependencyTags` to detect RBS backend availability without hardcoded checks
|
|
57
|
+
- Called automatically when backend is loaded: `TreeHaver::BackendRegistry.register_availability_checker(:rbs)`
|
|
58
|
+
- **TreeHaver backend integration** - rbs-merge now uses TreeHaver for all parsing,
|
|
59
|
+
enabling cross-platform RBS parsing:
|
|
60
|
+
- **`Rbs::Merge::Backends::RbsBackend`** - New TreeHaver-compatible backend module
|
|
61
|
+
that wraps the RBS gem. Registered with TreeHaver via `register_language(:rbs, ...)`.
|
|
62
|
+
- On MRI: Uses RBS gem backend (richer AST, comment association)
|
|
63
|
+
- On JRuby: Uses tree-sitter-rbs via TreeHaver's Java backend
|
|
64
|
+
- Backend selection respects `TreeHaver.with_backend()` and `TREE_HAVER_BACKEND` env var
|
|
65
|
+
- **`NodeWrapper#comment`** - Delegates to underlying RBS gem node's comment for
|
|
66
|
+
leading comment association (RBS gem backend only)
|
|
67
|
+
- **`FileAnalysis#compute_tree_sitter_signature`** - Generates signatures for raw
|
|
68
|
+
TreeHaver::Node objects from tree-sitter backend
|
|
69
|
+
- **`FileAnalysis#extract_tree_sitter_node_name`** - Extracts declaration names from
|
|
70
|
+
tree-sitter nodes by traversing child nodes
|
|
71
|
+
- `node_typing` parameter for per-node-type merge preferences
|
|
72
|
+
- Enables `preference: { default: :destination, special_type: :template }` pattern
|
|
73
|
+
- Works with custom merge_types assigned via node_typing lambdas
|
|
74
|
+
- `match_refiner` parameter for fuzzy matching support
|
|
75
|
+
- `regions` and `region_placeholder` parameters for nested content merging
|
|
76
|
+
|
|
77
|
+
### Changed
|
|
78
|
+
|
|
79
|
+
- appraisal2 v3.0.6
|
|
80
|
+
- kettle-test v1.0.10
|
|
81
|
+
- stone_checksums v1.0.3
|
|
82
|
+
- [ast-merge v4.0.6](https://github.com/kettle-rb/ast-merge/releases/tag/v4.0.6)
|
|
83
|
+
- [tree_haver v5.0.5](https://github.com/kettle-rb/tree_haver/releases/tag/v5.0.5)
|
|
84
|
+
- tree_stump v0.2.0
|
|
85
|
+
- fork no longer required, updates all applied upstream
|
|
86
|
+
- Updated documentation on hostile takeover of RubyGems
|
|
87
|
+
- https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo
|
|
88
|
+
- **RbsBackend refactored to use TreeHaver::Base classes**
|
|
89
|
+
- `RbsBackend::Language` now inherits from `TreeHaver::Base::Language`
|
|
90
|
+
- `RbsBackend::Parser` now inherits from `TreeHaver::Base::Parser`
|
|
91
|
+
- `RbsBackend::Tree` now inherits from `TreeHaver::Base::Tree`
|
|
92
|
+
- `RbsBackend::Node` now inherits from `TreeHaver::Base::Node`
|
|
93
|
+
- Consistent API across all merge gem backends
|
|
94
|
+
- **Tree-sitter grammar registration** - `register_backend!` now registers both:
|
|
95
|
+
- The RBS gem backend (Ruby-based parser, MRI only)
|
|
96
|
+
- The tree-sitter-rbs grammar path (for native tree-sitter backends)
|
|
97
|
+
- This enables `TreeHaver.parser_for(:rbs)` to use tree-sitter when available
|
|
98
|
+
- **FileAnalysis now uses TreeHaver exclusively** - Removed separate backend selection
|
|
99
|
+
logic. `parse_rbs` now calls `TreeHaver.parser_for(:rbs)` which handles all backend
|
|
100
|
+
selection automatically.
|
|
101
|
+
- **`node_start_line`/`node_end_line` helpers** - Now check for `start_line`/`end_line`
|
|
102
|
+
methods first (TreeHaver::Node has these), falling back to `location` or `start_point`.
|
|
103
|
+
- **`ConflictResolver#declarations_identical?`** - Now compares text content instead of
|
|
104
|
+
relying on object equality, enabling cross-backend comparison.
|
|
105
|
+
- **`ConflictResolver#canonical_type`** - Now handles TreeHaver::Node objects in addition
|
|
106
|
+
to NodeWrapper and RBS gem nodes.
|
|
107
|
+
- **`ConflictResolver#has_members?`** - Now checks for `members` child nodes in
|
|
108
|
+
TreeHaver::Node objects for tree-sitter backend support.
|
|
109
|
+
- **`ConflictResolver#resolve`** - Now checks for template freeze blocks first, ensuring
|
|
110
|
+
frozen content from templates is preserved during merge.
|
|
111
|
+
- **`FileAligner#build_signature_map`** - FreezeNodes are now indexed by both their own
|
|
112
|
+
signature AND the signatures of their contained nodes. This allows freeze blocks to
|
|
113
|
+
match against the non-frozen version of the same declaration in the other file.
|
|
114
|
+
- **`MergeResult#add_freeze_block`** - Now uses the freeze_node's own analysis for line
|
|
115
|
+
extraction, ensuring template freeze blocks use template lines (not destination lines).
|
|
116
|
+
- **`SmartMerger#process_match`** - Now handles template FreezeNodes correctly, adding
|
|
117
|
+
them via `add_freeze_block` when the template side wins.
|
|
118
|
+
- **`SmartMerger#process_template_only`** - FreezeNodes from template are now always
|
|
119
|
+
added (they represent protected content that must be preserved).
|
|
120
|
+
- **SmartMerger**: Added `**options` for forward compatibility
|
|
121
|
+
- Accepts additional options that may be added to base class in future
|
|
122
|
+
- Passes all options through to `SmartMergerBase`
|
|
123
|
+
- **ConflictResolver**: Added `**options` for forward compatibility
|
|
124
|
+
- **MergeResult**: Added `**options` for forward compatibility
|
|
125
|
+
- **BREAKING**: `SmartMerger` now inherits from `Ast::Merge::SmartMergerBase`
|
|
126
|
+
- Provides standardized options API consistent with all other `*-merge` gems
|
|
127
|
+
- Gains automatic support for new SmartMergerBase features
|
|
128
|
+
- `max_recursion_depth` parameter is still supported
|
|
129
|
+
- `preference` now accepts Hash for per-type preferences
|
|
130
|
+
|
|
131
|
+
### Removed
|
|
132
|
+
|
|
133
|
+
- **`FileAnalysis#rbs_gem_available?`** - Removed; TreeHaver handles backend availability
|
|
134
|
+
- **`FileAnalysis#parse_with_rbs_gem`** - Removed; replaced by `process_rbs_gem_result`
|
|
135
|
+
- **`FileAnalysis#parse_with_tree_sitter`** - Removed; replaced by `process_tree_sitter_result`
|
|
136
|
+
- **`backend:` parameter from `FileAnalysis#initialize`** - Removed; use
|
|
137
|
+
`TreeHaver.with_backend()` to control backend selection
|
|
138
|
+
|
|
139
|
+
### Fixed
|
|
140
|
+
|
|
141
|
+
- ConflictResolver now applies Hash-based per-node-type preferences via `node_typing`.
|
|
142
|
+
- **Freeze blocks from template now preserved correctly** - Previously, freeze blocks
|
|
143
|
+
from the template would not match destination declarations because their signatures
|
|
144
|
+
differed. Now FreezeNodes are indexed by contained node signatures.
|
|
145
|
+
- **FreezeNode name extraction** - `extract_node_name` now handles TreeHaver::Node
|
|
146
|
+
objects and extracts meaningful names for error messages.
|
|
147
|
+
- **`FreezeNode#get_start_line`/`get_end_line`** - Now properly handle nodes with
|
|
148
|
+
direct `start_line`/`end_line` methods (TreeHaver::Node).
|
|
149
|
+
- **`SmartMerger#get_start_line`/`get_end_line`** - Added helper methods to support
|
|
150
|
+
both NodeWrapper and RBS gem nodes in `reconstruct_declaration_with_merged_members`.
|
|
151
|
+
|
|
33
152
|
## [1.0.0] - 2025-12-12
|
|
34
153
|
|
|
35
154
|
- TAG: [v1.0.0][1.0.0t]
|
|
@@ -41,6 +160,8 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
41
160
|
|
|
42
161
|
- Initial release
|
|
43
162
|
|
|
44
|
-
[Unreleased]: https://github.com/kettle-rb/rbs-merge/compare/
|
|
163
|
+
[Unreleased]: https://github.com/kettle-rb/rbs-merge/compare/v2.0.0...HEAD
|
|
164
|
+
[2.0.0]: https://github.com/kettle-rb/rbs-merge/compare/v1.0.0...v2.0.0
|
|
165
|
+
[2.0.0t]: https://github.com/kettle-rb/rbs-merge/releases/tag/v2.0.0
|
|
45
166
|
[1.0.0]: https://github.com/kettle-rb/rbs-merge/compare/7ae936a6ae844aee513264eecc39215eed53c313...v1.0.0
|
|
46
167
|
[1.0.0t]: https://github.com/kettle-rb/rbs-merge/tags/v1.0.0
|