// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// VMOptions=--deterministic

import "package:expect/expect.dart";

@pragma("vm:never-inline")
foo(List<int?> x) => x[1]! + x[0]!;

@pragma("vm:never-inline")
bar(List<int?> x) => 1 + x[0]!;

@pragma("vm:never-inline")
baz(List<int?> x) => x[0]! + 2;

main() {
  var x = new List<int?>.filled(2, null);

  // Only first is null.
  x[0] = null;
  x[1] = 123;
  try {
    foo(x);
  } on TypeError catch (e) {
    ;
  }
  try {
    bar(x);
  } on TypeError catch (e) {
    ;
  }
  try {
    baz(x);
  } on TypeError catch (e) {
    ;
  }

  // Only second is null.
  x[0] = 456;
  x[1] = null;
  try {
    foo(x);
  } on TypeError catch (e) {
    ;
  }
  Expect.equals(457, bar(x));
  Expect.equals(458, baz(x));

  // Neither is null.
  x[0] = 789;
  x[1] = -1;
  Expect.equals(788, foo(x));
  Expect.equals(790, bar(x));
  Expect.equals(791, baz(x));
}
