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

// @dart = 2.9

// Error in class finalization triggered via mirror in a static initializer.
// Simply check that we do not crash.
// This is a regression test for the VM.

library mirror_in_static_init_test;

import 'dart:mirrors';

// This class is only loaded during initialization of `staticField`.
abstract class C {
  int _a;
  // This is a syntax error on purpose.
  C([this._a: 0]); //# 01: compile-time error
}

final int staticField = () {
  var lib = currentMirrorSystem().findLibrary(#mirror_in_static_init_test);
  var c = lib.declarations[#C] as ClassMirror;
  var lst = new List.from(c.declarations.values);
  return 42;
}();

main() {
  return staticField;
}
