# 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.
# Be in a package.

type: newworld
worlds:
  - entry: main.dart
    warnings: true # Warning: Interpreting this as package URI
    useExperimentalInvalidation: true
    sources:
      main.dart: |
        import "lib.dart";
        main() {
          libMethod();
        }
      lib.dart: |
        libMethod() {
          print("Hello from lib!");
        }
      .packages: |
        foo:.
    expectedLibraryCount: 2
  - entry: main.dart
    warnings: true # Warning: Interpreting this as package URI
    useExperimentalInvalidation: true
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import "lib.dart";
        main() {
          libMethod();
          print("Done!");
        }
    expectedLibraryCount: 2
    expectsRebuildBodiesOnly: true
  - entry: main.dart
    warnings: true # Warning: Interpreting this as package URI
    useExperimentalInvalidation: true
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - lib.dart
    sources:
      lib.dart: |
        libMethod() {
          print("Hello from lib!!");
        }
    expectedLibraryCount: 2
    expectsRebuildBodiesOnly: true
