# 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
strong: false
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
    warnings: false
    invalidate:
      - b.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          print("Hello no. 0");
          b();
        }
    expectedLibraryCount: 1
  - entry: main.dart
    errors: true
    warnings: false
    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
    warnings: false
    checkInvalidatedFiles: false
    worldType: updated
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          print("Hello no. 1");
          b();
        }
    expectedLibraryCount: 1