// Copyright (c) 2021, 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 We infer the type of a parameter declaration, p, of a
/// non-redirecting generative constructor, C, as:
/// ...
/// Otherwise, if the parameter is a super parameter (super.name) the inferred
/// type of the parameter is the associated super-constructor parameter (which
/// must exist, otherwise we’d have a compile-time error).
///
/// @description Check that if the parameter is a super parameter (super.name)
/// the inferred type of the parameter is the associated super-constructor
/// parameter
/// @author sgrekhov@unipro.ru

// SharedOptions=--enable-experiment=super-parameters

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

test<T>(T t) {}

class S<T> {
  final f1;
  var v1;
  int i1;
  T t1;
  S(this.f1, this.v1, this.i1, this.t1, var x) {
    test<int>(x);
  }
}

class C<T> extends S<T> {
  final f2;
  var v2;
  int i2;
  T t2;
  C(super.f1, super.v1, super.i1, super.t1, super.x, this.f2, this.v2, this.i2,
    this.t2);
}

main() {
  var c1 = C(1, 2, 3, 4, 5, 6, 7, 8, 9);
  test<int>(c1.f1);
  test<int>(c1.v1);
  test<int>(c1.i1);
  test<int>(c1.t1);
  test<int>(c1.f2);
  test<int>(c1.v2);
  test<int>(c1.i2);
  test<int>(c1.t2);

  Expect.isTrue(c1.f1 is int);
  Expect.isFalse(c1.f1 is String);
  Expect.isTrue(c1.v1 is int);
  Expect.isFalse(c1.v1 is String);
  Expect.isTrue(c1.i1 is int);
  Expect.isFalse(c1.i1 is String);
  Expect.isTrue(c1.t1 is int);
  Expect.isFalse(c1.t1 is String);
  Expect.isTrue(c1.f2 is int);
  Expect.isFalse(c1.f2 is String);
  Expect.isTrue(c1.v2 is int);
  Expect.isFalse(c1.v2 is String);
  Expect.isTrue(c1.i2 is int);
  Expect.isFalse(c1.i2 is String);
  Expect.isTrue(c1.t2 is int);
  Expect.isFalse(c1.t2 is String);
  Expect.runtimeIsType<int>(c1.f1);
  Expect.runtimeIsNotType<String>(c1.f1);
  Expect.runtimeIsType<int>(c1.v1);
  Expect.runtimeIsNotType<String>(c1.v1);
  Expect.runtimeIsType<int>(c1.i1);
  Expect.runtimeIsNotType<String>(c1.i1);
  Expect.runtimeIsType<int>(c1.t1);
  Expect.runtimeIsNotType<String>(c1.t1);
  Expect.runtimeIsType<int>(c1.f2);
  Expect.runtimeIsNotType<String>(c1.f2);
  Expect.runtimeIsType<int>(c1.v2);
  Expect.runtimeIsNotType<String>(c1.v2);
  Expect.runtimeIsType<int>(c1.i2);
  Expect.runtimeIsNotType<String>(c1.i2);
  Expect.runtimeIsType<int>(c1.t2);
  Expect.runtimeIsNotType<String>(c1.t2);

  C<int> c2 = C<int>(1, 2, 3, 4, 5, 6, 7, 8, 9);
  test<int>(c2.f1);
  test<int>(c2.v1);
  test<int>(c2.i1);
  test<int>(c2.t1);
  test<int>(c2.f2);
  test<int>(c2.v2);
  test<int>(c2.i2);
  test<int>(c2.t2);

  Expect.isTrue(c2.f1 is int);
  Expect.isFalse(c2.f1 is String);
  Expect.isTrue(c2.v1 is int);
  Expect.isFalse(c2.v1 is String);
  Expect.isTrue(c2.i1 is int);
  Expect.isFalse(c2.i1 is String);
  Expect.isTrue(c2.t1 is int);
  Expect.isFalse(c2.t1 is String);
  Expect.isTrue(c2.f2 is int);
  Expect.isFalse(c2.f2 is String);
  Expect.isTrue(c2.v2 is int);
  Expect.isFalse(c2.v2 is String);
  Expect.isTrue(c2.i2 is int);
  Expect.isFalse(c2.i2 is String);
  Expect.isTrue(c2.t2 is int);
  Expect.isFalse(c2.t2 is String);
  Expect.runtimeIsType<int>(c2.f1);
  Expect.runtimeIsNotType<String>(c2.f1);
  Expect.runtimeIsType<int>(c2.v1);
  Expect.runtimeIsNotType<String>(c2.v1);
  Expect.runtimeIsType<int>(c2.i1);
  Expect.runtimeIsNotType<String>(c2.i1);
  Expect.runtimeIsType<int>(c2.t1);
  Expect.runtimeIsNotType<String>(c2.t1);
  Expect.runtimeIsType<int>(c2.f2);
  Expect.runtimeIsNotType<String>(c2.f2);
  Expect.runtimeIsType<int>(c2.v2);
  Expect.runtimeIsNotType<String>(c2.v2);
  Expect.runtimeIsType<int>(c2.i2);
  Expect.runtimeIsNotType<String>(c2.i2);
  Expect.runtimeIsType<int>(c2.t2);
  Expect.runtimeIsNotType<String>(c2.t2);
}
