library /*isNonNullableByDefault*/;
import self as self;
import "dart:_late_helper" as _la;
import "dart:core" as core;

static method main() → void {
  self::testNullableUninitializedNonFinalLocal();
  self::testNonNullableUninitializedNonFinalLocal();
  self::testNullableUninitializedFinalLocal();
  self::testNonNullableUninitializedFinalLocal();
  self::testNullableInitializedNonFinalLocal();
  self::testNonNullableInitializedNonFinalLocal();
  self::testNullableInitializedFinalLocal();
  self::testNonNullableInitializedFinalLocal();
}
static method testNullableUninitializedNonFinalLocal() → void {
  final _la::_Cell x = new _la::_Cell::•();
  x.{_la::_Cell::value} = 42;
  core::print(x.{_la::_Cell::readLocal}<core::int>(){() → core::int});
}
static method testNonNullableUninitializedNonFinalLocal() → void {
  final _la::_Cell x = new _la::_Cell::•();
  x.{_la::_Cell::value} = 42;
  core::print(x.{_la::_Cell::readLocal}<core::int>(){() → core::int});
}
static method testNullableUninitializedFinalLocal() → void {
  final _la::_Cell x = new _la::_Cell::•();
  x.{_la::_Cell::finalLocalValue} = 42;
  core::print(x.{_la::_Cell::readLocal}<core::int>(){() → core::int});
}
static method testNonNullableUninitializedFinalLocal() → void {
  final _la::_Cell x = new _la::_Cell::•();
  x.{_la::_Cell::finalLocalValue} = 42;
  core::print(x.{_la::_Cell::readLocal}<core::int>(){() → core::int});
}
static method testNullableInitializedNonFinalLocal() → void {
  final _la::_InitializedCell x = new _la::_InitializedCell::•(() → core::int? => 1.{core::int::unary-}(){() → core::int});
  core::print(x.{_la::_InitializedCell::read}<core::int>(){() → core::int});
  x.{_la::_InitializedCell::value} = 42;
  core::print(x.{_la::_InitializedCell::read}<core::int>(){() → core::int});
  final _la::_InitializedCell y = new _la::_InitializedCell::•(() → core::int? => null);
  core::print(y.{_la::_InitializedCell::read}<core::int?>(){() → core::int?});
  y.{_la::_InitializedCell::value} = 42;
  core::print(y.{_la::_InitializedCell::read}<core::int>(){() → core::int});
}
static method testNonNullableInitializedNonFinalLocal() → void {
  final _la::_InitializedCell x = new _la::_InitializedCell::•(() → core::int => 1.{core::int::unary-}(){() → core::int});
  core::print(x.{_la::_InitializedCell::read}<core::int>(){() → core::int});
  x.{_la::_InitializedCell::value} = 42;
  core::print(x.{_la::_InitializedCell::read}<core::int>(){() → core::int});
}
static method testNullableInitializedFinalLocal() → void {
  final _la::_InitializedCell x = new _la::_InitializedCell::•(() → core::int? => 1.{core::int::unary-}(){() → core::int});
  core::print(x.{_la::_InitializedCell::readFinal}<core::int?>(){() → core::int?});
  final _la::_InitializedCell y = new _la::_InitializedCell::•(() → core::int? => null);
  core::print(y.{_la::_InitializedCell::readFinal}<core::int?>(){() → core::int?});
}
static method testNonNullableInitializedFinalLocal() → void {
  final _la::_InitializedCell x = new _la::_InitializedCell::•(() → core::int => 1.{core::int::unary-}(){() → core::int});
  core::print(x.{_la::_InitializedCell::readFinal}<core::int>(){() → core::int});
}


Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///late_locals.dart:41:17 -> DoubleConstant(-1.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///late_locals.dart:53:16 -> DoubleConstant(-1.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///late_locals.dart:60:23 -> DoubleConstant(-1.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///late_locals.dart:68:22 -> DoubleConstant(-1.0)
Extra constant evaluation: evaluated: 81, effectively constant: 4
