# Copyright (c) 2021, 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 file.

# Reproduce a crash.

type: newworld
trackWidgetCreation: true
target: vm
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        class Foo {
          Foo();
          factory Foo.bar() = Baz;
          void bar() {}
        }
        class Baz extends Foo {}
    expectedLibraryCount: 1

  - entry: main.dart
    worldType: updated
    expectInitializeFromDill: false
    invalidate:
      - main.dart
    expectedLibraryCount: 1
    advancedInvalidation: bodiesOnly

