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

// Regression test for a bug that was caused by uninstantiated classes being
// added to emitted classes by runtime-type system.
// See my explanation in https://codereview.chromium.org/14018036/.
//   -- ahe

class A native "A" {
  // Just making sure the field name is unique.
  var rti_only_native_test_field;
}

typedef fisk();

main() {
  void foo(A x) {}
  var map = { 'a': 0, 'b': main };
  try {
    map.values.forEach((x) => x.rti_only_native_test_field);
  } finally {
    print(main is fisk);
    return;
  }
}
