# 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 modules that isn't used, but,
# which - if loaded - pulls in more of itself.

type: newworld
modules:
  module:
    module/a.dart: |
      // @dart=2.9
      import 'package:module/b.dart';
      class A { }
    module/b.dart: |
      // @dart=2.9
      export 'package:module/a.dart';
      class B { }
    module/c.dart: |
      // @dart=2.9
      export 'package:module/d.dart';
      class C { }
    module/d.dart: |
      // @dart=2.9
      import 'package:module/c.dart';
      class D { }
    module/.packages: |
      module:.
worlds:
  - entry: main.dart
    fromComponent: true
    sources:
      main.dart: |
        // @dart=2.9
        class Foo {}
      .packages: |
        module:module
    modules:
      - module
    expectedLibraryCount: 1
    # We don't import the module, and thus don't use it.
    neededDillLibraries: []
    expectedContent:
      org-dartlang-test:///main.dart:
        - Class Foo
