// 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.

// @dart = 2.9

/// @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"));
}
