summaryrefslogtreecommitdiff
path: root/test/gtest
diff options
context:
space:
mode:
Diffstat (limited to 'test/gtest')
-rw-r--r--test/gtest/possible-contents.cpp13
-rw-r--r--test/gtest/type-builder.cpp108
2 files changed, 53 insertions, 68 deletions
diff --git a/test/gtest/possible-contents.cpp b/test/gtest/possible-contents.cpp
index 1092a825b..1838ad3ab 100644
--- a/test/gtest/possible-contents.cpp
+++ b/test/gtest/possible-contents.cpp
@@ -539,14 +539,11 @@ TEST_F(PossibleContentsTest, TestStructCones) {
*/
TypeBuilder builder(5);
builder.createRecGroup(0, 5);
- builder.setHeapType(0, Struct(FieldList{}));
- builder.setHeapType(1, Struct(FieldList{}));
- builder.setHeapType(2, Struct(FieldList{}));
- builder.setHeapType(3, Struct(FieldList{}));
- builder.setHeapType(4, Struct(FieldList{}));
- builder.setSubType(1, builder.getTempHeapType(0));
- builder.setSubType(2, builder.getTempHeapType(0));
- builder.setSubType(3, builder.getTempHeapType(2));
+ builder[0].setOpen() = Struct(FieldList{});
+ builder[1].setOpen().subTypeOf(builder[0]) = Struct(FieldList{});
+ builder[2].setOpen().subTypeOf(builder[0]) = Struct(FieldList{});
+ builder[3].setOpen().subTypeOf(builder[2]) = Struct(FieldList{});
+ builder[4].setOpen() = Struct(FieldList{});
auto result = builder.build();
ASSERT_TRUE(result);
auto types = *result;
diff --git a/test/gtest/type-builder.cpp b/test/gtest/type-builder.cpp
index d64d94699..0184eb074 100644
--- a/test/gtest/type-builder.cpp
+++ b/test/gtest/type-builder.cpp
@@ -261,7 +261,7 @@ TEST_F(TypeTest, InvalidFinalSupertype) {
TypeBuilder builder(2);
builder[0] = Struct{};
builder[1] = Struct{};
- builder[0].setFinal();
+ builder[0].setOpen(false);
builder[1].subTypeOf(builder[0]);
auto result = builder.build();
@@ -426,19 +426,16 @@ TEST_F(TypeTest, CanonicalizeSelfReferences) {
TEST_F(TypeTest, CanonicalizeSupertypes) {
TypeBuilder builder(6);
- builder[0] = Struct{};
- builder[1] = Struct{};
+ builder[0].setOpen() = Struct{};
+ builder[1].setOpen() = Struct{};
// Type with a supertype
- builder[2] = Struct{};
- builder[2].subTypeOf(builder[0]);
+ builder[2].setOpen().subTypeOf(builder[0]) = Struct{};
// Type with the same supertype after canonicalization.
- builder[3] = Struct{};
- builder[3].subTypeOf(builder[1]);
+ builder[3].setOpen().subTypeOf(builder[1]) = Struct{};
// Type with a different supertype
- builder[4] = Struct{};
- builder[4].subTypeOf(builder[2]);
+ builder[4].setOpen().subTypeOf(builder[2]) = Struct{};
// Type with no supertype
- builder[5] = Struct{};
+ builder[5].setOpen() = Struct{};
auto result = builder.build();
ASSERT_TRUE(result);
@@ -455,16 +452,15 @@ TEST_F(TypeTest, CanonicalizeFinal) {
// Types are different if their finality flag is different.
TypeBuilder builder(2);
builder[0] = Struct{};
- builder[1] = Struct{};
- builder[0].setFinal();
+ builder[1].setOpen() = Struct{};
auto result = builder.build();
ASSERT_TRUE(result);
auto built = *result;
EXPECT_NE(built[0], built[1]);
- EXPECT_TRUE(built[0].isFinal());
- EXPECT_FALSE(built[1].isFinal());
+ EXPECT_TRUE(!built[0].isOpen());
+ EXPECT_FALSE(!built[1].isOpen());
}
TEST_F(TypeTest, HeapTypeConstructors) {
@@ -500,21 +496,21 @@ TEST_F(TypeTest, CanonicalizeTypesBeforeSubtyping) {
TypeBuilder builder(6);
// A rec group
builder.createRecGroup(0, 2);
- builder[0] = Struct{};
- builder[1] = Struct{};
+ builder[0].setOpen() = Struct{};
+ builder[1].setOpen() = Struct{};
builder[1].subTypeOf(builder[0]);
// The same rec group again
builder.createRecGroup(2, 2);
- builder[2] = Struct{};
- builder[3] = Struct{};
+ builder[2].setOpen() = Struct{};
+ builder[3].setOpen() = Struct{};
builder[3].subTypeOf(builder[2]);
// This subtyping only validates if the previous two groups are deduplicated
// before checking subtype validity.
- builder[4] =
+ builder[4].setOpen() =
Struct({Field(builder.getTempRefType(builder[0], Nullable), Immutable)});
- builder[5] =
+ builder[5].setOpen() =
Struct({Field(builder.getTempRefType(builder[3], Nullable), Immutable)});
builder[5].subTypeOf(builder[4]);
@@ -754,9 +750,8 @@ TEST_F(TypeTest, TestHeapTypeRelations) {
{
// Immutable array fields are covariant.
TypeBuilder builder(2);
- builder[0] = Array(Field(anyref, Immutable));
- builder[1] = Array(Field(eqref, Immutable));
- builder[1].subTypeOf(builder[0]);
+ builder[0].setOpen() = Array(Field(anyref, Immutable));
+ builder[1].setOpen().subTypeOf(builder[0]) = Array(Field(eqref, Immutable));
auto results = builder.build();
ASSERT_TRUE(results);
auto built = *results;
@@ -766,9 +761,9 @@ TEST_F(TypeTest, TestHeapTypeRelations) {
{
// Depth subtyping
TypeBuilder builder(2);
- builder[0] = Struct({Field(anyref, Immutable)});
- builder[1] = Struct({Field(eqref, Immutable)});
- builder[1].subTypeOf(builder[0]);
+ builder[0].setOpen() = Struct({Field(anyref, Immutable)});
+ builder[1].setOpen().subTypeOf(builder[0]) =
+ Struct({Field(eqref, Immutable)});
auto results = builder.build();
ASSERT_TRUE(results);
auto built = *results;
@@ -778,9 +773,9 @@ TEST_F(TypeTest, TestHeapTypeRelations) {
{
// Width subtyping
TypeBuilder builder(2);
- builder[0] = Struct({Field(anyref, Immutable)});
- builder[1] = Struct({Field(anyref, Immutable), Field(anyref, Immutable)});
- builder[1].subTypeOf(builder[0]);
+ builder[0].setOpen() = Struct({Field(anyref, Immutable)});
+ builder[1].setOpen().subTypeOf(builder[0]) =
+ Struct({Field(anyref, Immutable), Field(anyref, Immutable)});
auto results = builder.build();
ASSERT_TRUE(results);
auto built = *results;
@@ -792,12 +787,12 @@ TEST_F(TypeTest, TestHeapTypeRelations) {
TypeBuilder builder(4);
auto ref0 = builder.getTempRefType(builder[0], Nullable);
auto ref1 = builder.getTempRefType(builder[1], Nullable);
- builder[0] = Struct({Field(anyref, Immutable)});
- builder[1] = Struct({Field(eqref, Immutable)});
- builder[2] = Struct({Field(ref0, Immutable)});
- builder[3] = Struct({Field(ref1, Immutable)});
- builder[1].subTypeOf(builder[0]);
- builder[3].subTypeOf(builder[2]);
+ builder[0].setOpen() = Struct({Field(anyref, Immutable)});
+ builder[1].setOpen().subTypeOf(builder[0]) =
+ Struct({Field(eqref, Immutable)});
+ builder[2].setOpen() = Struct({Field(ref0, Immutable)});
+ builder[3].setOpen().subTypeOf(builder[2]) =
+ Struct({Field(ref1, Immutable)});
auto results = builder.build();
ASSERT_TRUE(results);
auto built = *results;
@@ -809,9 +804,9 @@ TEST_F(TypeTest, TestHeapTypeRelations) {
TypeBuilder builder(2);
auto ref0 = builder.getTempRefType(builder[0], Nullable);
auto ref1 = builder.getTempRefType(builder[1], Nullable);
- builder[0] = Struct({Field(ref0, Immutable)});
- builder[1] = Struct({Field(ref1, Immutable)});
- builder[1].subTypeOf(builder[0]);
+ builder[0].setOpen() = Struct({Field(ref0, Immutable)});
+ builder[1].setOpen().subTypeOf(builder[0]) =
+ Struct({Field(ref1, Immutable)});
auto results = builder.build();
ASSERT_TRUE(results);
auto built = *results;
@@ -868,8 +863,8 @@ TEST_F(TypeTest, TestSubTypes) {
// Build type types, the second of which is a subtype.
TypeBuilder builder(2);
- builder[0] = Struct({Field(anyref, Immutable)});
- builder[1] = Struct({Field(eqref, Immutable)});
+ builder[0].setOpen() = Struct({Field(anyref, Immutable)});
+ builder[1].setOpen() = Struct({Field(eqref, Immutable)});
builder[1].subTypeOf(builder[0]);
auto result = builder.build();
@@ -902,7 +897,7 @@ TEST_F(TypeTest, TestExistingSuperType) {
Type A1;
{
TypeBuilder builder(1);
- builder[0] = Struct();
+ builder[0].setOpen() = Struct();
auto result = builder.build();
ASSERT_TRUE(result);
auto built = *result;
@@ -913,7 +908,7 @@ TEST_F(TypeTest, TestExistingSuperType) {
Type A2;
{
TypeBuilder builder(1);
- builder[0] = Struct();
+ builder[0].setOpen() = Struct();
auto result = builder.build();
ASSERT_TRUE(result);
auto built = *result;
@@ -924,8 +919,7 @@ TEST_F(TypeTest, TestExistingSuperType) {
Type B1;
{
TypeBuilder builder(1);
- builder[0] = Struct();
- builder.setSubType(0, A1.getHeapType());
+ builder[0].setOpen().subTypeOf(A1.getHeapType()) = Struct();
auto result = builder.build();
ASSERT_TRUE(result);
auto built = *result;
@@ -936,8 +930,7 @@ TEST_F(TypeTest, TestExistingSuperType) {
Type B2;
{
TypeBuilder builder(1);
- builder[0] = Struct();
- builder.setSubType(0, A2.getHeapType());
+ builder[0].setOpen().subTypeOf(A2.getHeapType()) = Struct();
auto result = builder.build();
ASSERT_TRUE(result);
auto built = *result;
@@ -959,9 +952,8 @@ TEST_F(TypeTest, TestMaxStructDepths) {
HeapType A, B;
{
TypeBuilder builder(2);
- builder[0] = Struct();
- builder[1] = Struct();
- builder.setSubType(1, builder.getTempHeapType(0));
+ builder[0].setOpen() = Struct();
+ builder[1].setOpen().subTypeOf(builder[0]) = Struct();
auto result = builder.build();
ASSERT_TRUE(result);
auto built = *result;
@@ -1004,10 +996,9 @@ TEST_F(TypeTest, TestDepth) {
HeapType A, B, C;
{
TypeBuilder builder(3);
- builder[0] = Struct();
- builder[1] = Struct();
- builder[2] = Array(Field(Type::i32, Immutable));
- builder.setSubType(1, builder.getTempHeapType(0));
+ builder[0].setOpen() = Struct();
+ builder[1].setOpen().subTypeOf(builder[0]) = Struct();
+ builder[2].setOpen() = Array(Field(Type::i32, Immutable));
auto result = builder.build();
ASSERT_TRUE(result);
auto built = *result;
@@ -1054,13 +1045,10 @@ TEST_F(TypeTest, TestIterSubTypes) {
HeapType A, B, C, D;
{
TypeBuilder builder(4);
- builder[0] = Struct();
- builder[1] = Struct();
- builder[2] = Struct();
- builder[3] = Struct();
- builder.setSubType(1, builder.getTempHeapType(0));
- builder.setSubType(2, builder.getTempHeapType(0));
- builder.setSubType(3, builder.getTempHeapType(2));
+ builder[0].setOpen() = Struct();
+ builder[1].setOpen().subTypeOf(builder[0]) = Struct();
+ builder[2].setOpen().subTypeOf(builder[0]) = Struct();
+ builder[3].setOpen().subTypeOf(builder[2]) = Struct();
auto result = builder.build();
ASSERT_TRUE(result);
auto built = *result;