# 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, change a file, but don't change the outline.
# Have a part in an imported file.

type: newworld
worlds:
  - entry: main.dart
    experiments: alternative-invalidation-strategy
    sources:
      main.dart: |
        import "lib.dart";

        main() {
          libMethod();
          libPartMethod();
        }
      lib.dart: |
        part "libpart.dart";

        libMethod() {
          print("libMethod");
        }
      libpart.dart: |
        part of "lib.dart";

        libPartMethod() {
          print("libPartMethod");
        }
    expectedLibraryCount: 2
  - entry: main.dart
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - lib.dart
    sources:
      lib.dart: |
        part "libpart.dart";

        libMethod() {
          print("libMethod!");
        }
    expectedLibraryCount: 2
    expectsRebuildBodiesOnly: true
