Module: Ibex::Runtime::ASTData
- Defined in:
- lib/ibex/runtime/ast_data.rb
Overview
Builds Data classes on Ruby 3.2+ and an immutable Struct-compatible fallback on older supported Rubies.
Class 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 |