// Copyright (c) 2020, 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 A null aware method call e?.m(args) translates to:
///  SHORT[EXP(e), fn[x] => x.m(ARGS(args))]
///
/// @description Check that a null aware method call e?.m(args) translates to:
///  SHORT[EXP(e), fn[x] => x.m(ARGS(args))]
/// Test e?.m().n()
/// @author sgrekhov@unipro.ru

// Requirements=nnbd-weak
import "../../../Utils/expect.dart";

class C {
  String test1() => "Lily was here";
  String test2(String arg) => arg;
}

void testShort(C? x) {
  var actual1 = x?.test1().substring(0, 4);
  var n1 = x;
  var expected1 = n1 == null ? null : n1.test1().substring(0, 4);
  Expect.equals(expected1, actual1);

  var actual2 = x?.test2("Show must go on").substring(0, 4);
  var n2 = x;
  var expected2 = n2 == null ? null : n2.test2("Show must go on").substring(0, 4);
  Expect.equals(expected2, actual2);
}

main() {
  C? c1 = null;
  testShort(c1);
  c1 = new C();
  testShort(c1);

  C c2 = new C();
  testShort(c2);
}
