Module: Rbs::Merge
- Defined in:
- lib/rbs/merge.rb,
lib/rbs/merge/version.rb,
lib/rbs/merge/freeze_node.rb,
lib/rbs/merge/debug_logger.rb,
lib/rbs/merge/file_aligner.rb,
lib/rbs/merge/merge_result.rb,
lib/rbs/merge/node_wrapper.rb,
lib/rbs/merge/smart_merger.rb,
lib/rbs/merge/file_analysis.rb,
lib/rbs/merge/conflict_resolver.rb,
lib/rbs/merge/backends/rbs_backend.rb,
lib/rbs/merge/node_type_normalizer.rb
Defined Under Namespace
Modules: Backends, DebugLogger, NodeTypeNormalizer, Version Classes: ConflictResolver, DestinationParseError, Error, FileAligner, FileAnalysis, FreezeNode, MergeResult, NodeWrapper, ParseError, SmartMerger, TemplateParseError
Constant Summary collapse
- BACKEND_REGISTRY =
Tracks whether backends were registered, without class instance variables.
Struct.new(:registered, :mutex).new(false, Mutex.new)
- VERSION =
traditional location
Version::VERSION
- NodeTypingNormalizer =
Alias for the shared normalizer module from ast-merge
Ast::Merge::NodeTyping::Normalizer
Class Method Summary collapse
-
.register_backend! ⇒ Object
private
Register the RBS backends with TreeHaver.
Class Method Details
.register_backend! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Register the RBS backends with TreeHaver
This registers both:
- The RBS gem backend (Ruby-based, MRI only)
- The tree-sitter-rbs grammar (if available, works on all platforms)
This allows TreeHaver.parser_for(:rbs) to use whichever backend is
available, with the RBS gem preferred when available.
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/rbs/merge.rb', line 103 def register_backend! BACKEND_REGISTRY.mutex.synchronize do return if BACKEND_REGISTRY.registered # Register the RBS gem backend (for MRI Ruby) TreeHaver.register_language( :rbs, backend_module: Backends::RbsBackend, backend_type: :rbs, gem_name: "rbs", ) # Also register tree-sitter-rbs grammar if available # This enables tree-sitter backends (mri, ffi, rust, java) to parse RBS grammar_finder = TreeHaver::GrammarFinder.new(:rbs) if grammar_finder.available? TreeHaver.register_language( :rbs, path: grammar_finder.find_library_path, symbol: grammar_finder.symbol_name, ) end BACKEND_REGISTRY.registered = true end end |