|  | // Copyright (c) 2017, 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. | 
|  |  | 
|  | /*member: main:[null]*/ | 
|  | main() { | 
|  | generativeConstructorCall(); | 
|  | factoryConstructorCall2(); | 
|  | factoryConstructorCall3(); | 
|  | classWithFinalFieldInitializer(); | 
|  | classWithNonFinalFieldInitializer(); | 
|  | classWithExplicitFieldInitializer(); | 
|  | classWithFieldInitializerInBody(); | 
|  | classWithNullNoFieldInitializerInBody(); | 
|  | classWithNullFieldInitializerInBody(); | 
|  | classWithNullMaybeFieldInitializerInBody(); | 
|  | classWithNullFinalFieldInitializer(); | 
|  | } | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Call default constructor of a field-less class. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | /*member: Class1.:[exact=Class1]*/ | 
|  | class Class1 {} | 
|  |  | 
|  | /*member: generativeConstructorCall:[exact=Class1]*/ | 
|  | generativeConstructorCall() => Class1(); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Call factory constructor that returns an instance of the same class. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class3 { | 
|  | /*member: Class3.:[exact=Class3]*/ | 
|  | factory Class3() => Class3.named(); | 
|  | /*member: Class3.named:[exact=Class3]*/ | 
|  | Class3.named(); | 
|  | } | 
|  |  | 
|  | /*member: factoryConstructorCall2:[exact=Class3]*/ | 
|  | factoryConstructorCall2() => Class3(); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Call factory constructor that returns an instance of another class. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class4a { | 
|  | /*member: Class4a.:[exact=Class4b]*/ | 
|  | factory Class4a() => Class4b(); | 
|  | } | 
|  |  | 
|  | /*member: Class4b.:[exact=Class4b]*/ | 
|  | class Class4b implements Class4a {} | 
|  |  | 
|  | /*member: factoryConstructorCall3:[exact=Class4b]*/ | 
|  | factoryConstructorCall3() => Class4a(); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Call constructor with final field initialization. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class5 { | 
|  | final /*member: Class5.field:[exact=JSUInt31]*/ field; | 
|  |  | 
|  | /*member: Class5.:[exact=Class5]*/ | 
|  | Class5(this. /*[exact=JSUInt31]*/ field); | 
|  | } | 
|  |  | 
|  | /*member: classWithFinalFieldInitializer:[exact=Class5]*/ | 
|  | classWithFinalFieldInitializer() => Class5(0); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Call constructor with non-final field initialization. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class6 { | 
|  | var /*member: Class6.field:[exact=JSUInt31]*/ field; | 
|  |  | 
|  | /*member: Class6.:[exact=Class6]*/ | 
|  | Class6(this. /*[exact=JSUInt31]*/ field); | 
|  | } | 
|  |  | 
|  | /*member: classWithNonFinalFieldInitializer:[exact=Class6]*/ | 
|  | classWithNonFinalFieldInitializer() => Class6(0); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Call constructor with explicit field initialization. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class7 { | 
|  | var /*member: Class7.field:[exact=JSUInt31]*/ field; | 
|  |  | 
|  | /*member: Class7.:[exact=Class7]*/ | 
|  | Class7(/*[exact=JSUInt31]*/ value) : this.field = value; | 
|  | } | 
|  |  | 
|  | /*member: classWithExplicitFieldInitializer:[exact=Class7]*/ | 
|  | classWithExplicitFieldInitializer() => Class7(0); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Call constructor with field initialization in the constructor body. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class8 { | 
|  | var /*member: Class8.field:[exact=JSUInt31]*/ field; | 
|  |  | 
|  | /*member: Class8.:[exact=Class8]*/ | 
|  | Class8(/*[exact=JSUInt31]*/ value) { | 
|  | this. /*update: [exact=Class8]*/ field = value; | 
|  | } | 
|  | } | 
|  |  | 
|  | /*member: classWithFieldInitializerInBody:[exact=Class8]*/ | 
|  | classWithFieldInitializerInBody() => Class8(0); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Instance field with `null` initializer and no assignment in the constructor | 
|  | /// body. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class9 { | 
|  | var /*member: Class9.field:[null]*/ field = null; | 
|  |  | 
|  | /*member: Class9.:[exact=Class9]*/ | 
|  | Class9() {} | 
|  | } | 
|  |  | 
|  | /*member: classWithNullNoFieldInitializerInBody:[exact=Class9]*/ | 
|  | classWithNullNoFieldInitializerInBody() => Class9(); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Instance field with `null` initializer and an assignment in the constructor | 
|  | /// body. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class10 { | 
|  | var /*member: Class10.field:[exact=JSUInt31]*/ field = null; | 
|  |  | 
|  | /*member: Class10.:[exact=Class10]*/ | 
|  | Class10(/*[exact=JSUInt31]*/ value) { | 
|  | this. /*update: [exact=Class10]*/ field = value; | 
|  | } | 
|  | } | 
|  |  | 
|  | /*member: classWithNullFieldInitializerInBody:[exact=Class10]*/ | 
|  | classWithNullFieldInitializerInBody() => Class10(0); | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Instance field with `null` initializer and an assignment in one of the | 
|  | /// constructor bodies. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class11 { | 
|  | var /*member: Class11.field:[null|exact=JSUInt31]*/ field = null; | 
|  |  | 
|  | /*member: Class11.a:[exact=Class11]*/ | 
|  | Class11.a(/*[exact=JSUInt31]*/ value) { | 
|  | this. /*update: [exact=Class11]*/ field = value; | 
|  | } | 
|  |  | 
|  | /*member: Class11.b:[exact=Class11]*/ | 
|  | Class11.b() {} | 
|  | } | 
|  |  | 
|  | /*member: classWithNullMaybeFieldInitializerInBody:[exact=Class11]*/ | 
|  | classWithNullMaybeFieldInitializerInBody() { | 
|  | Class11.a(0); | 
|  | return Class11.b(); | 
|  | } | 
|  |  | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  | /// Final instance field with `null` initializer. | 
|  | //////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class Class12 { | 
|  | final /*member: Class12.field:[null]*/ field = null; | 
|  |  | 
|  | /*member: Class12.:[exact=Class12]*/ | 
|  | Class12(); | 
|  | } | 
|  |  | 
|  | /*member: classWithNullFinalFieldInitializer:[exact=Class12]*/ | 
|  | classWithNullFinalFieldInitializer() { | 
|  | return Class12(); | 
|  | } |