Files
sdk/pkg/front_end/testcases/nnbd/null_shorting_index.dart
T
Johnni Winther e8683d25ed [cfe] Include null check in shorting
Change-Id: Id0f96b5a2c40e37ded46c761612f2cbb8828ad18
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/161787
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-09-29 16:27:06 +00:00

75 lines
1.7 KiB
Dart

// 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.
class Class1 {
Class2? get field => null;
int operator [](int index) => index;
void operator []=(int index, int value) {}
}
class Class2 {
int field = 42;
}
extension Extension on Class2 {
int operator [](int index) => field;
void operator []=(int index, int value) {
field = value;
}
}
main() {
Class1? c1;
c1?[0];
c1?[0] = 1;
c1?[0] = 1 + c1[0];
c1?[0] += 1;
c1?[0] += 1 + c1[0];
++c1?[0];
c1?[0]++;
c1?[0] ??= 1;
c1?[0] ??= 1 + c1[1];
Class2? c2;
c2?[0];
c2?[0] = 1;
c2?[0] = 1 + c2[0];
c2?[0] += 1;
c2?[0] += 1 + c2[0];
++c2?[0];
c2?[0]++;
c2?[0] ??= 1;
c2?[0] ??= 1 + c2[1];
Extension(c2)?[0];
Extension(c2)?[0] = 1;
Extension(c2)?[0] = 1 + Extension(c2)[0];
Extension(c2)?[0] += 1;
Extension(c2)?[0] += 1 + Extension(c2)[0];
++Extension(c2)?[0];
Extension(c2)?[0]++;
Extension(c2)?[0] ??= 1;
Extension(c2)?[0] ??= 1 + Extension(c2)[1];
c1?.field?[0];
c1?.field?[0] = 1;
c1?.field?[0] = 1 + c1[0];
c1?.field?[0] += 1;
c1?.field?[0] += 1 + c1[0];
++c1?.field?[0];
c1?.field?[0]++;
c1?.field?[0] ??= 1;
c1?.field?[0] ??= 1 + c1[1];
Extension(c1?.field)?[0];
Extension(c1?.field)?[0] = 1;
Extension(c1?.field)?[0] = 1 + (Extension(c2)?[0]! as int);
Extension(c1?.field)?[0] += 1;
Extension(c1?.field)?[0] += 1 + (Extension(c2)?[0]! as int);
++Extension(c1?.field)?[0];
Extension(c1?.field)?[0]++;
Extension(c1?.field)?[0] ??= 1;
Extension(c1?.field)?[0] ??= 1 + (Extension(c2)?[1]! as int);
}