# 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: |
        part 'c.dart';
        b() {
          c();
        }
      c.dart: |
        part of 'b.dart';
        c() {}
    expectedLibraryCount: 2
  - entry: main.dart
    worldType: updated
    invalidate:
      - main.dart
    expectInitializeFromDill: false
    sources:
      main.dart: |
        main() {}
    expectedLibraryCount: 1
    uriToSourcesDoesntInclude:
      - b.dart
      - c.dart
    advancedInvalidation: outlineChange
  - entry: main.dart
    worldType: updated
    invalidate:
      - main.dart
    expectInitializeFromDill: false
    sources:
      main.dart: |
        main() {}
    expectedLibraryCount: 1
    uriToSourcesDoesntInclude:
      - b.dart
      - c.dart
    advancedInvalidation: bodiesOnly
