// 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. // @dart = 2.7 /*member: main:[null]*/ main() { generativeConstructorCall(); factoryConstructorCall1(); 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() => new Class1(); //////////////////////////////////////////////////////////////////////////////// /// Call factory constructor that returns `null`. //////////////////////////////////////////////////////////////////////////////// class Class2 { /*member: Class2.:[null]*/ factory Class2() => null; } /*member: factoryConstructorCall1:[null]*/ factoryConstructorCall1() => new Class2(); //////////////////////////////////////////////////////////////////////////////// /// Call factory constructor that returns an instance of the same class. //////////////////////////////////////////////////////////////////////////////// class Class3 { /*member: Class3.:[exact=Class3]*/ factory Class3() => new Class3.named(); /*member: Class3.named:[exact=Class3]*/ Class3.named(); } /*member: factoryConstructorCall2:[exact=Class3]*/ factoryConstructorCall2() => new Class3(); //////////////////////////////////////////////////////////////////////////////// /// Call factory constructor that returns an instance of another class. //////////////////////////////////////////////////////////////////////////////// class Class4a { /*member: Class4a.:[exact=Class4b]*/ factory Class4a() => new Class4b(); } /*member: Class4b.:[exact=Class4b]*/ class Class4b implements Class4a {} /*member: factoryConstructorCall3:[exact=Class4b]*/ factoryConstructorCall3() => new 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() => new 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() => new 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() => new 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() => new 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() => new 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() => new 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() { new Class11.a(0); return new 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 new Class12(); }