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

class Class1 {
  Class1? get property => null;

  void set property(Class1? value) {}

  Class1 get property1 => new Class1();

  Class2 get property2 => new Class2();
}

extension Extension1 on Class1 {
  Class1? get nullable1 => property1;

  void set nullable1(Class1? value) {
    property = value;
  }

  Class1 nonNullable1Method() => nonNullable1;

  Class1? operator [](Class1? key) => nullable1;

  void operator []=(Class1? key, Class1? value) {
    property = value;
  }

  Class1? operator +(int value) => nullable1;

  Class1? operator -() => nullable1;

  Class1 get nonNullable1 => property1;

  Class2 get nonNullable2 => property2;
}

class Class2 {
  Class2 get property => this;

  void set property(Class2 value) {}
}

extension Extension2 on Class2 {
  Class2 nonNullable2Method() => nonNullable2;

  Class2 operator [](Class2? key) => property;

  void operator []=(Class2? key, Class2? value) => property;

  Class2 operator +(int value) => property;

  Class2 operator -() => property;

  Class2 get nonNullable2 => property;

  void set nonNullable2(Class2 value) {
    property = value;
  }
}

class Class3 {
  Class2? get property => null;
}

extension Extension3 on Class3 {
  Class2? operator [](Class3? key) => property;
}

main() {
  propertyAccess(null);
  indexAccess(null, null, null);
  operatorAccess(null, null);
  ifNull(null);
}

void propertyAccess(Class1? n1) {
  Class1? nullable1 = n1;

  n1?.nullable1;
  n1?.nullable1 = new Class1();
  nullable1 = n1?.nullable1 = new Class1();
  n1?.nonNullable1Method();

  n1?.nonNullable1.nullable1;
  n1?.nullable1?.nullable1;
  n1?.nonNullable1.nullable1?.nullable1;
  n1?.nonNullable1.nullable1 = new Class1();
  n1?.nullable1?.nullable1 = new Class1();
  n1?.nonNullable1.nullable1?.nullable1 = new Class1();
  (n1?.nullable1)?.nullable1;
  throws(() => (n1?.nullable1 = new Class1()).nullable1);
  throws(() => (n1?.nonNullable1Method()).nullable1);
  nullable1 = n1?.nonNullable1.nullable1 = new Class1();
  nullable1 = n1?.nullable1?.nullable1 = new Class1();
  nullable1 = n1?.nonNullable1.nullable1?.nullable1 = new Class1();
  n1?.nullable1?.nonNullable1Method();
  n1?.nullable1 = new Class1().nullable1;
  nullable1 = n1?.nullable1 = new Class1().nullable1;
  n1?.nullable1 = new Class1().nullable1 = new Class1();
  nullable1 = n1?.nullable1 = new Class1().nullable1 = new Class1();
  n1?.nullable1 = new Class1().nonNullable1Method();
  nullable1 = n1?.nullable1 = new Class1().nonNullable1Method();
  n1?.nonNullable1Method().nullable1;
  n1?.nonNullable1Method().nullable1 = new Class1();
  n1?.nonNullable1Method().nonNullable1Method();

  n1?.nonNullable1.nonNullable1.nullable1;
  n1?.nonNullable1.nonNullable1.nullable1 = new Class1();
  nullable1 = n1?.nonNullable1.nonNullable1.nullable1 = new Class1();
  n1?.nonNullable1.nullable1?.nonNullable1Method();
  n1?.nullable1 = new Class1().nonNullable1.nullable1;
  nullable1 = n1?.nullable1 = new Class1().nonNullable1.nullable1;
  n1?.nullable1 = new Class1().nonNullable1.nullable1 = new Class1();
  nullable1 =
      n1?.nullable1 = new Class1().nonNullable1.nullable1 = new Class1();
  n1?.nullable1 = new Class1().nonNullable1.nonNullable1Method();
  nullable1 = n1?.nullable1 = new Class1().nonNullable1.nonNullable1Method();
  n1?.nonNullable1Method().nonNullable1.nullable1;
  n1?.nonNullable1Method().nonNullable1.nullable1 = new Class1();
  n1?.nonNullable1Method().nonNullable1.nonNullable1Method();

  n1?.nonNullable1.nullable1 = new Class1().nullable1;
  nullable1 = n1?.nonNullable1.nullable1 = new Class1().nullable1;
  n1?.nonNullable1.nullable1 = new Class1().nullable1 = new Class1();
  nullable1 =
      n1?.nonNullable1.nullable1 = new Class1().nullable1 = new Class1();
  n1?.nonNullable1.nullable1 = new Class1().nonNullable1Method();
  nullable1 = n1?.nonNullable1.nullable1 = new Class1().nonNullable1Method();
  n1?.nullable1 = new Class1().nullable1 = new Class1().nullable1;
  nullable1 = n1?.nullable1 = new Class1().nullable1 = new Class1().nullable1;
  n1?.nullable1 =
      new Class1().nullable1 = new Class1().nullable1 = new Class1();
  nullable1 = n1?.nullable1 =
      new Class1().nullable1 = new Class1().nullable1 = new Class1();
  n1?.nullable1 = new Class1().nullable1 = new Class1().nonNullable1Method();
  nullable1 = n1?.nullable1 =
      new Class1().nullable1 = new Class1().nonNullable1Method();
  n1?.nonNullable1Method().nullable1 = new Class1().nullable1;
  nullable1 = n1?.nonNullable1Method().nullable1 = new Class1().nullable1;
  n1?.nonNullable1Method().nullable1 = new Class1().nullable1 = new Class1();
  nullable1 = n1?.nonNullable1Method().nullable1 =
      new Class1().nullable1 = new Class1();
  n1?.nonNullable1Method().nullable1 = new Class1().nonNullable1Method();
  nullable1 =
      n1?.nonNullable1Method().nullable1 = new Class1().nonNullable1Method();

  n1?.nonNullable1.nonNullable1Method().nullable1;
  n1?.nonNullable1.nonNullable1Method().nullable1 = new Class1();
  nullable1 = n1?.nonNullable1.nonNullable1Method().nullable1 = new Class1();
  n1?.nonNullable1.nonNullable1Method().nonNullable1Method();
  n1?.nullable1 = new Class1().nonNullable1Method().nullable1;
  nullable1 = n1?.nullable1 = new Class1().nonNullable1Method().nullable1;
  n1?.nullable1 = new Class1().nonNullable1Method().nullable1 = new Class1();
  nullable1 = n1?.nullable1 =
      new Class1().nonNullable1Method().nullable1 = new Class1();
  n1?.nullable1 = new Class1().nonNullable1Method().nonNullable1Method();
  nullable1 =
      n1?.nullable1 = new Class1().nonNullable1Method().nonNullable1Method();
  n1?.nonNullable1Method().nonNullable1Method().nullable1;
  n1?.nonNullable1Method().nonNullable1Method().nullable1 = new Class1();
  n1?.nonNullable1Method().nonNullable1Method().nonNullable1Method();

  n1?.nonNullable1Method()?.nonNullable1Method();
}

void indexAccess(Class1? n1, Class2? n2, Class3? n3) {
  Class1? nullable1 = n1;
  Class2? nullable2 = n2;
  Class3? nullable3 = n3;

  n1?[nullable1];
  n1?[nullable1] = new Class1();
  n1?[nullable1]?.nonNullable1Method();
  n1?.nonNullable1[nullable1];
  n1?.nonNullable1[nullable1] = new Class1();
  nullable1 = n1?.nonNullable1[nullable1] = new Class1();
  n1?.nonNullable1[nullable1]?.nonNullable1Method();
  n1?.nonNullable2[nullable2] += 0;
  nullable2 = n1?.nonNullable2[nullable2] += 0;
  n1?[nullable1] ??= nullable1;
  nullable1 = n1?[nullable1] ??= nullable1;
  n2?[nullable2] += 0;
  nullable2 = n2?[nullable2] += 0;
  n2?[nullable2] += 0;
  nullable2 = n2?[nullable2] += 0;
  n2?[nullable2]++;
  nullable2 = n2?[nullable2]++;
  ++n2?[nullable2];
  nullable2 = ++n2?[nullable2];
  n1?.nonNullable2[nullable2]++;
  nullable2 = n1?.nonNullable2[nullable2]++;
  ++n1?.nonNullable2[nullable2];
  nullable2 = ++n1?.nonNullable2[nullable2];

  n1?.nonNullable2[nullable2][nullable2];
  n1?.nonNullable2[nullable2][nullable2] = new Class2();
  nullable2 = n1?.nonNullable2[nullable2][nullable2] = new Class2();
  n1?.nonNullable2[nullable2][nullable2]?.nonNullable2Method();
  n1?.nonNullable2[nullable2][nullable2] += 0;
  nullable2 = n1?.nonNullable2[nullable2][nullable2] += 0;
  n1?.nonNullable2[nullable2][nullable2]++;
  nullable2 = n1?.nonNullable2[nullable2][nullable2]++;
  ++n1?.nonNullable2[nullable2][nullable2];
  nullable2 = ++n1?.nonNullable2[nullable2][nullable2];

  n1?[nullable1]?[nullable1];
  n1?[nullable1]?[nullable1] = new Class1();
  nullable1 = n1?[nullable1]?[nullable1] = new Class1();
  n1?[nullable1]?[nullable1]?.nonNullable1Method();
  nullable1 = n1?[nullable1]?[nullable1]?.nonNullable1Method();
  n1?[nullable1]?[nullable1] ??= nullable1;
  nullable1 = n1?[nullable1]?[nullable1] ??= nullable1;
  n3?[nullable3]?[nullable2] += 0;
  nullable2 = n3?[nullable3]?[nullable2] += 0;
  n3?[nullable3]?[nullable2]++;
  nullable2 = n3?[nullable3]?[nullable2]++;
  ++n3?[nullable3]?[nullable2];
  nullable2 = ++n3?[nullable3]?[nullable2];
}

void operatorAccess(Class1? n1, Class2? n2) {
  Class2? nullable2 = n2;

  throws(() => n1?.nonNullable1 + 0);
  throws(() => -n1?.nonNullable1);
  n2?.nonNullable2 += 0;
  nullable2 = n2?.nonNullable2 += 0;
  n2?.nonNullable2.nonNullable2 += 0;
  nullable2 = n2?.nonNullable2.nonNullable2 += 0;
  n2?.nonNullable2++;
  nullable2 = n2?.nonNullable2++;
  ++n2?.nonNullable2;
  nullable2 = ++n2?.nonNullable2;
}

void ifNull(Class1? n1) {
  Class1? nullable1 = n1;

  n1?.nullable1 ??= n1;
  n1 = n1?.nullable1 ??= n1;
  n1?.nonNullable1.nullable1 ??= n1;
  n1 = n1?.nonNullable1.nullable1 ??= n1;
  n1?.nonNullable1[n1] ??= n1;
  n1 = n1?.nonNullable1[n1] ??= n1;
}

void throws(void Function() f) {
  try {
    f();
  } catch (_) {
    return;
  }
  throw 'Expected exception.';
}
