# 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 super calls are dispatched correctly
  class C {

    foo() {
  <<<< ["instance is null","v1"]
      print('v1');
  ==== "v2"
      print('v2');
  >>>>>
    }
  }

  class B extends C {
    bar() {
      super.foo();
    }
  }

  var instance;

  main() {
    if (instance == null) {
      print('instance is null');
      instance = new B();
    }

    instance.bar();
  }
