// Copyright (c) 2019, 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.

// test w/ `pub run test -N prefer_null_aware_operators`

var v;

m() {
  var a, b;
  a == null ? null : a.b; // LINT
  a == null ? null : a.b(); // LINT
  a == null ? null : a.b.c; // LINT
  a == null ? null : a.b.c(); // LINT
  null == a ? null : a.b; // LINT
  null == a ? null : a.b(); // LINT
  null == a ? null : a.b.c; // LINT
  null == a ? null : a.b.c(); // LINT
  a != null ? a.b : null; // LINT
  a != null ? a.b() : null; // LINT
  a != null ? a.b.c : null; // LINT
  a != null ? a.b.c() : null; // LINT
  null != a ? a.b : null; // LINT
  null != a ? a.b() : null; // LINT
  null != a ? a.b.c : null; // LINT
  null != a ? a.b.c() : null; // LINT
  a == null ? b : a; // OK
  a == null ? b.c : null; // OK
  a.b != null ? a.b : null; // OK

  // lint only for local vars
  v == null ? null : v.b; // OK
}
