blob: 04545e9409f4cd13bd82a9573af8430d53ec737b [file] [log] [blame]
// Copyright (c) 2018, 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 Issue #33761: is-checks and null-checks were assumed to
/// be true even in nested non-condition contexts.
/*member: argIsNonNull1:[null]*/
argIsNonNull1(/*[exact=JSUInt31]*/ x) {
print('>> is null: ${x == null}');
}
/*member: nonNull1:[null]*/
void nonNull1() {
var x = 1;
if (x /*invoke: [null|subclass=JSInt]*/ == null) return;
argIsNonNull1(x);
}
/*member: argIsNonNull2:[null]*/
argIsNonNull2(/*[exact=JSUInt31]*/ x) {
print('>> is null: ${x == null}');
}
/*member: nonNull2:[null]*/
void nonNull2() {
var x = 1;
if ((x /*invoke: [null|subclass=JSInt]*/ ==
null) /*invoke: [exact=JSBool]*/ ==
true) return;
argIsNonNull2(x);
}
/*member: argIsNonNull3:[null]*/
argIsNonNull3(/*[exact=JSUInt31]*/ x) {
print('>> is null: ${x == null}');
}
/*member: nonNull3:[null]*/
void nonNull3() {
var x = 1;
if ((x /*invoke: [null|subclass=JSInt]*/ ==
null) /*invoke: [exact=JSBool]*/ !=
false) return;
argIsNonNull3(x);
}
/*member: argIsNonNull4:[null]*/
argIsNonNull4(/*[exact=JSUInt31]*/ x) {
print('>> is null: ${x == null}');
}
/*member: discard:Value([exact=JSBool], value: false)*/
discard(/*[exact=JSBool]*/ x) => false;
/*member: nonNull4:[null]*/
void nonNull4() {
var x = 1;
if (discard(x /*invoke: [null|subclass=JSInt]*/ != null)) return;
argIsNonNull4(x);
}
/*member: argIsNonNull5:[null]*/
argIsNonNull5(/*[null|exact=JSUInt31]*/ x) {
print('>> is null: ${x == null}');
}
/*member: nonNull5:[null]*/
void nonNull5() {
var x = 1;
if (x /*invoke: [null|subclass=JSInt]*/ != null ? false : false) return;
argIsNonNull5(x);
}
/*member: argIsNonNull6:[null]*/
argIsNonNull6(/*[exact=JSUInt31]*/ x) {
print('>> is null: ${x == null}');
}
/*member: nonNull6:[null]*/
void nonNull6() {
var x = 1;
if ((/*[exact=JSBool]*/ (/*[exact=JSBool]*/ y) =>
y && false)(x /*invoke: [null|subclass=JSInt]*/ != null)) return;
argIsNonNull6(x);
}
/*member: argIsNonNull7:[null]*/
argIsNonNull7(/*[exact=JSUInt31]*/ x) {
print('>> is null: ${x == null}');
}
/*member: nonNull7:[null]*/
void nonNull7() {
var f = false;
var x = 1;
if (f ? (throw x /*invoke: [null|subclass=JSInt]*/ != null) : false) return;
argIsNonNull7(x);
}
/*member: argIsNonNull8:[null]*/
argIsNonNull8(/*[exact=JSUInt31]*/ x) {
print('>> is null: ${x == null}');
}
/*member: nonNull8:[null]*/
void nonNull8() {
var f = false;
var x = 1;
if (f ?? (x /*invoke: [null|subclass=JSInt]*/ != null)) return;
argIsNonNull8(x);
}
/*member: main:[null]*/
void main() {
nonNull1();
nonNull2();
nonNull3();
nonNull4();
nonNull5();
nonNull6();
nonNull7();
nonNull8();
}