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

/// @assertion The static type of a double valued integer literal is [double]
/// @description Checks that the static type of a double valued integer literal
/// is [double]. Test local variable assignment and hexadecimal literals
/// @author sgrekhov@unipro.ru


class C {

  static void staticMethod() {
    double? s1 = 0x42;
    double s2 = (1 > 0 ? 0x42 : 3.14);
    double s3 = (null ?? 0x42);
    const double s4 = -0x42;
    final double s5 = 0x23;

    s1 = -0x42;
    s1 = null;
    s1 ??= 0x42;
    s1 ??= -0x42;
//         ^^^^^
// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
//  ^
// [cfe] Operand of null-aware operation '??=' has type 'double' which excludes null.
  }

  void instanceMethod() {
    double? m1 = 0x42;
    double m2 = (1 > 0 ? 0x42 : 3.14);
    double m3 = (null ?? 0x42);
    const double m4 = -0x42;
    final double m5 = 0x23;

    m1 = -0x42;
    m1 = null;
    m1 ??= 0x42;
    m1 ??= -0x42;
//         ^^^^^
// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
//  ^
// [cfe] Operand of null-aware operation '??=' has type 'double' which excludes null.
  }
}

void foo() {
  double? l1 = 0x42;
  double l2 = (1 > 0 ? 0x42 : 3.14);
  double l3 = (null ?? 0x42);
  const double l4 = -0x42;
  final double l5 = 0x23;

  l1 = -0x42;
  l1 = null;
  l1 ??= 0x42;
  l1 ??= -0x42;
//       ^^^^^
// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
//^
// [cfe] Operand of null-aware operation '??=' has type 'double' which excludes null.

}

main() {
  double? d1 = 0x42;
  double d2 = (1 > 0 ? 0x42 : 3.14);
  double d3 = (null ?? 0x42);
  const double d4 = -0x42;
  final double d5 = 0x23;

  d1 = -0x42;
  d1 = null;
  d1 ??= 0x42;
  d1 ??= -0x42;
//       ^^^^^
// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
//^
// [cfe] Operand of null-aware operation '??=' has type 'double' which excludes null.

  foo();
  C.staticMethod();
  new C().instanceMethod();

  void bar() {
    double? b1 = 0x42;
    double b2 = (1 > 0 ? 0x42 : 3.14);
    double b3 = (null ?? 0x42);
    const double b4 = -0x42;
    final double b5 = 0x23;

    b1 = -0x42;
    b1 = null;
    b1 ??= 0x42;
    b1 ??= -0x42;
//         ^^^^^
// [analyzer] STATIC_WARNING.DEAD_NULL_AWARE_EXPRESSION
//  ^
// [cfe] Operand of null-aware operation '??=' has type 'double' which excludes null.
  }
  bar();
}
