Method: AdLint::Cc1::MultipleValue#fork

Defined in:
lib/adlint/cc1/value.rb

#forkObject



2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
# File 'lib/adlint/cc1/value.rb', line 2102

def fork
  same_val = @descendants.find { |desc| desc.eql?(_base.value) }
  if same_val
    same_val._base.tag.by = _base.tag.by + same_val._base.tag.by
    same_val._base.tag.at = _base.tag.at + same_val._base.tag.at
    same_val
  else
    MultipleValue.new(_base.value.dup, self, _base.tag.dup).tap do |desc|
      @descendants.push(desc)
    end
  end
end