# 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 both a setter and a getter with the same name.

type: newworld
worlds:
  - entry: main.dart
    experiments: alternative-invalidation-strategy
    sources:
      main.dart: |
        class Foo {
          String get x { return "x #1"; }
          void set x(String x) {}
        }

        main() {
          Foo foo = new Foo();
          print(foo.x);
          foo.x = "hello";
        }
    expectedLibraryCount: 1
  - entry: main.dart
    experiments: alternative-invalidation-strategy
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - main.dart
    sources:
      main.dart: |
        class Foo {
          String get x { return "x #2"; }
          void set x(String x) {}
        }

        main() {
          Foo foo = new Foo();
          print(foo.x);
          foo.x = "hello";
        }
    expectedLibraryCount: 1
    expectsRebuildBodiesOnly: true
