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

// @dart=2.9

class A<T> {
  var field1 = 0;
  var field2 = 0;
  var field3 = 0;
  var field4 = 0;
  int field5;
  int field6;
  int field7;
  int field8;
  var field9;
  T field10;
  T field11;
  T field12;
  T field13;
  T field14;
  var field15 = 0;
  int field16;
  var field17 = 0;
  int field18;
}

class B<T, S> {
  var field1 = 1;
  var field2 = '';
  var field3 = 1;
  var field4 = '';
  int field5;
  String field6;
  int field7;
  String field8;
  var field9;
  T field10;
  S field11;
  T field12;
  T field13;
  S field14;
  int field15;
  var field16 = 0;
  String field17;
  var field18 = '';
}

class C implements A<int>, B<int, String> {
  var field1;
  var field2; // error
  var field3 = 0;
  var field4 = 0; // error
  var field5;
  var field6; // error
  var field7 = 0;
  var field8 = 0; // error
  var field9;
  var field10;
  var field11; // error
  int field12;
  var field13 = 0;
  int field14; // error
  var field15;
  var field16;
  var field17; // error
  var field18; // error

  C(
      this.field1,
      this.field2,
      this.field3,
      this.field4,
      this.field5,
      this.field6,
      this.field7,
      this.field8,
      this.field9,
      this.field10,
      this.field11,
      this.field12,
      this.field13,
      this.field14,
      this.field15,
      this.field16,
      this.field17,
      this.field18);
}

class D<T> implements A<T>, B<T, T> {
  var field1;
  var field2; // error
  var field3 = 0;
  var field4 = 0; // error
  var field5;
  var field6; // error
  var field7 = 0;
  var field8 = 0; // error
  var field9;
  var field10;
  var field11;
  T field12;
  var field13 = null;
  T field14;
  var field15;
  var field16;
  var field17; // error
  var field18; // error

  D(
      this.field1,
      this.field2,
      this.field3,
      this.field4,
      this.field5,
      this.field6,
      this.field7,
      this.field8,
      this.field9,
      this.field10,
      this.field11,
      this.field12,
      this.field13,
      this.field14,
      this.field15,
      this.field16,
      this.field17,
      this.field18);
}
