/*
 * 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.
 */
/**
 * @assertion The assignment e1?.f = e2 translates to:
 *  SHORT[EXP(e1), fn[x] => x.f = EXP(e2)]
 *
 *  The other assignment operators are handled equivalently.
 *
 * @description Check that assignments like e1?.f ??= e2 translates to:
 *  SHORT[EXP(e1), fn[x] => x.f ??= EXP(e2)]
 * @author sgrekhov@unipro.ru
 */
// Requirements=nnbd-strong
import "../../Utils/expect.dart";

class C {
  int? test = 13;
}

void testShort(C? x, int e2) {
  var actual1 = x?.test ??= e2;
  var n0 = x;
  var expected1 = n0 == null ? null : n0.test ??= e2;
  Expect.equals(expected1, actual1);
}

main() {
  C? c1 = null;
  testShort(c1, 42);
  c1 = new C();
  testShort(c1, 42);
  if (c1 != null) {
    c1.test = null;
    testShort(c1, 42);
  }

  C c2 = new C();
  testShort(c2, 42);
  c2.test = null;
  testShort(c2, 42);
}
