# Copyright (c) 2019, 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.md file.

# Compile an application with a number of modules.
# Try out "trickery" in the module dependencies to force needing more or less
# dill libraries.

type: newworld
strong: true
modules:
  moduleB:
    moduleB/b.dart: |
      import 'package:moduleC/c.dart';

      var bVar = 42;
      var bVarFromC = baz2;
      var mya2 = new A2();

      class A2 extends A3 {
        int bar = 42;
      }
    moduleB/.packages: |
      moduleB:.
      moduleC:../moduleC
      moduleD:../moduleD
  moduleC:
    moduleC/c.dart: |
      import 'package:moduleD/d.dart';

      String baz = "42";
      String baz2 = baz3;

      class A3 {
        int foo = 42;
      }
    moduleC/.packages: |
      moduleC:.
      moduleD:../moduleD
  moduleD:
    moduleD/d.dart: |
      String baz3 = "baz3";
    moduleD/.packages: |
      moduleD:.
worlds:
  - entry: a.dart
    fromComponent: true
    sources:
      a.dart: |
        import "package:moduleB/b.dart";

        var foo = bVar;
        var foo2 = bVarFromC;

        class A1 extends A2 {
          String fooMethod() => "42!";
        }
      .packages: |
        moduleB:moduleB
        moduleC:moduleC
        moduleD:moduleD
    modules:
      - moduleB
      - moduleC
      - moduleD
    expectedLibraryCount: 4
    neededDillLibraries:
      # A class in 'a.dart' has a super in 'c.dart'.
      - package:moduleB/b.dart
      - package:moduleC/c.dart
    expectedContent:
      org-dartlang-test:///a.dart:
        - Field foo
        - Field foo2
        - Class A1
      package:moduleB/b.dart:
        - Class A2
        - Field bVar
        - Field bVarFromC
        - Field mya2
      package:moduleC/c.dart:
        - Class A3
        - Field baz
        - Field baz2
      package:moduleD/d.dart:
        - Field baz3