Class: MilkTea::CompileTime::Evaluator

Inherits:
MilkTea::ConstEval::Evaluator show all
Defined in:
lib/milk_tea/core/compile_time.rb

Instance Method Summary collapse

Methods inherited from MilkTea::ConstEval::Evaluator

#evaluate, #evaluate_binary, #evaluate_unary, #initialize, #zero_numeric?

Constructor Details

This class inherits a constructor from MilkTea::ConstEval::Evaluator

Instance Method Details

#resolve_layout_type(type_ref) ⇒ Object



442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
# File 'lib/milk_tea/core/compile_time.rb', line 442

def resolve_layout_type(type_ref)
  super
rescue SemanticError
  return unless type_ref.respond_to?(:name) && type_ref.name.parts.length >= 1

  expression = ::MilkTea::AST.build_chain_from_parts(type_ref.name.parts)
  return unless expression

  value = evaluate(expression)
  return value if value.is_a?(Types::Struct) || value.is_a?(Types::Primitive) ||
    value.is_a?(Types::Union) || value.is_a?(Types::Nullable) ||
    value.is_a?(Types::StructInstance)

  nil
end