# 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 added to a compound declaration

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

  var instance;

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