# 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.
# Force the creating of a no such method forwarding stub.

type: newworld
worlds:
  - entry: main.dart
    useExperimentalInvalidation: true
    sources:
      main.dart: |
        import "lib1.dart";
        class Foo1 extends Bar {
          noSuchMethod(Invocation msg) {
            print("noSouchMethod!");
          }
        }
        class Foo2 implements Bar {
          noSuchMethod(Invocation msg) {
            print("noSouchMethod!");
          }
        }
      lib1.dart: |
        abstract class Bar {
          void method();
          bool get getter;
          void set setter(bool b);
          bool field;
        }
    expectedLibraryCount: 2
  - entry: main.dart
    useExperimentalInvalidation: true
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import "lib1.dart";
        class Foo1 extends Bar {
          noSuchMethod(Invocation msg) {
            print("noSouchMethod!!");
          }
        }
        class Foo2 implements Bar {
          noSuchMethod(Invocation msg) {
            print("noSouchMethod!!");
          }
        }
    expectedLibraryCount: 2
    expectsRebuildBodiesOnly: true
