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

library library10.dart;

import "library11.dart" as lib11;
import "package:expect/expect.dart";

class Library10 {
  Library10(this.fld);
  func() {
    return 2;
  }

  var fld;
  static static_func() {
    var result = 0;
    var obj = new lib11.Library11(4);
    result = obj.fld;
    Expect.equals(4, result);
    result += obj.func();
    Expect.equals(7, result);
    result += lib11.Library11.static_func();
    Expect.equals(9, result);
    result += lib11.Library11.static_fld;
    Expect.equals(10, result);
    Expect.equals(100, lib11.top_level11);
    Expect.equals(200, lib11.top_level_func11());
    return 3;
  }

  static var static_fld = 4;
}

const int top_level10 = 10;
top_level_func10() {
  return 20;
}
