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

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);
}
