Module: Jade::Frontend::TypeChecking::Constraints::Deriving

Extended by:
Deriving
Included in:
Deriving
Defined in:
lib/jade/frontend/type_checking/constraints/deriving.rb,
lib/jade/frontend/type_checking/constraints/deriving/eq.rb,
lib/jade/frontend/type_checking/constraints/deriving/show.rb,
lib/jade/frontend/type_checking/constraints/deriving/helpers.rb,
lib/jade/frontend/type_checking/constraints/deriving/decodable.rb,
lib/jade/frontend/type_checking/constraints/deriving/encodable.rb

Defined Under Namespace

Modules: Decodable, Encodable, Eq, Helpers, Show

Constant Summary collapse

BUILTIN =
[Eq, Show, Decodable, Encodable].freeze

Instance Method Summary collapse

Instance Method Details

#derivable?(interface) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/jade/frontend/type_checking/constraints/deriving.rb', line 18

def derivable?(interface)
  derivers.any? { it.supports?(interface) }
end

#derive(constraint, registry, entry_name, &lookup) ⇒ Object



22
23
24
25
26
# File 'lib/jade/frontend/type_checking/constraints/deriving.rb', line 22

def derive(constraint, registry, entry_name, &lookup)
  derivers
    .find { it.supports?(constraint.interface) }
    .then { it.derive(constraint, registry, entry_name, &lookup) }
end

#deriversObject



16
# File 'lib/jade/frontend/type_checking/constraints/deriving.rb', line 16

def derivers = BUILTIN + Extensions.derivers