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

# Test that invalidating a part of a package works with package URI when the
# part file was referenced via a package URI

type: basic
entry: "package:example/main.dart"
invalidate:
  - pkg/example/b.dart
sources:
  pkg/example/main.dart: |
    part "package:example/b.dart";
    main() {
      print("hello");
      b();
    }
  pkg/example/b.dart: |
    part of "package:example/main.dart";
    b() {
      print("b1");
    }
  .packages: example:pkg/example
