# 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.

# Load from a dill file, update a file in the dill that is the context of an
# error in such a way that the position in the old library doesn't exist in
# newly compiled procedure.
#
# This is the reversed case of regress_35215.yaml

type: newworld
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          b(42);
        }
      b.dart: |
        // lots of comments
        // forcing offsets down
        // adding more lines
        // to be removed in the next world
        b({int? named}) {
          print("b");
        }
    expectedLibraryCount: 2
    errors: true

  - entry: main.dart
    invalidate:
      - b.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          b(42);
        }
      b.dart: |
        b({int? named}) {
          print("b");
        }
    expectedLibraryCount: 2
    errors: true
    advancedInvalidation: bodiesOnly
