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
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?.define ⇒ singleton(Object)
9 |
# File 'sig/ibex/runtime/ast_data.rbs', line 9
def self?.define: (*Symbol members) -> singleton(Object)
|