Module: MilkTea::Bindings

Defined in:
lib/milk_tea/core/bindings.rb,
lib/milk_tea/core/bindings/value_binding.rb,
lib/milk_tea/core/bindings/module_binding.rb,
lib/milk_tea/core/bindings/function_binding.rb,
lib/milk_tea/core/bindings/attribute_binding.rb

Defined Under Namespace

Classes: AttributeBinding, FunctionBinding, ModuleBinding, ValueBinding

Constant Summary collapse

BUILTIN_ATTRIBUTE_NAMES =
%w[packed align deprecated test expect_fatal].freeze

Class Method Summary collapse

Class Method Details

.builtin_attribute_binding(name, types) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/milk_tea/core/bindings/attribute_binding.rb', line 8

def self.builtin_attribute_binding(name, types)
  case name
  when "packed"
    AttributeBinding.new(
      name: "packed",
      targets: [:struct].freeze,
      params: [].freeze,
      module_name: nil,
      builtin: true,
      ast: nil,
    )
  when "align"
    AttributeBinding.new(
      name: "align",
      targets: [:struct].freeze,
      params: [Types::Registry.parameter("bytes", types.fetch("ptr_uint"))].freeze,
      module_name: nil,
      builtin: true,
      ast: nil,
    )
  when "deprecated"
    AttributeBinding.new(
      name: "deprecated",
      targets: %i[callable struct const enum flags union variant event].freeze,
      params: [Types::Registry.parameter("message", types.fetch("str"))].freeze,
      module_name: nil,
      builtin: true,
      ast: nil,
    )
  when "test"
    AttributeBinding.new(
      name: "test",
      targets: [:callable].freeze,
      params: [].freeze,
      module_name: nil,
      builtin: true,
      ast: nil,
    )
  when "expect_fatal"
    AttributeBinding.new(
      name: "expect_fatal",
      targets: [:callable].freeze,
      params: [].freeze,
      module_name: nil,
      builtin: true,
      ast: nil,
    )
  end
end