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

main.dart.patch: |
  // Reproduces a problem where the stack trace includes an old method that
  // should have been removed by the incremental compiler
  main() {
    bar();
  }

  bar() {
  <<<< []
    foo(true);
  ==== []
    foo(false);
  >>>>
  }

  foo(a) {
    if (a) throw "throw";
  }
