Module: Ibex::Runtime::ASTData

Defined in:
lib/ibex/runtime/ast_data.rb,
sig/ibex/runtime/ast_data.rbs

Overview

Builds Data classes on Ruby 3.2+ and an immutable Struct-compatible fallback on older supported Rubies.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.define(*members) ⇒ Object

RBS:

  • (*Symbol members) -> singleton(Object)



10
11
12
13
14
15
16
17
18
19
# File 'lib/ibex/runtime/ast_data.rb', line 10

def define(*members)
  return ::Data.define(*members) if defined?(::Data)

  immutable = Module.new
  immutable.send(:define_method, :initialize) do |*arguments, **keywords|
    super(*arguments, **keywords)
    freeze
  end
  Struct.new(*members, keyword_init: true).tap { |node| node.prepend(immutable) }
end

Instance Method Details

#self?.definesingleton(Object)

RBS:

  • (*Symbol members) -> singleton(Object)

Parameters:

  • members (Symbol)

Returns:

  • (singleton(Object))


9
# File 'sig/ibex/runtime/ast_data.rbs', line 9

def self?.define: (*Symbol members) -> singleton(Object)