// 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 file.

// @dart = 2.7

// Regression test for dart2js inference. Class9.field9b should be known to be
// potentially `null`.

import 'package:expect/expect.dart';

class Class9 {
  var field9a;
  var field9b;

  Class9() : field9a = 42 {
    field9b = field9a;
  }
}

class SubClass9a extends Class9 {
  var field9b;

  SubClass9a() : field9b = 42;

  get access => super.field9b;
}

class SubClass9b extends Class9 {}

subclassField5() {
  new Class9();
  new SubClass9b();
  return new SubClass9a().access;
}

main() {
  Expect.isTrue(subclassField5() == null);
}
