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

// SharedOptions=--enable-experiment=non-nullable
import 'package:expect/expect.dart';

int initCalls = 0;
int init() {
  ++initCalls;
  return 123;
}

late int varWithInit = init();
late int varWithInit2 = init();
late int? varWithInit3 = init();
late int varWithTrivialInit = 123;
late int? varWithNullInit = null;
late int varWithNoInit;
late final int finalVarWithInit = init();
late final int finalVarWithTrivialInit = 123;
late final int? finalVarWithNullInit = null;
late final int finalVarWithNoInit;

main() {
  Expect.equals(0, initCalls);
  Expect.equals(123, varWithInit);
  Expect.equals(123, varWithTrivialInit);
  Expect.equals(null, varWithNullInit);
  Expect.throws<Error>(() => varWithNoInit);
  Expect.equals(1, initCalls);
  Expect.equals(123, varWithInit);
  Expect.equals(123, varWithTrivialInit);
  Expect.equals(null, varWithNullInit);
  Expect.throws<Error>(() => varWithNoInit);
  Expect.equals(1, initCalls);
  varWithInit = 456;
  varWithTrivialInit = 456;
  varWithNullInit = 456;
  varWithNoInit = 456;
  Expect.equals(1, initCalls);
  Expect.equals(456, varWithInit);
  Expect.equals(456, varWithTrivialInit);
  Expect.equals(456, varWithNullInit);
  Expect.equals(456, varWithNoInit);
  Expect.equals(1, initCalls);
  initCalls = 0;

  Expect.equals(0, initCalls);
  varWithInit2 = 456;
  Expect.equals(0, initCalls);
  Expect.equals(456, varWithInit2);
  Expect.equals(0, initCalls);

  Expect.equals(0, initCalls);
  varWithInit3 = null;
  Expect.equals(0, initCalls);
  Expect.equals(null, varWithInit3);
  Expect.equals(0, initCalls);

  Expect.equals(0, initCalls);
  Expect.equals(123, finalVarWithInit);
  Expect.equals(123, finalVarWithTrivialInit);
  Expect.equals(null, finalVarWithNullInit);
  Expect.equals(1, initCalls);
  Expect.equals(123, finalVarWithInit);
  Expect.equals(123, finalVarWithTrivialInit);
  Expect.equals(null, finalVarWithNullInit);
  Expect.equals(1, initCalls);

  Expect.throws<Error>(() => finalVarWithNoInit);
  finalVarWithNoInit = 123;
  Expect.equals(123, finalVarWithNoInit);
  Expect.throws<Error>(() => {finalVarWithNoInit = 456});
  Expect.equals(123, finalVarWithNoInit);
}
