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 void var1 = #C1;
static const field void var2 = #C1;
static const field core::int? var3 = #C1;
static const field core::int? var4 = #C1;
static const field core::int var5 = #C2;
static method fn() → void {}
static method fn2() → void {
  return;
}
static method fn3() → core::int?
  return null;
static method fn4() → core::int? {
  return null;
}
static method fn5() → core::int {
  try {
    return throw 1;
  }
  on core::int catch(no-exception-var) {
    return 2;
  }
}
static method main() → void {
  exp::Expect::equals((#C1) as{ForNonNullableByDefault} dynamic, null);
  exp::Expect::equals((#C1) as{ForNonNullableByDefault} dynamic, null);
  exp::Expect::equals(#C1, null);
  exp::Expect::equals(#C1, null);
  exp::Expect::equals(#C2, 2);
}

constants  {
  #C1 = null
  #C2 = 2
}

Extra constant evaluation status:
Evaluated: AsExpression @ org-dartlang-testcase:///const_functions_return.dart:35:23 -> NullConstant(null)
Evaluated: AsExpression @ org-dartlang-testcase:///const_functions_return.dart:36:23 -> NullConstant(null)
Extra constant evaluation: evaluated: 8, effectively constant: 2
