# 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.
# Mixin something from the same file.

type: newworld
forceLateLoweringForTesting: true
worlds:
  - entry: main.dart
    experiments: non-nullable,alternative-invalidation-strategy
    sources:
      lib1.dart: |
        void set property(int value) {}
      lib2.dart: |
        int get property => 87;
      lib3.dart: |
        export 'lib1.dart';
        export 'lib2.dart';
      main.dart: |
        import 'lib3.dart';
        main() {
          property = 42;
        }
    expectedLibraryCount: 4
  - entry: main.dart
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import 'lib3.dart';
        main() {
          property = 87;
        }
    expectedLibraryCount: 4
    expectsRebuildBodiesOnly: true
  - entry: main.dart
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - lib1.dart
    sources:
      lib1.dart: |
        void set property(int value) {
          print(123);
        }
    expectedLibraryCount: 4
    expectsRebuildBodiesOnly: true
  - entry: main.dart
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import 'lib3.dart';
        main() {
          property = property;
        }
    expectedLibraryCount: 4
    expectsRebuildBodiesOnly: true
