# 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 no packages and two libraries. Update the world
# to now only include one library. The now no longer referenced library should
# also have been removed from the uri to sources.

type: newworld
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        import "b.dart";
        main() { b(); }
      b.dart: |
        b() {}
    expectedLibraryCount: 2
  - entry: main.dart
    worldType: updated
    invalidate:
      - main.dart
    expectInitializeFromDill: false
    sources:
      main.dart: |
        main() {}
    expectedLibraryCount: 1
    uriToSourcesDoesntInclude:
      - b.dart
  - entry: main.dart
    worldType: updated
    invalidate:
      - main.dart
    expectInitializeFromDill: false
    sources:
      main.dart: |
        main() {}
    expectedLibraryCount: 1
    uriToSourcesDoesntInclude:
      - b.dart
