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

main() {
  print(field1a);
  print(field1b);
  field1c = null;
  print(field1c);

  print(field2a);
  print(field2b);
  field2c = null;
  print(field2c);

  print(field3a);
  print(field3b);
  field3c = null;
  print(field3c);
  print(field3d);
  print(field3e);
  print(field3f);
  print(field3g);
  print(field3h);

  print(field4a);
  print(field4b);
  print(field4c);

  print(field5a);
  print(field5b);
  print(field5c);

  print(field6a);
  print(field6b);
  print(field6c);

  print(field7a);
  print(field7b);
  print(field7c);
  print(field7d);
  print(field7e);
  print(field7f);
  print(field7g);

  print(field8a);
  print(field8b);
  print(field8c);
  print(field8d);
  print(field8e);
  print(field8f);

  print(field9a);
  print(field9b);
  print(field9c);
  print(field9d);
  field9e = null;
  print(field9e);
  print(field9f);
  print(field9g);
  print(field9h);
  print(field9i);

  print(field10a);
  print(field10b);
}

method() {}

class Class {
  const Class.generative();

  const factory Class.fact() = Class.generative;
}

/*member: field1a:constant=IntConstant(0)*/
final field1a = 0;

/*member: field1b:constant=IntConstant(0)*/
var field1b = 0;

/*member: field1c:initial=IntConstant(0)*/
int? field1c = 0;

/*member: field2a:constant=ListConstant([])*/
final field2a = const [];

/*member: field2b:constant=ListConstant([])*/
var field2b = const [];

/*member: field2c:initial=ListConstant([])*/
List? field2c = const [];

/*member: field3a:eager,final*/
final field3a = [];

/*member: field3b:eager,final*/
var field3b = [];

/*member: field3c:eager*/
List? field3c = [];

/*member: field3d:eager,final*/
var field3d = [1, 2, 3];

/*member: field3e:eager,final*/
var field3e = [
  1,
  2,
  [
    3,
    4,
    [5, 6, method],
  ],
];

/*member: field3f:final,lazy*/
var field3f = [
  1,
  2,
  [
    3,
    4,
    [5, 6, method()],
  ],
];

/*member: field3g:final,lazy*/
var field3g = [method()];

/*member: field3h:final,eager*/
var field3h = [1 + 3];

/*member: field4a:constant=IntConstant(5)*/
final field4a = 2 + 3;

/*member: field4b:constant=IntConstant(5)*/
var field4b = 2 + 3;

const field4c = 2 + 3;

/*member: field5a:constant=FunctionConstant(method)*/
final field5a = method;

/*member: field5b:constant=FunctionConstant(method)*/
var field5b = method;

const field5c = method;

/*member: field6a:constant=ConstructedConstant(Class())*/
var field6a = const Class.generative();

/*member: field6b:constant=ConstructedConstant(Class())*/
var field6b = const Class.fact();

/*member: field6c:final,lazy*/
var field6c = method();

/*member: field7a:eager,final*/
var field7a = {};

/*member: field7b:eager,final*/
var field7b = {0: 1};

/*member: field7c:eager,final*/
var field7c = {0: method};

/*member: field7d:final,lazy*/
var field7d = {0: method()};

/*member: field7e:final,lazy*/
var field7e = {method(): 0};

/*member: field7f:eager,final*/
var field7f = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9};

/*member: field7g:final,lazy*/
var field7g = {
  0: 0,
  1: 1,
  2: 2,
  3: 3,
  4: 4,
  5: 5,
  6: 6,
  7: 7,
  8: 8,
  9: 9,
  10: 10,
};

/*member: field8a:eager,final*/
var field8a = {};

/*member: field8b:eager,final*/
var field8b = {0};

/*member: field8c:eager,final*/
var field8c = {method};

/*member: field8d:final,lazy*/
var field8d = {method()};

/*member: field8e:eager,final*/
var field8e = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

/*member: field8f:final,lazy*/
var field8f = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

/*member: field9g:eager=[field9d],final,index=1*/
var field9g = field9d;

/*member: field9a:eager,final*/
var field9a = [];

/*member: field9c:eager=[field9b],final,index=3*/
var field9c = [field9b];

/*member: field9b:eager=[field9a],final,index=2*/
var field9b = field9a;

// Because [field9g] is declared first and it depends upon [field9d], [field9d]
// must be created before [field9g] and thus has a lower index than, say,
// [field9b].
/*member: field9d:eager=[field9a],final,index=0*/
var field9d = [field9a];

/*member: field9e:eager*/
List? field9e = [];

/*member: field9f:final,lazy*/
var field9f = field9e;

/*member: field9h:constant=ListConstant([])*/
var field9h = const [];

/*member: field9i:eager,final*/
var field9i = [field9h];

/*member: field10a:final,lazy*/
int field10a = field10b;

/*member: field10b:final,lazy*/
int field10b = field10a;
