// Copyright (c) 2015, 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.

// Verify semantics of the ?. operator when it appears on the LHS of an
// assignment.

import "package:expect/expect.dart";
import "conditional_access_helper.dart" as h;

int bad() {
  Expect.fail('Should not be executed');
  return -1;
}

class B {}

class C extends B {
  int v;
  C(this.v);
  static late int staticInt;
}

class D {
  E v;
  D(this.v);
  static late E staticE;
}

class E {
  G operator +(int i) => new I();
}

class F {}

class G extends E implements F {}

class H {}

class I extends G implements H {}

C? nullC() => null;

main() {
  // Make sure the "none" test fails if assignment to "?." is not implemented.
  // This makes status files easier to maintain.
  nullC()?.v = 1;

  // e1?.v = e2 is equivalent to ((x) => x == null ? null : x.v = e2)(e1).
  Expect.equals(null, nullC()?.v = bad());
  {
    C c = new C(1);
    Expect.equals(2, c?.v = 2);
    //               ^
    // [cfe] Operand of null-aware operation '?.' has type 'C' which excludes null.
    //                ^^
    // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
    Expect.equals(2, c.v);
  }

  // C?.v = e2 is equivalent to C.v = e2.
  {
    C.staticInt = 1;
    Expect.equals(2, C?.staticInt = 2);
    //               ^
    // [cfe] The class 'C' cannot be null.
    Expect.equals(2, C.staticInt);
  }
  {
    h.C.staticInt = 1;
    Expect.equals(2, h.C?.staticInt = 2);
    //                 ^
    // [cfe] The class 'C' cannot be null.
    Expect.equals(2, h.C.staticInt);
  }

  // The static type of e1?.v = e2 is the static type of e2.
  {
    D? d = new D(new E()) as dynamic;
    G g = new G();
    F? f = (d?.v = g);
    Expect.identical(f, g);
  }
  {
    D? d = new D(new E()) as dynamic;
    E e = new G();
    F? f = (d?.v = e);
    //      ^^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
    // [cfe] A value of type 'E?' can't be assigned to a variable of type 'F?'.
  }
  {
    D.staticE = new E();
    G g = new G();
    F? f = (D?.staticE = g);
    //      ^
    // [cfe] The class 'D' cannot be null.
    Expect.identical(f, g);
  }
  {
    h.D.staticE = new h.E();
    h.G g = new h.G();
    h.F? f = (h.D?.staticE = g);
    //          ^
    // [cfe] The class 'D' cannot be null.
    Expect.identical(f, g);
  }
  {
    D.staticE = new E();
    E e = new G();
    F? f = (D?.staticE = e);
    //      ^^^^^^^^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
    // [cfe] The class 'D' cannot be null.
    //         ^
    // [cfe] A value of type 'E' can't be assigned to a variable of type 'F?'.
  }
  {
    h.D.staticE = new h.E();
    h.E e = new h.G();
    h.F f = (h.D?.staticE = e);
    //       ^^^^^^^^^^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
    //         ^
    // [cfe] The class 'D' cannot be null.
    //            ^
    // [cfe] A value of type 'E' can't be assigned to a variable of type 'F'.
  }

  // Exactly the same errors that would be caused by e1.v = e2 are
  // also generated in the case of e1?.v = e2.
  Expect.equals(null, nullC()?.bad = bad());
  //                           ^^^
  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
  // [cfe] The setter 'bad' isn't defined for the class 'C'.
  {
    B b = new C(1);
    Expect.equals(2, b?.v = 2);
    //               ^
    // [cfe] Operand of null-aware operation '?.' has type 'B' which excludes null.
    //                ^^
    // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
    //                  ^
    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
    // [cfe] The setter 'v' isn't defined for the class 'B'.
  }

  // e1?.v op= e2 is equivalent to ((x) => x?.v = x.v op e2)(e1).
  Expect.equals(null, nullC()?.v += bad());
  {
    C c = new C(1);
    Expect.equals(3, c?.v += 2);
    //               ^
    // [cfe] Operand of null-aware operation '?.' has type 'C' which excludes null.
    //                ^^
    // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
    Expect.equals(3, c.v);
  }

  // C?.v op= e2 is equivalent to C.v op= e2.
  {
    C.staticInt = 1;
    Expect.equals(3, C?.staticInt += 2);
    //               ^
    // [cfe] The class 'C' cannot be null.
    Expect.equals(3, C?.staticInt);
    //               ^
    // [cfe] The class 'C' cannot be null.
  }

  // The static type of e1?.v op= e2 is the static type of e1.v op e2.
  {
    D d = new D(new E());
    F? f = (d?.v += 1);
    //      ^
    // [cfe] Operand of null-aware operation '?.' has type 'D' which excludes null.
    //       ^^
    // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
    Expect.identical(d.v, f);
  }
  {
    D.staticE = new E();
    F? f = (D?.staticE += 1);
    //      ^
    // [cfe] The class 'D' cannot be null.
    Expect.identical(D.staticE, f);
  }
  {
    h.D.staticE = new h.E();
    h.F? f = (h.D?.staticE += 1);
    //          ^
    // [cfe] The class 'D' cannot be null.
    Expect.identical(h.D.staticE, f);
  }

  // Let T be the static type of e1 and let y be a fresh variable of type T.
  // Exactly the same errors that would be caused by y.v op e2 are
  // also generated in the case of e1?.v op= e2.
  nullC()?.bad = bad();
  //       ^^^
  // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
  // [cfe] The setter 'bad' isn't defined for the class 'C'.
  {
    B bname = new C(1);
    bname?.v += 2;
//  ^
// [cfe] Operand of null-aware operation '?.' has type 'B' which excludes null.
    //   ^^
    // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
    //     ^
    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_GETTER
    // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SETTER
    // [cfe] The getter 'v' isn't defined for the class 'B'.
    // [cfe] The setter 'v' isn't defined for the class 'B'.
  }
  {
    D d = new D(new E());
    F? f = (d?.v += nullC());
    //      ^
    // [cfe] Operand of null-aware operation '?.' has type 'D' which excludes null.
    //       ^^
    // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
    //              ^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
    // [cfe] A value of type 'C?' can't be assigned to a variable of type 'int'.
  }
  {
    D d = new D(new E());
    H? h = (d?.v += 1);
    //      ^^^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
    // [cfe] A value of type 'G?' can't be assigned to a variable of type 'H?'.
    // [cfe] Operand of null-aware operation '?.' has type 'D' which excludes null.
    //       ^^
    // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
  }
  {
    D.staticE = new E();
    F? f = (D?.staticE += nullC());
    //      ^
    // [cfe] The class 'D' cannot be null.
    //                    ^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
    // [cfe] A value of type 'C?' can't be assigned to a variable of type 'int'.
  }
  {
    h.D.staticE = new h.E();
    h.F? f = (h.D?.staticE += h.nullC());
    //          ^
    // [cfe] The class 'D' cannot be null.
    //                        ^^^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
    // [cfe] A value of type 'C?' can't be assigned to a variable of type 'int'.
  }
  {
    D.staticE = new E();
    H? h = (D?.staticE += 1);
    //      ^^^^^^^^^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
    // [cfe] The class 'D' cannot be null.
    //         ^
    // [cfe] A value of type 'G' can't be assigned to a variable of type 'H?'.
  }
  {
    h.D.staticE = new h.E();
    h.H? hh = (h.D?.staticE += 1);
    //         ^^^^^^^^^^^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
    //           ^
    // [cfe] The class 'D' cannot be null.
    //              ^
    // [cfe] A value of type 'G' can't be assigned to a variable of type 'H?'.
  }

  // '?.' cannot be used to assign to toplevel properties in libraries imported
  // via prefix.
  h?.topLevelVar = null;
//^
// [analyzer] COMPILE_TIME_ERROR.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
// [cfe] A prefix can't be used with null-aware operators.
//               ^
// [cfe] Can't assign to this.
  h?.topLevelVar += null;
//^
// [analyzer] COMPILE_TIME_ERROR.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
// [cfe] A prefix can't be used with null-aware operators.
//               ^
// [cfe] Can't assign to this.
  h?.topLevelVar ??= null;
//^
// [analyzer] COMPILE_TIME_ERROR.PREFIX_IDENTIFIER_NOT_FOLLOWED_BY_DOT
// [cfe] A prefix can't be used with null-aware operators.
//               ^
// [cfe] Can't assign to this.
}
