// 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. class C { int? m1; int m2 = 0; C get property => this; test() { this?.m1; this?.m1 = 42; this?.method(); this?.property.m1; this?.property.method(); this?[0]; this?[0] = 0; this?[0] ??= 0; this?.property[0]; this?.property[0] = 0; this?.property[0] ??= 0; this?.m1 ??= 42; this?.m2 += 2; this?.m2++; --this?.m2; this ?? new C(); } int? operator [](int index) => 0; void operator []=(int index, int value) {} method() {} } class D { D get property => this; test() { this?[0]; this?[0] = 0; this?[0] += 0; this?.property[0]; this?.property[0] = 0; this?.property[0] += 0; } int operator [](int index) => 0; void operator []=(int index, int value) {} } main() { new C().test(); new D().test(); }