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



263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
# File 'lib/milk_tea/core/compile_time.rb', line 263

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