# Copyright (c) 2018, 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 newly compiled procedure doesn't
# exist in the old library.

type: newworld
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        import "b.dart";
        main() {
          b(42);
        }
      b.dart: |
        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: |
        // lots of comments
        // forcing offsets down
        // and also adding more lines
        // and whatnot
        b({int? named}) {
          print("b");
        }
    expectedLibraryCount: 2
    errors: true
    advancedInvalidation: bodiesOnly
