# Copyright (c) 2018, 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, then, initializing from that dill, delete a file that
# we use, and retry a few times. The deleted file should remain deleted and
# we should keep getting an error.

type: newworld
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          print("Hello no. 0");
          b();
        }
      b.dart: |
        b() {
          print("b");
        }
    expectedLibraryCount: 2
  - entry: main.dart
    errors: true
    invalidate:
      - b.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          print("Hello no. 0");
          b();
        }
    expectedLibraryCount: 1
  - entry: main.dart
    errors: true
    checkInvalidatedFiles: false
    worldType: updated
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          print("Hello no. 1");
          b();
        }
    expectedLibraryCount: 1
  - entry: main.dart
    errors: true
    checkInvalidatedFiles: false
    worldType: updated
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          print("Hello no. 1");
          b();
        }
    expectedLibraryCount: 1
