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

// https://github.com/flutter/flutter/issues/25041

// This test may produce a compile time exception from stack overflow during
// enum initialization or succeed in enum initialization depending on exactly
// how much stack is left and used by the compiler. It should never crash nor
// produce a runtime exception.

enum Fruit { apple, banana }

getFruit() => Fruit.apple;

recurse() {
  try {
    recurse();
  } catch (e, st) {
    print("$e ${getFruit()}");
  }
}

main() {
  try {
    recurse();
  } on StackOverflowError catch (e) {
    // Swallow.
  }
}
