Method: AdLint::Cc1::MultipleValue#test_must_be_true

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

#test_must_be_trueObject



2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
# File 'lib/adlint/cc1/value.rb', line 2408

def test_must_be_true
  non_nil_vals = effective_values.select { |mval| mval._base.value.exist? }
  if non_nil_vals.empty?
    TrivialValueTest.new(false)
  else
    pred = lambda { |val| val.test_must_be_true.true? }
    evid = DefinableTestEvidence.new(pred, true)
    non_nil_vals.each do |mval|
      if pred.call(mval._base.value)
        evid.add_positive_contributor(mval)
      else
        evid.add_negative_contributor(mval)
      end
      break if evid.fulfilled?
    end
    NontrivialValueTest.new(evid, true)
  end
end