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

  class C {
  <<<< ["[instance] is null","v1","[instance.x] threw"]
    static String x;
  ==== {"messages":[],"hasCompileTimeError":1}
    String x;
  >>>>
  }

  dynamic instance;

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