Class: SFRP::Raw::MatchExp

Inherits:
Struct
  • Object
show all
Defined in:
lib/sfrp/raw/expression.rb

Defined Under Namespace

Classes: Case, Pattern

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#casesObject

Returns the value of attribute cases

Returns:

  • (Object)

    the current value of cases



51
52
53
# File 'lib/sfrp/raw/expression.rb', line 51

def cases
  @cases
end

#left_expObject

Returns the value of attribute left_exp

Returns:

  • (Object)

    the current value of left_exp



51
52
53
# File 'lib/sfrp/raw/expression.rb', line 51

def left_exp
  @left_exp
end

#spObject

Returns the value of attribute sp

Returns:

  • (Object)

    the current value of sp



51
52
53
# File 'lib/sfrp/raw/expression.rb', line 51

def sp
  @sp
end

Instance Method Details

#blame_side_effectObject



74
75
76
77
# File 'lib/sfrp/raw/expression.rb', line 74

def blame_side_effect
  left_exp.blame_side_effect
  cases.map(&:exp).each(&:blame_side_effect)
end

#to_flat(set, ns) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/sfrp/raw/expression.rb', line 79

def to_flat(set, ns)
  flat_cases = cases.map do |c|
    flat_pattern = c.pattern.to_flat(set, ns)
    Flat::MatchExp::Case.new(flat_pattern, c.exp.to_flat(set, ns))
  end
  Flat::MatchExp.new(left_exp.to_flat(set, ns), flat_cases, sp)
end

#vconst_refsObject



70
71
72
# File 'lib/sfrp/raw/expression.rb', line 70

def vconst_refs
  [left_exp, *cases.map(&:pattern), *cases.map(&:exp)].flat_map(&:vconst_refs)
end