# 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.
# Use it as a mixin, though, so we cannot neccesarily rebuild the bodies only.

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

        class Foo {
          method() {
            print("A");
          }
        }
      libA.dart: |
        import 'main.dart';

        class Bar extends Object with Foo {
          method2() {
            method();
          }
        }
    expectedLibraryCount: 2
  - entry: main.dart
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import 'libA.dart';

        class Foo {
          method() {
            print("B");
          }
        }
    expectedLibraryCount: 2
    expectsRebuildBodiesOnly: false
