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

# Recompiling with no change shouldn't change anything..

type: newworld
forceLateLoweringForTesting: true
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        part "part.dart";
        main() {
        }
      part.dart: |
        part of 'main.dart';
        class _Class {
          late int _privateField = 1;
        }
    expectedLibraryCount: 1

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