// 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 An explicitly overridden extension method access, like
/// Foo<Bar>(b).baz, also works as a tear-off.
///
/// @description Check that an explicitly overridden extension method access,
/// like Foo<Bar>(b).baz, also works as a tear-off.
/// @author sgrekhov@unipro.ru


import "../../Utils/expect.dart";

extension ExtendedList<T> on List<T> {
  String foo(String x) => "${x}:${this.toString()}";
}

main() {
  List<int> list = [1, 2, 3];
  String Function(String) func = ExtendedList(list).foo;
  Expect.equals("x:${list.toString()}", func("x"));
  Expect.equals("Lily was here:${list.toString()}", func("Lily was here"));
}
