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

# Invalidate a part file.

type: basic
entry: a.dart
strong: true
invalidate:
  - b.dart
sources:
  a.dart: |
    library a;
    import 'c.dart';
    part 'b.dart';
  b.dart: |
    part of a;
    b() { print("b"); }
  c.dart: |
    library c;
    part 'd.dart';
  d.dart: |
    part of c;
    d() { print("d"); }