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

// @dart = 2.9

/// @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 return value
/// @author sgrekhov@unipro.ru


class C {
  double get instanceGetter => 42;
  double get instanceGetter2 => (1 > 0 ? 42 : 3.14);
  double get instanceGetter3 => null ?? 42;
  static double get staticGetter => -42;
  static double get staticGetter2 => (1 > 0 ? 42 : 3.14);
  static double get staticGetter3 => null ?? -42;

  double instanceMethod() => 42;
  double instanceMethod2() => (1 > 0 ? 42 : 3.14);
  double instanceMethod3() => null ?? 42;
  static double staticMethod() => -42;
  static double staticMethod2() => (1 > 0 ? 42 : 3.14);
  static double staticMethod3() => null ?? -42;
}

double foo() => 42;
double foo2() => (1 > 0 ? 42 : 3.14);
double foo3() => (null ?? 42);

main() {
  double bar() => 42;
  double bar2() => (1 > 0 ? 42 : 3.14);
  double bar3() => (null ?? 42);

  foo();
  foo2();
  foo3();
  bar();
  bar2();
  bar3();
  C.staticGetter;
  C.staticGetter2;
  C.staticGetter3;
  C.staticMethod();
  C.staticMethod2();
  C.staticMethod3();

  C c = C();
  c.instanceGetter;
  c.instanceGetter2;
  c.instanceGetter3;
  c.instanceMethod();
  c.instanceMethod2();
  c.instanceMethod3();
}
