library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

import "package:expect/expect.dart";

static const field core::int var1 = #C1;
static const field core::String var2 = #C2;
static const field core::int var3 = #C3;
static const field core::int var4 = #C4;
static const field core::int var5 = #C5;
static method function1(core::int a, core::int b) → core::int {
  core::int x = 1.{core::num::+}(a).{core::num::+}(b);
  return x;
}
static method function2() → core::String {
  dynamic x = "string";
  return x as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
}
static method function3() → core::int {
  core::int first = 2;
  core::int second = 2.{core::num::+}(first);
  return 2.{core::num::+}(second);
}
static method function4() → core::int {
  core::int first = 2;
  core::int second = 0;
  return first.{core::num::+}(second);
}
static method function5() → core::int {
  return #C5;
}
static method main() → void {
  exp::Expect::equals(#C1, 4);
  exp::Expect::equals(#C2, "string");
  exp::Expect::equals(#C3, 6);
  exp::Expect::equals(#C4, 2);
  exp::Expect::equals(#C5, 2.{core::int::unary-}());
}

constants  {
  #C1 = 4
  #C2 = "string"
  #C3 = 6
  #C4 = 2
  #C5 = -2
}
