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

type: newworld
omitPlatform: false
worlds:
  - entry: main.dart
    errors: false
    warnings: false
    sources:
      main.dart: |
        int value = switch (0) {
          0 => 1,
          _ => 2,
        };
        main() {}
    expectedLibraryCount: 1
    expectsPlatform: true

  - entry: main.dart
    errors: false
    warnings: false
    expectInitializeFromDill: false
    fromComponent: true
    invalidate:
      - main.dart
    sources:
      main.dart: |
        int value = switch (0) {
          0 => 1,
          _ => 2,
        };
        main() {
          print(value);
        }
    expectedLibraryCount: 1
    expectsPlatform: true
    advancedInvalidation: bodiesOnly

  - entry: main.dart
    errors: false
    warnings: false
    expectInitializeFromDill: false
    fromComponent: true
    invalidate:
      - main.dart
    sources:
      main.dart: |
        int value = switch (0) {
          0 => 1,
          _ => 2,
        };
        main() {}
    expectedLibraryCount: 1
    expectsPlatform: true
    advancedInvalidation: bodiesOnly