# 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: |
  // Test that a stored closure of a local function changes behavior when updated

  var closure;
  class C {
    m() {
      l() {
  <<<< ["closure is null","v1"]
        print('v1');
  ==== "v2"
        print('v2');
  >>>>
      }
      closure = l;
    }
  }

  main() {
    if (closure == null) {
      print('closure is null');
      new C().m();
    }
    closure();
  }
