blob: 5161a7a746d4aa60ecee3ab561126982c3ea14cd [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
/*member: main:static=[
testAs(1),
testAsGeneric(1),
testAsGenericDynamic(1),
testAsGenericRaw(1),
testConditional(0),
testIfNotNull(1),
testIfNotNullSet(1),
testIfNull(1),
testIs(0),
testIsGeneric(0),
testIsGenericDynamic(0),
testIsGenericRaw(0),
testIsNot(0),
testIsNotGeneric(0),
testIsNotGenericDynamic(0),
testIsNotGenericRaw(0),
testIsTypedef(0),
testIsTypedefDeep(0),
testIsTypedefGeneric(0),
testIsTypedefGenericDynamic(0),
testIsTypedefGenericRaw(0),
testNot(0),
testPostDec(1),
testPostInc(1),
testPreDec(1),
testPreInc(1),
testSetIfNull(1),
testThrow(0),
testTypedIfNotNull(1),
testUnaryMinus(0)
],type=[inst:JSNull]
*/
main() {
testNot();
testUnaryMinus();
testConditional();
testPostInc(null);
testPostDec(null);
testPreInc(null);
testPreDec(null);
testIs();
testIsGeneric();
testIsGenericRaw();
testIsGenericDynamic();
testIsNot();
testIsNotGeneric();
testIsNotGenericRaw();
testIsNotGenericDynamic();
testIsTypedef();
testIsTypedefGeneric();
testIsTypedefGenericRaw();
testIsTypedefGenericDynamic();
testIsTypedefDeep();
testAs(null);
testAsGeneric(null);
testAsGenericRaw(null);
testAsGenericDynamic(null);
testThrow();
testIfNotNull(null);
testTypedIfNotNull(null);
testIfNotNullSet(null);
testIfNull(null);
testSetIfNull(null);
}
/*member: testNot:type=[inst:JSBool]*/
testNot() => !false;
/*member: testUnaryMinus:type=[
inst:JSDouble,
inst:JSInt,
inst:JSNumber,
inst:JSPositiveInt,
inst:JSUInt31,
inst:JSUInt32]*/
testUnaryMinus() => -1;
/*member: testConditional:type=[inst:JSNull]*/
// ignore: DEAD_CODE
testConditional() => true ? null : '';
/*member: testPostInc:
dynamic=[+],
type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
*/
testPostInc(o) => o++;
/*member: testPostDec:
dynamic=[-],
type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
*/
testPostDec(o) => o--;
/*member: testPreInc:
dynamic=[+],
type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
*/
testPreInc(o) => ++o;
/*member: testPreDec:
dynamic=[-],
type=[inst:JSDouble,inst:JSInt,inst:JSNumber,inst:JSPositiveInt,inst:JSUInt31,inst:JSUInt32]
*/
testPreDec(o) => --o;
/*member: testIs:type=[inst:JSBool]*/
testIs() => null is Class;
/*member: testIsGeneric:type=[inst:JSBool]*/
testIsGeneric() => null is GenericClass<int, String>;
/*member: testIsGenericRaw:type=[inst:JSBool]*/
testIsGenericRaw() => null is GenericClass;
/*member: testIsGenericDynamic:type=[inst:JSBool]*/
testIsGenericDynamic() => null is GenericClass<dynamic, dynamic>;
/*member: testIsNot:type=[inst:JSBool]*/
testIsNot() => null is! Class;
/*member: testIsNotGeneric:type=[inst:JSBool]*/
testIsNotGeneric() => null is! GenericClass<int, String>;
/*member: testIsNotGenericRaw:type=[inst:JSBool]*/
testIsNotGenericRaw() => null is! GenericClass;
/*member: testIsNotGenericDynamic:type=[inst:JSBool]*/
testIsNotGenericDynamic() => null is! GenericClass<dynamic, dynamic>;
/*member: testIsTypedef:type=[inst:JSBool]*/
testIsTypedef() => null is Typedef;
/*member: testIsTypedefGeneric:type=[inst:JSBool]*/
testIsTypedefGeneric() => null is GenericTypedef<int, String>;
/*member: testIsTypedefGenericRaw:type=[inst:JSBool]*/
testIsTypedefGenericRaw() => null is GenericTypedef;
/*member: testIsTypedefGenericDynamic:type=[inst:JSBool]*/
testIsTypedefGenericDynamic() => null is GenericTypedef<dynamic, dynamic>;
/*member: testIsTypedefDeep:type=[inst:JSBool]*/
testIsTypedefDeep() => null is List<GenericTypedef<int, GenericTypedef>>;
/*member: testAs:
static=[
Rti._bind(1),
Rti._eval(1),
_arrayInstanceType(1),
_asBool(1),
_asBoolQ(1),
_asBoolS(1),
_asDouble(1),
_asDoubleQ(1),
_asDoubleS(1),
_asInt(1),
_asIntQ(1),
_asIntS(1),
_asNum(1),
_asNumQ(1),
_asNumS(1),
_asObject(1),
_asString(1),
_asStringQ(1),
_asStringS(1),
_asTop(1),
_generalAsCheckImplementation(1),
_generalIsTestImplementation(1),
_generalNullableAsCheckImplementation(1),
_generalNullableIsTestImplementation(1),
_installSpecializedAsCheck(1),
_installSpecializedIsTest(1),
_instanceType(1),
_isBool(1),
_isInt(1),
_isNum(1),
_isObject(1),
_isString(1),
_isTop(1),
findType(1),
instanceType(1)],
type=[
as:Class*,
inst:Closure,
inst:JSBool]
*/
// ignore: UNNECESSARY_CAST
testAs(dynamic o) => o as Class;
/*member: testAsGeneric:
static=[
Rti._bind(1),
Rti._eval(1),
_arrayInstanceType(1),
_asBool(1),
_asBoolQ(1),
_asBoolS(1),
_asDouble(1),
_asDoubleQ(1),
_asDoubleS(1),
_asInt(1),
_asIntQ(1),
_asIntS(1),
_asNum(1),
_asNumQ(1),
_asNumS(1),
_asObject(1),
_asString(1),
_asStringQ(1),
_asStringS(1),
_asTop(1),
_generalAsCheckImplementation(1),
_generalIsTestImplementation(1),
_generalNullableAsCheckImplementation(1),
_generalNullableIsTestImplementation(1),
_installSpecializedAsCheck(1),
_installSpecializedIsTest(1),
_instanceType(1),
_isBool(1),
_isInt(1),
_isNum(1),
_isObject(1),
_isString(1),
_isTop(1),
findType(1),
instanceType(1),
setRuntimeTypeInfo(2)],
type=[
as:GenericClass<int*,String*>*,
inst:Closure,
inst:JSArray<dynamic>,
inst:JSBool,
inst:JSExtendableArray<dynamic>,
inst:JSFixedArray<dynamic>,
inst:JSMutableArray<dynamic>,
inst:JSUnmodifiableArray<dynamic>]
*/
// ignore: UNNECESSARY_CAST
testAsGeneric(dynamic o) => o as GenericClass<int, String>;
/*member: testAsGenericRaw:
static=[
Rti._bind(1),
Rti._eval(1),
_arrayInstanceType(1),
_asBool(1),
_asBoolQ(1),
_asBoolS(1),
_asDouble(1),
_asDoubleQ(1),
_asDoubleS(1),
_asInt(1),
_asIntQ(1),
_asIntS(1),
_asNum(1),
_asNumQ(1),
_asNumS(1),
_asObject(1),
_asString(1),
_asStringQ(1),
_asStringS(1),
_asTop(1),
_generalAsCheckImplementation(1),
_generalIsTestImplementation(1),
_generalNullableAsCheckImplementation(1),
_generalNullableIsTestImplementation(1),
_installSpecializedAsCheck(1),
_installSpecializedIsTest(1),
_instanceType(1),
_isBool(1),
_isInt(1),
_isNum(1),
_isObject(1),
_isString(1),
_isTop(1),
findType(1),
instanceType(1)],
type=[
as:GenericClass<dynamic,dynamic>*,
inst:Closure,
inst:JSBool]
*/
// ignore: UNNECESSARY_CAST
testAsGenericRaw(dynamic o) => o as GenericClass;
/*member: testAsGenericDynamic:
static=[
Rti._bind(1),
Rti._eval(1),
_arrayInstanceType(1),
_asBool(1),
_asBoolQ(1),
_asBoolS(1),
_asDouble(1),
_asDoubleQ(1),
_asDoubleS(1),
_asInt(1),
_asIntQ(1),
_asIntS(1),
_asNum(1),
_asNumQ(1),
_asNumS(1),
_asObject(1),
_asString(1),
_asStringQ(1),
_asStringS(1),
_asTop(1),
_generalAsCheckImplementation(1),
_generalIsTestImplementation(1),
_generalNullableAsCheckImplementation(1),
_generalNullableIsTestImplementation(1),
_installSpecializedAsCheck(1),
_installSpecializedIsTest(1),
_instanceType(1),
_isBool(1),
_isInt(1),
_isNum(1),
_isObject(1),
_isString(1),
_isTop(1),
findType(1),
instanceType(1)],
type=[
as:GenericClass<dynamic,dynamic>*,
inst:Closure,
inst:JSBool]
*/
// ignore: UNNECESSARY_CAST
testAsGenericDynamic(dynamic o) => o as GenericClass<dynamic, dynamic>;
/*member: testThrow:
static=[throwExpression(1),wrapException(1)],
type=[inst:JSString]*/
testThrow() => throw '';
/*member: testIfNotNull:dynamic=[Object.==,foo],type=[inst:JSNull]*/
testIfNotNull(o) => o?.foo;
/*member: testTypedIfNotNull:
dynamic=[
Class.==,
Class.field],
static=[
Rti._bind(1),
Rti._eval(1),
_arrayInstanceType(1),
_asBool(1),
_asBoolQ(1),
_asBoolS(1),
_asDouble(1),
_asDoubleQ(1),
_asDoubleS(1),
_asInt(1),
_asIntQ(1),
_asIntS(1),
_asNum(1),
_asNumQ(1),
_asNumS(1),
_asObject(1),
_asString(1),
_asStringQ(1),
_asStringS(1),
_asTop(1),
_generalAsCheckImplementation(1),
_generalIsTestImplementation(1),
_generalNullableAsCheckImplementation(1),
_generalNullableIsTestImplementation(1),
_installSpecializedAsCheck(1),
_installSpecializedIsTest(1),
_instanceType(1),
_isBool(1),
_isInt(1),
_isNum(1),
_isObject(1),
_isString(1),
_isTop(1),
findType(1),
instanceType(1)],
type=[
inst:Closure,
inst:JSBool,
inst:JSNull,
param:Class*]
*/
testTypedIfNotNull(Class o) => o?.field;
/*member: testIfNotNullSet:dynamic=[Object.==,foo=],type=[inst:JSBool,inst:JSNull]*/
testIfNotNullSet(o) => o?.foo = true;
/*member: testIfNull:dynamic=[Object.==],type=[inst:JSBool,inst:JSNull]*/
testIfNull(o) => o ?? true;
/*member: testSetIfNull:dynamic=[Object.==],type=[inst:JSBool,inst:JSNull]*/
testSetIfNull(o) => o ??= true;
class Class {
var field;
}
class GenericClass<X, Y> {}
typedef Typedef();
typedef X GenericTypedef<X, Y>(Y y);