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

library library10.dart;

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

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

  var fld;
  static int 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;
int top_level_func10() {
  return 20;
}
