# Copyright (c) 2018, 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 package, then initializing from that dill,
# compile a version that doesn't use the package, finally update it so it does
# use the package (and use the class in the package as a type).
# If the initially unused package is reused it should not cause
# any problems at any point, including being handled properly by the class
# hierarchy.

type: newworld
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        import "package:mypackage/foo.dart";
        main() {
          Foo foo = new Foo();
          foo.foo();
        }
      mypackage/foo.dart: |
        class Foo {
          foo() {
            print("Foo!");
          }
        }
      .packages: mypackage:mypackage
    expectedLibraryCount: 2
  - entry: main.dart
    invalidate:
      - main.dart
    sources:
      main.dart: |
        main() {
          print("hello from main");
        }
      mypackage/foo.dart: |
        class Foo {
          foo() {
            print("Foo!");
          }
        }
      .packages: mypackage:mypackage
    expectedLibraryCount: 1
    expectInitializeFromDill: true
  - entry: main.dart
    worldType: updated
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import "package:mypackage/foo.dart";
        main() {
          Foo foo = new Foo();
          foo.foo();
        }
    expectedLibraryCount: 2
