blob: 275cd1960915015553f27c8af7aae3c29d49ed75 [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: returnNum1:Union([exact=JSDouble], [exact=JSUInt31])*/
returnNum1(/*Value([exact=JSBool], value: true)*/ a) {
if (a)
return 1;
else
return 2.5;
}
/*member: returnNum2:Union([exact=JSDouble], [exact=JSUInt31])*/
returnNum2(/*Value([exact=JSBool], value: true)*/ a) {
if (a)
return 1.4;
else
return 2;
}
/*member: returnInt1:[exact=JSUInt31]*/
returnInt1(/*Value([exact=JSBool], value: true)*/ a) {
if (a)
return 1;
else
return 2;
}
/*member: returnDouble:[exact=JSDouble]*/
returnDouble(/*Value([exact=JSBool], value: true)*/ a) {
if (a)
return 1.5;
else
return 2.5;
}
/*member: returnGiveUp:Union([exact=JSString], [exact=JSUInt31])*/
returnGiveUp(/*Value([exact=JSBool], value: true)*/ a) {
if (a)
return 1;
else
return 'foo';
}
/*member: returnInt2:[exact=JSUInt31]*/
returnInt2() {
var a = 42;
return a /*invoke: [exact=JSUInt31]*/ ++;
}
/*member: returnInt5:[subclass=JSUInt32]*/
returnInt5() {
var a = 42;
return /*invoke: [exact=JSUInt31]*/ ++a;
}
/*member: returnInt6:[subclass=JSUInt32]*/
returnInt6() {
var a = 42;
a /*invoke: [exact=JSUInt31]*/ ++;
return a;
}
/*member: returnIntOrNull:[null|exact=JSUInt31]*/
returnIntOrNull(/*Value([exact=JSBool], value: true)*/ a) {
if (a) return 42;
}
/*member: returnInt3:[exact=JSUInt31]*/
returnInt3(/*Value([exact=JSBool], value: true)*/ a) {
if (a) return 42;
throw 42;
}
/*member: returnInt4:[exact=JSUInt31]*/
returnInt4() {
return (42);
}
/*member: returnInt7:[subclass=JSPositiveInt]*/
returnInt7() {
return 42. /*invoke: [exact=JSUInt31]*/ abs();
}
/*member: returnInt8:[subclass=JSPositiveInt]*/
returnInt8() {
return 42. /*invoke: [exact=JSUInt31]*/ remainder(54);
}
/*member: returnEmpty1:[empty]*/
returnEmpty1() {
// Ensure that we don't intrisify a wrong call to [int.remainder].
dynamic a = 42;
return a. /*invoke: [exact=JSUInt31]*/ remainder();
}
/*member: returnEmpty2:[empty]*/
returnEmpty2() {
// Ensure that we don't intrisify a wrong call to [int.abs].
dynamic a = 42;
return a. /*invoke: [exact=JSUInt31]*/ abs(42);
}
/*member: testIsCheck1:[subclass=JSInt]*/
testIsCheck1(/*[null|subclass=Object]*/ a) {
if (a is int) {
return a;
} else {
return 42;
}
}
/*member: testIsCheck2:[subclass=JSInt]*/
testIsCheck2(/*[null|subclass=Object]*/ a) {
if (a is! int) {
return 0;
} else {
return a;
}
}
/*member: testIsCheck3:[null|subclass=JSInt]*/
testIsCheck3(/*[null|subclass=Object]*/ a) {
if (a is! int) {
print('hello');
} else {
return a;
}
}
/*member: testIsCheck4:[subclass=JSInt]*/
testIsCheck4(/*[null|subclass=Object]*/ a) {
if (a is int) {
return a;
} else {
return 42;
}
}
/*member: testIsCheck5:[subclass=JSInt]*/
testIsCheck5(/*[null|subclass=Object]*/ a) {
if (a is! int) {
return 42;
} else {
return a;
}
}
/*member: testIsCheck6:[null|subclass=Object]*/
testIsCheck6(/*[null|subclass=Object]*/ a) {
if (a is! int) {
return a;
} else {
return 42;
}
}
/*member: testIsCheck7:[subclass=JSInt]*/
testIsCheck7(/*[null|subclass=Object]*/ a) {
if (a == 'foo' && a is int) {
return a;
} else {
return 42;
}
}
/*member: testIsCheck8:[null|subclass=Object]*/
testIsCheck8(/*[null|subclass=Object]*/ a) {
if (a == 'foo' || a is int) {
return a;
} else {
return 42;
}
}
/*member: testIsCheck9:[subclass=JSInt]*/
testIsCheck9(/*[null|subclass=Object]*/ a) {
return a is int ? a : 42;
}
/*member: testIsCheck10:[null|subclass=Object]*/
testIsCheck10(/*[null|subclass=Object]*/ a) {
return a is! int ? a : 42;
}
/*member: testIsCheck11:[subclass=JSInt]*/
testIsCheck11(/*[null|subclass=Object]*/ a) {
return a is! int ? 42 : a;
}
/*member: testIsCheck12:[null|subclass=Object]*/
testIsCheck12(/*[null|subclass=Object]*/ a) {
return a is int ? 42 : a;
}
/*member: testIsCheck13:[subclass=JSInt]*/
testIsCheck13(/*[null|subclass=Object]*/ a) {
while (a is int) {
return a;
}
return 42;
}
/*member: testIsCheck14:[null|subclass=Object]*/
testIsCheck14(/*[null|subclass=Object]*/ a) {
while (a is! int) {
return 42;
}
return a;
}
// TODO(29309): Change to [subclass=JSInt] when 29309 is fixed.
/*member: testIsCheck15:[null|subclass=Object]*/
testIsCheck15(/*[null|subclass=Object]*/ a) {
dynamic c = 42;
do {
if (a) return c;
c = topLevelGetter();
} while (c is int);
return 42;
}
/*member: testIsCheck16:[null|subclass=Object]*/
testIsCheck16(/*[null|subclass=Object]*/ a) {
dynamic c = 42;
do {
if (a) return c;
c = topLevelGetter();
} while (c is! int);
return 42;
}
/*member: testIsCheck17:[subclass=JSInt]*/
testIsCheck17(/*[null|subclass=Object]*/ a) {
dynamic c = 42;
for (; c is int;) {
if (a) return c;
c = topLevelGetter();
}
return 42;
}
/*member: testIsCheck18:[null|subclass=Object]*/
testIsCheck18(/*[null|subclass=Object]*/ a) {
dynamic c = 42;
for (; c is int;) {
if (a) return c;
c = topLevelGetter();
}
return c;
}
/*member: testIsCheck19:[null|subclass=Object]*/
testIsCheck19(/*[null|subclass=Object]*/ a) {
dynamic c = 42;
for (; c is! int;) {
if (a) return c;
c = topLevelGetter();
}
return 42;
}
/*member: testIsCheck20:[exact=JSUInt31]*/
testIsCheck20() {
var c = topLevelGetter();
if (c != null && c is! bool && c is! int) {
return 42;
} else if (c is String) {
return c;
} else {
return 68;
}
}
/*member: testIsCheck21:Union([subclass=JSArray], [subclass=JSInt])*/
testIsCheck21(/*[null|subclass=Object]*/ a) {
if (a is int || a is List) {
return a;
} else {
return 42;
}
}
/*member: testIsCheck22:Union([subclass=JSArray], [subclass=JSInt])*/
testIsCheck22(/*[null|subclass=Object]*/ a) {
return (a is int || a is List) ? a : 42;
}
/*member: testIsCheck23:[subclass=JSInt]*/
testIsCheck23(/*[null|subclass=Object]*/ a) {
if (a is! int) throw 'foo';
return a;
}
/*member: testIsCheck24:[subclass=JSInt]*/
testIsCheck24(/*[null|subclass=Object]*/ a) {
if (a is! int) return 42;
return a;
}
/*member: testIsCheck25:[null|subclass=Object]*/
testIsCheck25(/*[null|subclass=Object]*/ a) {
if (a is int) throw 'foo';
return a;
}
/*member: testIsCheck26:[subclass=JSInt]*/
testIsCheck26(/*[null|subclass=Object]*/ a) {
if (a is int) {
} else {
throw 42;
}
return a;
}
/*member: testIsCheck27:[subclass=JSInt]*/
testIsCheck27(/*[null|subclass=Object]*/ a) {
if (a is int) {
} else {
return 42;
}
return a;
}
/*member: testIsCheck28:[null|subclass=Object]*/
testIsCheck28(/*[null|subclass=Object]*/ a) {
if (a is int) {
} else {}
return a;
}
/*member: testIsCheck29:[null|subclass=Object]*/
testIsCheck29(/*[null|subclass=Object]*/ a) {
if (a is int) {}
return a;
}
/*member: testIf1:[null|exact=JSUInt31]*/
testIf1(/*[null|subclass=Object]*/ a) {
var c = null;
if (a) {
c = 10;
} else {}
return c;
}
/*member: testIf2:[null|exact=JSUInt31]*/
testIf2(/*[null|subclass=Object]*/ a) {
var c = null;
if (a) {
} else {
c = 10;
}
return c;
}
/*member: returnAsString:[null|exact=JSString]*/
returnAsString() {
return topLevelGetter() as String;
}
/*member: returnIntAsNum:[exact=JSUInt31]*/
returnIntAsNum() {
dynamic a = 0;
return a as num;
}
typedef int Foo();
/*member: returnAsTypedef:[null|subclass=Closure]*/
returnAsTypedef() {
return topLevelGetter() as Foo;
}
/*member: testDeadCode:[exact=JSUInt31]*/
testDeadCode() {
return 42;
// ignore: dead_code
return 'foo';
}
/*member: testLabeledIf:[null|exact=JSUInt31]*/
testLabeledIf(/*Value([exact=JSBool], value: true)*/ a) {
var c;
L1:
if (a /*invoke: Value([exact=JSBool], value: true)*/ > 1) {
if (a /*invoke: Value([exact=JSBool], value: true)*/ == 2) {
break L1;
}
c = 42;
} else {
c = 38;
}
return c;
}
/*member: testSwitch1:Union(null, [exact=JSDouble], [exact=JSUInt31])*/
testSwitch1() {
var a = null;
switch (topLevelGetter) {
case 100:
a = 42.5;
break;
case 200:
a = 42;
break;
}
return a;
}
/*member: testSwitch2:[exact=JSUInt31]*/
testSwitch2() {
var a = null;
switch (topLevelGetter) {
case 100:
a = 42;
break;
case 200:
a = 42;
break;
default:
a = 43;
}
return a;
}
/*member: testSwitch3:Union(null, [exact=JSString], [subclass=JSNumber])*/
testSwitch3() {
dynamic a = 42;
var b;
switch (topLevelGetter) {
L1:
case 1:
b = a /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ + 42;
break;
case 2:
a = 'foo';
continue L1;
}
return b;
}
/*member: testSwitch4:[exact=JSUInt31]*/
testSwitch4() {
switch (topLevelGetter) {
case 1:
break;
default:
break;
}
return 42;
}
/*member: testSwitch5:[exact=JSUInt31]*/
testSwitch5() {
switch (topLevelGetter) {
case 1:
return 1;
default:
return 2;
}
}
/*member: testContinue1:Union(null, [exact=JSString], [subclass=JSNumber])*/
testContinue1() {
dynamic a = 42;
var b;
while (true) {
b = a /*invoke: Union([exact=JSString], [exact=JSUInt31])*/ + 54;
if (b /*invoke: Union([exact=JSString], [subclass=JSNumber])*/ == 42)
continue;
a = 'foo';
}
// ignore: dead_code
return b;
}
/*member: testBreak1:Union(null, [exact=JSString], [subclass=JSUInt32])*/
testBreak1() {
var a = 42;
var b;
while (true) {
b = a /*invoke: [exact=JSUInt31]*/ + 54;
if (b /*invoke: [subclass=JSUInt32]*/ == 42) break;
b = 'foo';
}
return b;
}
/*member: testContinue2:Union(null, [exact=JSString], [subclass=JSUInt32])*/
testContinue2() {
var a = 42;
var b;
while (true) {
b = a /*invoke: [exact=JSUInt31]*/ + 54;
if (b /*invoke: [subclass=JSUInt32]*/ == 42) {
b = 'foo';
continue;
}
}
// ignore: dead_code
return b;
}
/*member: testBreak2:[null|subclass=JSUInt32]*/
testBreak2() {
dynamic a = 42;
var b;
while (true) {
b = a /*invoke: [exact=JSUInt31]*/ + 54;
if (b /*invoke: [subclass=JSUInt32]*/ == 42) {
a = 'foo';
break;
}
}
return b;
}
/*member: testReturnElementOfConstList1:[exact=JSUInt31]*/
testReturnElementOfConstList1() {
return const [
42
] /*Container([exact=JSUnmodifiableArray], element: [exact=JSUInt31], length: 1)*/ [
0];
}
/*member: testReturnElementOfConstList2:[exact=JSUInt31]*/
testReturnElementOfConstList2() {
return topLevelConstList /*Container([exact=JSUnmodifiableArray], element: [exact=JSUInt31], length: 1)*/ [
0];
}
/*member: testReturnItselfOrInt:[exact=JSUInt31]*/
testReturnItselfOrInt(/*[null|subclass=Object]*/ a) {
if (a) return 42;
return testReturnItselfOrInt(a);
}
/*member: testDoWhile1:Value([exact=JSString], value: "foo")*/
testDoWhile1() {
dynamic a = 42;
do {
a = 'foo';
} while (true);
// ignore: dead_code
return a;
}
/*member: testDoWhile2:[null]*/
testDoWhile2() {
dynamic a = 42;
do {
a = 'foo';
// ignore: mixed_return_types
return;
} while (true);
// ignore: dead_code,mixed_return_types
return a;
}
/*member: testDoWhile3:[exact=JSUInt31]*/
testDoWhile3() {
dynamic a = 42;
do {
a = 'foo';
if (true) continue;
return 42;
} while (true);
// ignore: dead_code
return a;
}
/*member: testDoWhile4:Union([exact=JSDouble], [exact=JSUInt31])*/
testDoWhile4() {
dynamic a = 'foo';
do {
a = 54;
if (true) break;
return 3.5;
} while (true);
return a;
}
/*member: testSpecialization1:[subclass=Object]*/
testSpecialization1() {
var a = topLevelGetter();
a - 42;
return a;
}
/*member: testSpecialization2:[null|subclass=Object]*/
testSpecialization2() {
var a = topLevelGetter();
// Make [a] a captured variable. This should disable receiver
// specialization on [a].
(
/*[null|exact=JSString]*/
() => a.toString())();
a - 42;
return a;
}
/*member: testSpecialization3:[null|exact=JSUInt31]*/
testSpecialization3() {
var a = returnDynamic() ? null : 42;
a. /*invoke: [null|exact=JSUInt31]*/ toString();
// Test that calling an [Object] method on [a] will not lead to
// infer that [a] is not null;
return a;
}
/*member: testReturnNull1:[null]*/
testReturnNull1(/*[null|subclass=Object]*/ a) {
if (a == null) return a;
return null;
}
/*member: testReturnNull2:[null]*/
testReturnNull2(/*[null|subclass=Object]*/ a) {
if (a != null) return null;
return a;
}
/*member: testReturnNull3:[subclass=Object]*/
testReturnNull3(/*[null|subclass=Object]*/ a) {
if (a == null) return 42;
return a;
}
/*member: testReturnNull4:[null]*/
testReturnNull4() {
var a = topLevelGetter();
if (a == null) return a;
return null;
}
/*member: testReturnNull5:[null]*/
testReturnNull5() {
var a = topLevelGetter();
if (a != null) return null;
return a;
}
/*member: testReturnNull6:[subclass=Object]*/
testReturnNull6() {
var a = topLevelGetter();
if (a == null) return 42;
return a;
}
/*member: testReturnNotEquals:[exact=JSBool]*/
testReturnNotEquals() {
return new A() /*invoke: [exact=A]*/ != 54;
}
/*member: testReturnInvokeDynamicGetter:[null|subclass=Object]*/
testReturnInvokeDynamicGetter() => new A().myFactory /*invoke: [exact=A]*/ ();
/*member: topLevelConstList:Container([exact=JSUnmodifiableArray], element: [exact=JSUInt31], length: 1)*/
var topLevelConstList = const [42];
/*member: topLevelGetter:[exact=JSUInt31]*/
get topLevelGetter => 42;
/*member: returnDynamic:[null|subclass=Object]*/
returnDynamic() => topLevelGetter(42);
/*member: returnTopLevelGetter:[exact=JSUInt31]*/
returnTopLevelGetter() => topLevelGetter;
class A {
factory A() = A.generative;
/*member: A.generative:[exact=A]*/
A.generative();
/*member: A.==:[exact=JSBool]*/
operator ==(/*Union([exact=JSString], [exact=JSUInt31])*/ other) =>
42 as dynamic;
/*member: A.myField:[exact=JSUInt31]*/
get myField => 42;
set myField(/*[subclass=JSUInt32]*/ a) {}
/*member: A.returnInt1:[subclass=JSUInt32]*/
returnInt1() => /*invoke: [exact=JSUInt31]*/ ++ /*[subclass=A]*/ /*update: [subclass=A]*/ myField;
/*member: A.returnInt2:[subclass=JSUInt32]*/
returnInt2() => /*invoke: [exact=JSUInt31]*/ ++this
. /*[subclass=A]*/ /*update: [subclass=A]*/ myField;
/*member: A.returnInt3:[subclass=JSUInt32]*/
returnInt3() =>
this. /*[subclass=A]*/ /*update: [subclass=A]*/ myField /*invoke: [exact=JSUInt31]*/ +=
42;
/*member: A.returnInt4:[subclass=JSUInt32]*/
returnInt4() => /*[subclass=A]*/ /*update: [subclass=A]*/ myField /*invoke: [exact=JSUInt31]*/ +=
42;
/*member: A.[]:[exact=JSUInt31]*/
operator [](/*[exact=JSUInt31]*/ index) => 42;
/*member: A.[]=:[null]*/
operator []=(/*[exact=JSUInt31]*/ index, /*[subclass=JSUInt32]*/ value) {}
/*member: A.returnInt5:[subclass=JSUInt32]*/
returnInt5() => /*invoke: [exact=JSUInt31]*/ ++this /*[subclass=A]*/ /*update: [subclass=A]*/ [
0];
/*member: A.returnInt6:[subclass=JSUInt32]*/
returnInt6() => this /*[subclass=A]*/ /*update: [subclass=A]*/ [
0] /*invoke: [exact=JSUInt31]*/ += 1;
/*member: A.myFactory:[subclass=Closure]*/
get myFactory => /*[exact=JSUInt31]*/ () => 42;
}
class B extends A {
/*member: B.:[exact=B]*/
B() : super.generative();
/*member: B.returnInt1:[subclass=JSUInt32]*/
returnInt1() => /*invoke: [exact=JSUInt31]*/ ++new A()
. /*[exact=A]*/ /*update: [exact=A]*/ myField;
/*member: B.returnInt2:[subclass=JSUInt32]*/
returnInt2() => new A()
. /*[exact=A]*/ /*update: [exact=A]*/ myField /*invoke: [exact=JSUInt31]*/ += 4;
/*member: B.returnInt3:[subclass=JSUInt32]*/
returnInt3() => /*invoke: [exact=JSUInt31]*/ ++new A() /*[exact=A]*/ /*update: [exact=A]*/ [
0];
/*member: B.returnInt4:[subclass=JSUInt32]*/
returnInt4() => new A() /*[exact=A]*/ /*update: [exact=A]*/ [
0] /*invoke: [exact=JSUInt31]*/ += 42;
/*member: B.returnInt5:[subclass=JSUInt32]*/
returnInt5() => /*invoke: [exact=JSUInt31]*/ ++super.myField;
/*member: B.returnInt6:[subclass=JSUInt32]*/
returnInt6() => super.myField /*invoke: [exact=JSUInt31]*/ += 4;
/*member: B.returnInt7:[subclass=JSUInt32]*/
returnInt7() => /*invoke: [exact=JSUInt31]*/ ++super[0];
/*member: B.returnInt8:[subclass=JSUInt32]*/
returnInt8() => super[0] /*invoke: [exact=JSUInt31]*/ += 54;
/*member: B.returnInt9:[exact=JSUInt31]*/
returnInt9() => super.myField;
}
class C {
/*member: C.myField:[subclass=JSPositiveInt]*/
var myField = 42;
/*member: C.:[exact=C]*/
C();
/*member: C.returnInt1:[subclass=JSPositiveInt]*/
returnInt1() => /*invoke: [subclass=JSPositiveInt]*/ ++ /*update: [exact=C]*/ /*[exact=C]*/ myField;
/*member: C.returnInt2:[subclass=JSPositiveInt]*/
returnInt2() => /*invoke: [subclass=JSPositiveInt]*/ ++this
. /*[exact=C]*/ /*update: [exact=C]*/ myField;
/*member: C.returnInt3:[subclass=JSPositiveInt]*/
returnInt3() =>
this. /*[exact=C]*/ /*update: [exact=C]*/ myField /*invoke: [subclass=JSPositiveInt]*/ +=
42;
/*member: C.returnInt4:[subclass=JSPositiveInt]*/
returnInt4() => /*[exact=C]*/ /*update: [exact=C]*/ myField /*invoke: [subclass=JSPositiveInt]*/ +=
42;
/*member: C.[]:[subclass=JSPositiveInt]*/
operator [](/*[exact=JSUInt31]*/ index) => /*[exact=C]*/ myField;
/*member: C.[]=:[null]*/
operator []=(
/*[exact=JSUInt31]*/ index,
/*[subclass=JSPositiveInt]*/ value) {}
/*member: C.returnInt5:[subclass=JSPositiveInt]*/
returnInt5() => /*invoke: [subclass=JSPositiveInt]*/ ++this /*[exact=C]*/ /*update: [exact=C]*/ [
0];
/*member: C.returnInt6:[subclass=JSPositiveInt]*/
returnInt6() => this /*[exact=C]*/ /*update: [exact=C]*/ [
0] /*invoke: [subclass=JSPositiveInt]*/ += 1;
}
/*member: testCascade1:Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: null)*/
testCascade1() {
return [1, 2, 3]
.. /*invoke: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: null)*/
add(4)
.. /*invoke: Container([exact=JSExtendableArray], element: [exact=JSUInt31], length: null)*/
add(5);
}
/*member: testCascade2:[exact=CascadeHelper]*/
testCascade2() {
return new CascadeHelper()
.. /*update: [exact=CascadeHelper]*/ a = "hello"
.. /*update: [exact=CascadeHelper]*/ b = 42
.. /*[exact=CascadeHelper]*/ i
/*invoke: [subclass=JSPositiveInt]*/ /*update: [exact=CascadeHelper]*/ +=
1;
}
/*member: CascadeHelper.:[exact=CascadeHelper]*/
class CascadeHelper {
/*member: CascadeHelper.a:Value([null|exact=JSString], value: "hello")*/
var a;
/*member: CascadeHelper.b:[null|exact=JSUInt31]*/
var b;
/*member: CascadeHelper.i:[subclass=JSPositiveInt]*/
var i = 0;
}
/*member: main:[null]*/
main() {
// Ensure a function class is being instantiated.
/*[exact=JSUInt31]*/ () => 42;
returnNum1(true);
returnNum2(true);
returnInt1(true);
returnInt2();
returnInt3(true);
returnInt4();
returnDouble(true);
returnGiveUp(true);
returnInt5();
returnInt6();
returnInt7();
returnInt8();
returnIntOrNull(true);
returnDynamic();
returnEmpty1();
returnEmpty2();
testIsCheck1(topLevelGetter());
testIsCheck2(topLevelGetter());
testIsCheck3(topLevelGetter());
testIsCheck4(topLevelGetter());
testIsCheck5(topLevelGetter());
testIsCheck6(topLevelGetter());
testIsCheck7(topLevelGetter());
testIsCheck8(topLevelGetter());
testIsCheck9(topLevelGetter());
testIsCheck10(topLevelGetter());
testIsCheck11(topLevelGetter());
testIsCheck12(topLevelGetter());
testIsCheck13(topLevelGetter());
testIsCheck14(topLevelGetter());
testIsCheck15(topLevelGetter());
testIsCheck16(topLevelGetter());
testIsCheck17(topLevelGetter());
testIsCheck18(topLevelGetter());
testIsCheck19(topLevelGetter());
testIsCheck20();
testIsCheck21(topLevelGetter());
testIsCheck22(topLevelGetter());
testIsCheck23(topLevelGetter());
testIsCheck24(topLevelGetter());
testIsCheck25(topLevelGetter());
testIsCheck26(topLevelGetter());
testIsCheck27(topLevelGetter());
testIsCheck28(topLevelGetter());
testIsCheck29(topLevelGetter());
testIf1(topLevelGetter());
testIf2(topLevelGetter());
returnAsString();
returnIntAsNum();
returnAsTypedef();
returnTopLevelGetter();
testDeadCode();
testLabeledIf(true);
testSwitch1();
testSwitch2();
testSwitch3();
testSwitch4();
testSwitch5();
testContinue1();
testBreak1();
testContinue2();
testBreak2();
testDoWhile1();
testDoWhile2();
testDoWhile3();
testDoWhile4();
new A() /*invoke: [null|subclass=A]*/ == null;
new A()
.. /*invoke: [exact=A]*/ returnInt1()
.. /*invoke: [exact=A]*/ returnInt2()
.. /*invoke: [exact=A]*/ returnInt3()
.. /*invoke: [exact=A]*/ returnInt4()
.. /*invoke: [exact=A]*/ returnInt5()
.. /*invoke: [exact=A]*/ returnInt6();
new B()
.. /*invoke: [exact=B]*/ returnInt1()
.. /*invoke: [exact=B]*/ returnInt2()
.. /*invoke: [exact=B]*/ returnInt3()
.. /*invoke: [exact=B]*/ returnInt4()
.. /*invoke: [exact=B]*/ returnInt5()
.. /*invoke: [exact=B]*/ returnInt6()
.. /*invoke: [exact=B]*/ returnInt7()
.. /*invoke: [exact=B]*/ returnInt8()
.. /*invoke: [exact=B]*/ returnInt9();
new C()
.. /*invoke: [exact=C]*/ returnInt1()
.. /*invoke: [exact=C]*/ returnInt2()
.. /*invoke: [exact=C]*/ returnInt3()
.. /*invoke: [exact=C]*/ returnInt4()
.. /*invoke: [exact=C]*/ returnInt5()
.. /*invoke: [exact=C]*/ returnInt6();
testReturnElementOfConstList1();
testReturnElementOfConstList2();
testReturnItselfOrInt(topLevelGetter());
testReturnInvokeDynamicGetter();
testCascade1();
testCascade2();
testSpecialization1();
testSpecialization2();
testSpecialization3();
testReturnNull1(topLevelGetter());
testReturnNull2(topLevelGetter());
testReturnNull3(topLevelGetter());
testReturnNull4();
testReturnNull5();
testReturnNull6();
testReturnNotEquals();
}