// 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() {
  var c = new Class1.a();
  c.field3a = null;
  c.field4a = null;
  c.field5a = null;
  new Class1.b();

  print(c.field1);
  print(c.field2);
  print(c.field3a);
  print(c.field3b);
  print(c.field4a);
  print(c.field4b);
  print(c.field5a);
  print(c.field5b);
}

class Class1 {
  var field1 = 0;
  var field2;

  /*element: Class1.field3a:allocator,initial=IntConstant(3)*/
  var field3a;

  /*element: Class1.field3b:constant=IntConstant(3)*/
  var field3b;

  /*element: Class1.field4a:allocator,initial=IntConstant(4)*/
  var field4a = 4;

  /*element: Class1.field4b:constant=IntConstant(4)*/
  var field4b = 4;

  /*element: Class1.field5a:allocator,initial=IntConstant(5)*/
  var field5a = 5;

  /*element: Class1.field5b:constant=IntConstant(5)*/
  var field5b = 5;

  Class1.a()
      : field1 = 1,
        field2 = 1,
        field3a = 3,
        field3b = 3,
        field5a = 5,
        field5b = 5;

  Class1.b()
      : field2 = 2,
        field3a = 3,
        field3b = 3,
        field5a = 5,
        field5b = 5;
}
