# 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.
# Have two class members procedures with the same name.
# Technically we won't link correctly (the second method will get the reference
# but it won't be included in the output), but any call to it will become an
# error so nothing uses the link.

type: newworld
worlds:
  - entry: main.dart
    errors: true
    experiments: alternative-invalidation-strategy
    sources:
      main.dart: |
        // @dart=2.9
        class Foo {
          void bar() {
            print("bar 1");
          }
          void bar() {
            print("bar 2");
          }
          void callBar() {
            bar();
          }
        }
    expectedLibraryCount: 1
  - entry: main.dart
    errors: true
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - main.dart
    sources:
      main.dart: |
        // @dart=2.9
        class Foo {
          void bar() {
            print("bar 1");
          }
          void bar() {
            print("bar 2");
          }
          void callBar() {
            bar();
          }
        }
    expectedLibraryCount: 1
    expectsRebuildBodiesOnly: false # For now, libraries with errors cannot have bodies rebuild.
