# 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 an instance field can be removed from a compound declaration

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

  var instance;

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