Module: MilkTea::ConstEval

Defined in:
lib/milk_tea/core/compile_time/const_eval.rb

Defined Under Namespace

Classes: Evaluator

Class Method Summary collapse

Class Method Details

.boolean_value?(value) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/milk_tea/core/compile_time/const_eval.rb', line 27

def boolean_value?(value)
  value == true || value == false
end

.equality_result(left, right) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/milk_tea/core/compile_time/const_eval.rb', line 18

def equality_result(left, right)
  return left == right if left.is_a?(Numeric) && right.is_a?(Numeric)
  return left == right if left.is_a?(String) && right.is_a?(String)
  return left == right if boolean_value?(left) && boolean_value?(right)
  return left == right if left.is_a?(Types::Base) && right.is_a?(Types::Base)

  nil
end

.evaluate(expression, resolve_identifier:, resolve_member_access:, resolve_type_ref: nil, resolve_call: nil) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/milk_tea/core/compile_time/const_eval.rb', line 9

def evaluate(expression, resolve_identifier:, resolve_member_access:, resolve_type_ref: nil, resolve_call: nil)
  Evaluator.new(
    resolve_identifier:,
    resolve_member_access:,
    resolve_type_ref:,
    resolve_call:,
  ).evaluate(expression)
end