blob: 9f169052c2de9e3fc859cd29301f19695573e641 [file] [log] [blame]
// 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
/*member: main:[null]*/
main() {
returnTrue();
returnFalse();
returnNot();
returnNotFalse();
returnNotTrue();
returnNotOfNull();
returnIs();
returnIsOneInt();
returnIsNullInt();
returnNotIs();
returnNotIsOneInt();
returnNotIsNullInt();
returnLogicalAnd();
returnLogicalAndTrueTrue();
returnLogicalAndFalseTrue();
returnLogicalAndNullTrue();
returnLogicalAndIs();
returnLogicalAndIsNot();
returnLogicalAndNull();
returnLogicalAndNotNull();
returnLogicalOr();
returnLogicalOrFalseTrue();
returnLogicalOrFalseFalse();
returnLogicalOrNullTrue();
returnLogicalOrIs();
returnLogicalOrIsNot();
returnLogicalOrNull();
returnLogicalOrNotNull();
}
////////////////////////////////////////////////////////////////////////////////
/// Return `true`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnTrue:Value([exact=JSBool], value: true)*/
returnTrue() => true;
////////////////////////////////////////////////////////////////////////////////
/// Return `false`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnFalse:Value([exact=JSBool], value: false)*/
returnFalse() => false;
////////////////////////////////////////////////////////////////////////////////
/// Return negation of a boolean value.
////////////////////////////////////////////////////////////////////////////////
/*member: _returnNot:[exact=JSBool]*/
_returnNot(/*[exact=JSBool]*/ o) => !o;
/*member: returnNot:[null]*/
returnNot() {
_returnNot(true);
_returnNot(false);
}
////////////////////////////////////////////////////////////////////////////////
/// Return negation of `false`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnNotFalse:Value([exact=JSBool], value: true)*/
returnNotFalse() => !false;
////////////////////////////////////////////////////////////////////////////////
/// Return negation of `true`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnNotTrue:Value([exact=JSBool], value: false)*/
returnNotTrue() => !true;
////////////////////////////////////////////////////////////////////////////////
/// Return negation of `null`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnNotOfNull:[exact=JSBool]*/
returnNotOfNull() => !null;
////////////////////////////////////////////////////////////////////////////////
/// Return value of an is test.
////////////////////////////////////////////////////////////////////////////////
/*member: _returnIs:[exact=JSBool]*/
_returnIs(/*[null|exact=JSUInt31]*/ o) => o is int;
/*member: returnIs:[null]*/
returnIs() {
_returnIs(null);
_returnIs(1);
}
////////////////////////////////////////////////////////////////////////////////
/// Return value of an is `int` test known to be true.
////////////////////////////////////////////////////////////////////////////////
/*member: returnIsOneInt:Value([exact=JSBool], value: true)*/
returnIsOneInt() => 1 is int;
////////////////////////////////////////////////////////////////////////////////
/// Return value of an is `int` test known to be false.
////////////////////////////////////////////////////////////////////////////////
/*member: returnIsNullInt:Value([exact=JSBool], value: false)*/
returnIsNullInt() => null is int;
////////////////////////////////////////////////////////////////////////////////
/// Return value of a negated is test.
////////////////////////////////////////////////////////////////////////////////
/*member: _returnNotIs:[exact=JSBool]*/
_returnNotIs(/*[null|exact=JSUInt31]*/ o) => o is! int;
/*member: returnNotIs:[null]*/
returnNotIs() {
_returnNotIs(null);
_returnNotIs(1);
}
////////////////////////////////////////////////////////////////////////////////
/// Return value of a negated is `int` test known to be false.
////////////////////////////////////////////////////////////////////////////////
/*member: returnNotIsOneInt:Value([exact=JSBool], value: false)*/
returnNotIsOneInt() => 1 is! int;
////////////////////////////////////////////////////////////////////////////////
/// Return value of a negated is `int` test known to be true.
////////////////////////////////////////////////////////////////////////////////
/*member: returnNotIsNullInt:Value([exact=JSBool], value: true)*/
returnNotIsNullInt() => null is! int;
////////////////////////////////////////////////////////////////////////////////
/// Return logical and of booleans values.
////////////////////////////////////////////////////////////////////////////////
/*member: _returnLogicalAnd:[exact=JSBool]*/
_returnLogicalAnd(/*[exact=JSBool]*/ a, /*[exact=JSBool]*/ b) => a && b;
/*member: returnLogicalAnd:[null]*/
returnLogicalAnd() {
_returnLogicalAnd(true, true);
_returnLogicalAnd(false, false);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical and of `true` && `true`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnLogicalAndTrueTrue:Value([exact=JSBool], value: true)*/
returnLogicalAndTrueTrue() => true && true;
////////////////////////////////////////////////////////////////////////////////
/// Return logical and of `false` && `true`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnLogicalAndFalseTrue:Value([exact=JSBool], value: false)*/
/// ignore: dead_code
returnLogicalAndFalseTrue() => false && true;
////////////////////////////////////////////////////////////////////////////////
/// Return logical and of `null` && `true`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnLogicalAndNullTrue:[exact=JSBool]*/
returnLogicalAndNullTrue() => null && true;
////////////////////////////////////////////////////////////////////////////////
/// Return logical and of is test and use.
////////////////////////////////////////////////////////////////////////////////
/*member: Class1.:[exact=Class1]*/
class Class1 {
/*member: Class1.field:Value([exact=JSBool], value: true)*/
final bool field = true;
}
/*member: _returnLogicalAndIs:[exact=JSBool]*/
_returnLogicalAndIs(/*[null|exact=Class1]*/ o) {
return o is Class1 && o. /*[exact=Class1]*/ field;
}
/*member: returnLogicalAndIs:[null]*/
returnLogicalAndIs() {
_returnLogicalAndIs(new Class1());
_returnLogicalAndIs(null);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical and of is-not test and use.
////////////////////////////////////////////////////////////////////////////////
/*member: Class2.:[exact=Class2]*/
class Class2 {
/*member: Class2.field:Value([exact=JSBool], value: true)*/
final bool field = true;
}
/*member: _returnLogicalAndIsNot:[exact=JSBool]*/
_returnLogicalAndIsNot(/*[null|exact=Class2]*/ o) {
// TODO(johnniwinther): Use negative type knowledge to show that the receiver
// is [null].
return o is! Class2 && o. /*[null|exact=Class2]*/ field;
}
/*member: returnLogicalAndIsNot:[null]*/
returnLogicalAndIsNot() {
_returnLogicalAndIsNot(new Class2());
_returnLogicalAndIsNot(null);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical and of null test and use.
////////////////////////////////////////////////////////////////////////////////
/*member: Class3.:[exact=Class3]*/
class Class3 {
/*member: Class3.field:Value([exact=JSBool], value: true)*/
final bool field = true;
}
/*member: _returnLogicalAndNull:[exact=JSBool]*/
_returnLogicalAndNull(/*[null|exact=Class3]*/ o) {
return o == null && o. /*[null]*/ field;
}
/*member: returnLogicalAndNull:[null]*/
returnLogicalAndNull() {
_returnLogicalAndNull(new Class3());
_returnLogicalAndNull(null);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical and of not null test and use.
////////////////////////////////////////////////////////////////////////////////
/*member: Class4.:[exact=Class4]*/
class Class4 {
/*member: Class4.field:Value([exact=JSBool], value: true)*/
final bool field = true;
}
/*member: _returnLogicalAndNotNull:[exact=JSBool]*/
_returnLogicalAndNotNull(/*[null|exact=Class4]*/ o) {
return o != null && o. /*[exact=Class4]*/ field;
}
/*member: returnLogicalAndNotNull:[null]*/
returnLogicalAndNotNull() {
_returnLogicalAndNotNull(new Class4());
_returnLogicalAndNotNull(null);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical or of booleans values.
////////////////////////////////////////////////////////////////////////////////
/*member: _returnLogicalOr:[exact=JSBool]*/
_returnLogicalOr(/*[exact=JSBool]*/ a, /*[exact=JSBool]*/ b) => a || b;
/*member: returnLogicalOr:[null]*/
returnLogicalOr() {
_returnLogicalOr(true, true);
_returnLogicalOr(false, false);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical or of `false` || `true`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnLogicalOrFalseTrue:Value([exact=JSBool], value: true)*/
returnLogicalOrFalseTrue() => false || true;
////////////////////////////////////////////////////////////////////////////////
/// Return logical or of `false` || `false`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnLogicalOrFalseFalse:Value([exact=JSBool], value: false)*/
returnLogicalOrFalseFalse() => false || false;
////////////////////////////////////////////////////////////////////////////////
/// Return logical or of `null` || `true`.
////////////////////////////////////////////////////////////////////////////////
/*member: returnLogicalOrNullTrue:[exact=JSBool]*/
returnLogicalOrNullTrue() => null || true;
////////////////////////////////////////////////////////////////////////////////
/// Return logical or of is test or use.
////////////////////////////////////////////////////////////////////////////////
/*member: Class5.:[exact=Class5]*/
class Class5 {
/*member: Class5.field:Value([exact=JSBool], value: true)*/
final bool field = true;
}
/*member: _returnLogicalOrIs:[exact=JSBool]*/
_returnLogicalOrIs(/*[null|exact=Class5]*/ o) {
// TODO(johnniwinther): Use negative type knowledge to show that the receiver
// is [null].
return o is Class5 || o. /*[null|exact=Class5]*/ field;
}
/*member: returnLogicalOrIs:[null]*/
returnLogicalOrIs() {
_returnLogicalOrIs(new Class5());
_returnLogicalOrIs(null);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical or of is-not test or use.
////////////////////////////////////////////////////////////////////////////////
/*member: Class6.:[exact=Class6]*/
class Class6 {
/*member: Class6.field:Value([exact=JSBool], value: true)*/
final bool field = true;
}
/*member: _returnLogicalOrIsNot:[exact=JSBool]*/
_returnLogicalOrIsNot(/*[null|exact=Class6]*/ o) {
return o is! Class6 || o. /*[exact=Class6]*/ field;
}
/*member: returnLogicalOrIsNot:[null]*/
returnLogicalOrIsNot() {
_returnLogicalOrIsNot(new Class6());
_returnLogicalOrIsNot(null);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical or of null test or use.
////////////////////////////////////////////////////////////////////////////////
/*member: Class7.:[exact=Class7]*/
class Class7 {
/*member: Class7.field:Value([exact=JSBool], value: true)*/
final bool field = true;
}
/*member: _returnLogicalOrNull:[exact=JSBool]*/
_returnLogicalOrNull(/*[null|exact=Class7]*/ o) {
return o == null || o. /*[exact=Class7]*/ field;
}
/*member: returnLogicalOrNull:[null]*/
returnLogicalOrNull() {
_returnLogicalOrNull(new Class7());
_returnLogicalOrNull(null);
}
////////////////////////////////////////////////////////////////////////////////
/// Return logical or of not null test or use.
////////////////////////////////////////////////////////////////////////////////
/*member: Class8.:[exact=Class8]*/
class Class8 {
/*member: Class8.field:Value([exact=JSBool], value: true)*/
final bool field = true;
}
/*member: _returnLogicalOrNotNull:[exact=JSBool]*/
_returnLogicalOrNotNull(/*[null|exact=Class8]*/ o) {
return o != null || o. /*[null]*/ field;
}
/*member: returnLogicalOrNotNull:[null]*/
returnLogicalOrNotNull() {
_returnLogicalOrNotNull(new Class8());
_returnLogicalOrNotNull(null);
}