blob: ea01f5f3b7a8751779b69ee072d7ac589d2111af [file] [log] [blame]
// Copyright (c) 2016, 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.
/// @assertion An assignable expression of the form e.id or e?.id is evaluated
/// as a property extraction.
/// @description Checks that expression of the form e?.id is evaluated as
/// ((x) => x == null ? null : x.id)(e).
/// @author ngl@unipro.ru
import '../../../Utils/expect.dart';
class A {
var _x;
var y;
A(): _x = 1, y = 1;
get x {
y = 20;
return _x;
}
}
main() {
A a = new A();
A? b = null;
Expect.equals(1, a?.x);
// ^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
// ^
// [cfe] Operand of null-aware operation '?.' has type 'A' which excludes null.
Expect.equals(20, a?.y);
// ^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
// ^
// [cfe] Operand of null-aware operation '?.' has type 'A' which excludes null.
Expect.isNull(b?.x);
Expect.isNull(b?.y);
}