# 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 and a part.
# Update the world to remove usage of the part. The now no longer referenced
# part 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:
      - b.dart
    expectInitializeFromDill: false
    sources:
      b.dart: |
        b() {}
    expectedLibraryCount: 2
    uriToSourcesDoesntInclude:
      - c.dart
