| Index: test/cctest/test-types.cc
|
| diff --git a/test/cctest/test-types.cc b/test/cctest/test-types.cc
|
| index 3d295ccd4e336962d13282ea491ec0791a7b1f4f..83191688a3a5374e464f8cdd4f9297bf7564bdfc 100644
|
| --- a/test/cctest/test-types.cc
|
| +++ b/test/cctest/test-types.cc
|
| @@ -113,7 +113,7 @@ struct Tests {
|
| Type* t = *it;
|
| CHECK(1 ==
|
| this->IsBitset(t) + t->IsConstant() + t->IsRange() +
|
| - this->IsUnion(t) + t->IsArray() + t->IsFunction());
|
| + this->IsUnion(t));
|
| }
|
| }
|
|
|
| @@ -378,102 +378,6 @@ struct Tests {
|
| }
|
| }
|
|
|
| - void Array() {
|
| - // Constructor
|
| - for (int i = 0; i < 20; ++i) {
|
| - Type* type = T.Random();
|
| - Type* array = T.Array1(type);
|
| - CHECK(array->IsArray());
|
| - }
|
| -
|
| - // Attributes
|
| - for (int i = 0; i < 20; ++i) {
|
| - Type* type = T.Random();
|
| - Type* array = T.Array1(type);
|
| - CheckEqual(type, array->AsArray()->Element());
|
| - }
|
| -
|
| - // Functionality & Injectivity: Array(T1) = Array(T2) iff T1 = T2
|
| - for (int i = 0; i < 20; ++i) {
|
| - for (int j = 0; j < 20; ++j) {
|
| - Type* type1 = T.Random();
|
| - Type* type2 = T.Random();
|
| - Type* array1 = T.Array1(type1);
|
| - Type* array2 = T.Array1(type2);
|
| - CHECK(Equal(array1, array2) == Equal(type1, type2));
|
| - }
|
| - }
|
| - }
|
| -
|
| - void Function() {
|
| - // Constructors
|
| - for (int i = 0; i < 20; ++i) {
|
| - for (int j = 0; j < 20; ++j) {
|
| - for (int k = 0; k < 20; ++k) {
|
| - Type* type1 = T.Random();
|
| - Type* type2 = T.Random();
|
| - Type* type3 = T.Random();
|
| - Type* function0 = T.Function0(type1, type2);
|
| - Type* function1 = T.Function1(type1, type2, type3);
|
| - Type* function2 = T.Function2(type1, type2, type3);
|
| - CHECK(function0->IsFunction());
|
| - CHECK(function1->IsFunction());
|
| - CHECK(function2->IsFunction());
|
| - }
|
| - }
|
| - }
|
| -
|
| - // Attributes
|
| - for (int i = 0; i < 20; ++i) {
|
| - for (int j = 0; j < 20; ++j) {
|
| - for (int k = 0; k < 20; ++k) {
|
| - Type* type1 = T.Random();
|
| - Type* type2 = T.Random();
|
| - Type* type3 = T.Random();
|
| - Type* function0 = T.Function0(type1, type2);
|
| - Type* function1 = T.Function1(type1, type2, type3);
|
| - Type* function2 = T.Function2(type1, type2, type3);
|
| - CHECK_EQ(0, function0->AsFunction()->Arity());
|
| - CHECK_EQ(1, function1->AsFunction()->Arity());
|
| - CHECK_EQ(2, function2->AsFunction()->Arity());
|
| - CheckEqual(type1, function0->AsFunction()->Result());
|
| - CheckEqual(type1, function1->AsFunction()->Result());
|
| - CheckEqual(type1, function2->AsFunction()->Result());
|
| - CheckEqual(type2, function0->AsFunction()->Receiver());
|
| - CheckEqual(type2, function1->AsFunction()->Receiver());
|
| - CheckEqual(T.Any, function2->AsFunction()->Receiver());
|
| - CheckEqual(type3, function1->AsFunction()->Parameter(0));
|
| - CheckEqual(type2, function2->AsFunction()->Parameter(0));
|
| - CheckEqual(type3, function2->AsFunction()->Parameter(1));
|
| - }
|
| - }
|
| - }
|
| -
|
| - // Functionality & Injectivity: Function(Ts1) = Function(Ts2) iff Ts1 = Ts2
|
| - for (int i = 0; i < 20; ++i) {
|
| - for (int j = 0; j < 20; ++j) {
|
| - for (int k = 0; k < 20; ++k) {
|
| - Type* type1 = T.Random();
|
| - Type* type2 = T.Random();
|
| - Type* type3 = T.Random();
|
| - Type* function01 = T.Function0(type1, type2);
|
| - Type* function02 = T.Function0(type1, type3);
|
| - Type* function03 = T.Function0(type3, type2);
|
| - Type* function11 = T.Function1(type1, type2, type2);
|
| - Type* function12 = T.Function1(type1, type2, type3);
|
| - Type* function21 = T.Function2(type1, type2, type2);
|
| - Type* function22 = T.Function2(type1, type2, type3);
|
| - Type* function23 = T.Function2(type1, type3, type2);
|
| - CHECK(Equal(function01, function02) == Equal(type2, type3));
|
| - CHECK(Equal(function01, function03) == Equal(type1, type3));
|
| - CHECK(Equal(function11, function12) == Equal(type2, type3));
|
| - CHECK(Equal(function21, function22) == Equal(type2, type3));
|
| - CHECK(Equal(function21, function23) == Equal(type2, type3));
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| void Of() {
|
| // Constant(V)->Is(Of(V))
|
| for (ValueIterator vt = T.values.begin(); vt != T.values.end(); ++vt) {
|
| @@ -686,8 +590,6 @@ struct Tests {
|
| (type1->IsConstant() && type2->IsRange()) ||
|
| (this->IsBitset(type1) && type2->IsRange()) ||
|
| (type1->IsRange() && type2->IsRange()) ||
|
| - (type1->IsArray() && type2->IsArray()) ||
|
| - (type1->IsFunction() && type2->IsFunction()) ||
|
| !type1->IsInhabited());
|
| }
|
| }
|
| @@ -728,32 +630,6 @@ struct Tests {
|
| }
|
| }
|
|
|
| - // Array(T1)->Is(Array(T2)) iff T1 = T2
|
| - for (TypeIterator it1 = T.types.begin(); it1 != T.types.end(); ++it1) {
|
| - for (TypeIterator it2 = T.types.begin(); it2 != T.types.end(); ++it2) {
|
| - Type* element1 = *it1;
|
| - Type* element2 = *it2;
|
| - Type* type1 = T.Array1(element1);
|
| - Type* type2 = T.Array1(element2);
|
| - CHECK(type1->Is(type2) == element1->Equals(element2));
|
| - }
|
| - }
|
| -
|
| - // Function0(S1, T1)->Is(Function0(S2, T2)) iff S1 = S2 and T1 = T2
|
| - for (TypeIterator i = T.types.begin(); i != T.types.end(); ++i) {
|
| - for (TypeIterator j = T.types.begin(); j != T.types.end(); ++j) {
|
| - Type* result1 = *i;
|
| - Type* receiver1 = *j;
|
| - Type* type1 = T.Function0(result1, receiver1);
|
| - Type* result2 = T.Random();
|
| - Type* receiver2 = T.Random();
|
| - Type* type2 = T.Function0(result2, receiver2);
|
| - CHECK(type1->Is(type2) ==
|
| - (result1->Equals(result2) && receiver1->Equals(receiver2)));
|
| - }
|
| - }
|
| -
|
| -
|
| // Range-specific subtyping
|
|
|
| // If IsInteger(v) then Constant(v)->Is(Range(v, v)).
|
| @@ -836,16 +712,6 @@ struct Tests {
|
| CheckUnordered(T.ObjectConstant1, T.ArrayConstant);
|
| CheckUnordered(T.UninitializedConstant, T.Null);
|
| CheckUnordered(T.UninitializedConstant, T.Undefined);
|
| -
|
| - CheckSub(T.NumberArray, T.OtherObject);
|
| - CheckSub(T.NumberArray, T.Receiver);
|
| - CheckSub(T.NumberArray, T.Object);
|
| - CheckUnordered(T.StringArray, T.AnyArray);
|
| -
|
| - CheckSub(T.MethodFunction, T.Object);
|
| - CheckSub(T.NumberFunction1, T.Object);
|
| - CheckUnordered(T.SignedFunction1, T.NumberFunction1);
|
| - CheckUnordered(T.NumberFunction1, T.NumberFunction2);
|
| }
|
|
|
| void Contains() {
|
| @@ -962,14 +828,6 @@ struct Tests {
|
| CheckOverlap(T.ObjectConstant1, T.ObjectConstant1);
|
| CheckDisjoint(T.ObjectConstant1, T.ObjectConstant2);
|
| CheckDisjoint(T.ObjectConstant1, T.ArrayConstant);
|
| - CheckOverlap(T.NumberArray, T.Receiver);
|
| - CheckDisjoint(T.NumberArray, T.AnyArray);
|
| - CheckDisjoint(T.NumberArray, T.StringArray);
|
| - CheckOverlap(T.MethodFunction, T.Object);
|
| - CheckDisjoint(T.SignedFunction1, T.NumberFunction1);
|
| - CheckDisjoint(T.SignedFunction1, T.NumberFunction2);
|
| - CheckDisjoint(T.NumberFunction1, T.NumberFunction2);
|
| - CheckDisjoint(T.SignedFunction1, T.MethodFunction);
|
| }
|
|
|
| void Union1() {
|
| @@ -1112,25 +970,6 @@ struct Tests {
|
| CheckDisjoint(
|
| T.Union(T.ObjectConstant1, T.ArrayConstant), T.Number);
|
|
|
| - // Bitset-array
|
| - CHECK(this->IsBitset(T.Union(T.AnyArray, T.Receiver)));
|
| - CHECK(this->IsUnion(T.Union(T.NumberArray, T.Number)));
|
| -
|
| - CheckEqual(T.Union(T.AnyArray, T.Receiver), T.Receiver);
|
| - CheckEqual(T.Union(T.AnyArray, T.OtherObject), T.OtherObject);
|
| - CheckUnordered(T.Union(T.AnyArray, T.String), T.Receiver);
|
| - CheckOverlap(T.Union(T.NumberArray, T.String), T.Object);
|
| - CheckDisjoint(T.Union(T.NumberArray, T.String), T.Number);
|
| -
|
| - // Bitset-function
|
| - CHECK(this->IsBitset(T.Union(T.MethodFunction, T.Object)));
|
| - CHECK(this->IsUnion(T.Union(T.NumberFunction1, T.Number)));
|
| -
|
| - CheckEqual(T.Union(T.MethodFunction, T.Object), T.Object);
|
| - CheckUnordered(T.Union(T.NumberFunction1, T.String), T.Object);
|
| - CheckOverlap(T.Union(T.NumberFunction2, T.String), T.Object);
|
| - CheckDisjoint(T.Union(T.NumberFunction1, T.String), T.Number);
|
| -
|
| // Bitset-constant
|
| CheckSub(
|
| T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number));
|
| @@ -1150,18 +989,6 @@ struct Tests {
|
| T.Union(
|
| T.ObjectConstant2, T.Union(T.ArrayConstant, T.ObjectConstant1)));
|
|
|
| - // Array-union
|
| - CheckEqual(
|
| - T.Union(T.AnyArray, T.Union(T.NumberArray, T.AnyArray)),
|
| - T.Union(T.AnyArray, T.NumberArray));
|
| - CheckSub(T.Union(T.AnyArray, T.NumberArray), T.OtherObject);
|
| -
|
| - // Function-union
|
| - CheckEqual(
|
| - T.Union(T.NumberFunction1, T.NumberFunction2),
|
| - T.Union(T.NumberFunction2, T.NumberFunction1));
|
| - CheckSub(T.Union(T.SignedFunction1, T.MethodFunction), T.Object);
|
| -
|
| // Union-union
|
| CheckEqual(
|
| T.Union(
|
| @@ -1228,33 +1055,6 @@ struct Tests {
|
| }
|
| }
|
|
|
| - // Bitset-array
|
| - CheckEqual(T.Intersect(T.NumberArray, T.Object), T.NumberArray);
|
| - CheckEqual(T.Semantic(T.Intersect(T.AnyArray, T.Proxy)), T.None);
|
| -
|
| - // Bitset-function
|
| - CheckEqual(T.Intersect(T.MethodFunction, T.Object), T.MethodFunction);
|
| - CheckEqual(T.Semantic(T.Intersect(T.NumberFunction1, T.Proxy)), T.None);
|
| -
|
| - // Array-union
|
| - CheckEqual(
|
| - T.Intersect(T.AnyArray, T.Union(T.Object, T.SmiConstant)),
|
| - T.AnyArray);
|
| - CHECK(
|
| - !T.Intersect(T.Union(T.AnyArray, T.ArrayConstant), T.NumberArray)
|
| - ->IsInhabited());
|
| -
|
| - // Function-union
|
| - CheckEqual(
|
| - T.Intersect(T.MethodFunction, T.Union(T.String, T.MethodFunction)),
|
| - T.MethodFunction);
|
| - CheckEqual(
|
| - T.Intersect(T.NumberFunction1, T.Union(T.Object, T.SmiConstant)),
|
| - T.NumberFunction1);
|
| - CHECK(
|
| - !T.Intersect(T.Union(T.MethodFunction, T.Name), T.NumberFunction2)
|
| - ->IsInhabited());
|
| -
|
| // Constant-union
|
| CheckEqual(
|
| T.Intersect(
|
| @@ -1360,10 +1160,6 @@ TEST(ConstantType) { Tests().Constant(); }
|
|
|
| TEST(RangeType) { Tests().Range(); }
|
|
|
| -TEST(ArrayType) { Tests().Array(); }
|
| -
|
| -TEST(FunctionType) { Tests().Function(); }
|
| -
|
| TEST(Of) { Tests().Of(); }
|
|
|
| TEST(MinMax) { Tests().MinMax(); }
|
|
|