// Copyright (c) 2018, 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.

import "package:expect/expect.dart";

List<T?> staticFn<T>([
  T? a1,
  T? a2,
  T? a3,
  T? a4,
  T? a5,
  T? a6,
  T? a7,
  T? a8,
  T? a9,
  T? a10,
]) {
  return <T?>[a1, a2, a3, a4, a5, a6, a7, a8, a9, a10];
}

class C<CT> {
  List<T?> memberFn<T>([
    T? a1,
    T? a2,
    T? a3,
    T? a4,
    T? a5,
    T? a6,
    T? a7,
    T? a8,
    T? a9,
    T? a10,
  ]) {
    return <T?>[a1, a2, a3, a4, a5, a6, a7, a8, a9, a10];
  }

  // Intercepted, e.g. on JSArray.
  List<T?> map<T>([
    T? a1,
    T? a2,
    T? a3,
    T? a4,
    T? a5,
    T? a6,
    T? a7,
    T? a8,
    T? a9,
    T? a10,
  ]) {
    return <T?>[a1, a2, a3, a4, a5, a6, a7, a8, a9, a10];
  }
}

check(a, b) {
  print('a: $a\nb: $b');
  Expect.equals(a.toString(), b.toString());
}

main() {
  check(
    '[1, 2, 3, null, null, null, null, null, null, null]',
    Function.apply(staticFn, [1, 2, 3]),
  );

  check(
    '[1, 2, 3, 4, null, null, null, null, null, null]',
    Function.apply(staticFn, [1, 2, 3, 4]),
  );

  check(
    '[1, 2, 3, 4, 5, 6, 7, null, null, null]',
    Function.apply(staticFn, [1, 2, 3, 4, 5, 6, 7]),
  );

  var o = new C<num>();
  dynamic memberFn1 = o.map;

  check(
    '[1, 2, 3, null, null, null, null, null, null, null]',
    Function.apply(memberFn1, [1, 2, 3]),
  );

  check(
    '[1, 2, 3, 4, null, null, null, null, null, null]',
    Function.apply(memberFn1, [1, 2, 3, 4]),
  );

  check(
    '[1, 2, 3, 4, 5, 6, 7, null, null, null]',
    Function.apply(memberFn1, [1, 2, 3, 4, 5, 6, 7]),
  );

  dynamic memberFn2 = o.memberFn;

  check(
    '[1, 2, 3, null, null, null, null, null, null, null]',
    Function.apply(memberFn2, [1, 2, 3]),
  );

  check(
    '[1, 2, 3, 4, null, null, null, null, null, null]',
    Function.apply(memberFn2, [1, 2, 3, 4]),
  );

  check(
    '[1, 2, 3, 4, 5, 6, 7, null, null, null]',
    Function.apply(memberFn2, [1, 2, 3, 4, 5, 6, 7]),
  );

  // TODO(sra): Apply of instantiations
}
