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/comment_tracker.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: CommentTracker, 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 Constant Location

Version::VERSION
NodeTypingNormalizer =

Alias for the shared normalizer module from ast-merge

Ast::Merge::NodeTyping::Normalizer

Class Method Summary collapse

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 current RBS parsing entrypoints with TreeHaver.

This registers:

  1. the RBS gem backend
  2. the tree-sitter-rbs grammar when the sibling TreeHaver runtime can load it


100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/rbs/merge.rb', line 100

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 the tree-sitter-rbs grammar when present.
    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