# 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 instance field can be made static

  class C {
  <<<< ["[instance] is null","[C.x] threw","v1"]
    int x;
  ==== ["v2","[instance.x] threw"]
    static int x;
  >>>>
  }

  var instance;

  main() {
    if (instance == null) {
      print('[instance] is null');
      instance = new C();
      instance.x = 'v1';
    } else {
      C.x = 'v2';
    }
    try {
      print(C.x);
    } catch (e) {
      print('[C.x] threw');
    }
    try {
      print(instance.x);
    } catch (e) {
      print('[instance.x] threw');
    }
  }
