# Copyright (c) 2021, 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.

type: newworld
worlds:
  - entry: first.dart
    experiments: alternative-invalidation-strategy
    sources:
      first.dart: |
        import 'second.dart';

        main() {
          method1();
          method2();
        }
        method1() {}
      second.dart: |
        method2() {}
    expectedLibraryCount: 2
  - entry: first.dart
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
        [second.dart, first.dart]
    sources:
      first.dart: |
        import 'second.dart';

        main() {
          method1();
          method2();
        }
        method1() {
          print('method1');
        }
      second.dart: |
        method2() {
          print('method2');
        }
    expectedLibraryCount: 2
    expectsRebuildBodiesOnly: true
