Index: test/cctest/test-types.cc |
diff --git a/test/cctest/test-types.cc b/test/cctest/test-types.cc |
index 59a8f0851a47e44e0539513d7e87da433ec84af2..97e4cef340778bf52184e16979faba262ef9c694 100644 |
--- a/test/cctest/test-types.cc |
+++ b/test/cctest/test-types.cc |
@@ -273,21 +273,26 @@ class Types { |
return Type::Constant(values[i], region_); |
} |
case 3: // array |
- return Type::Array(Fuzz(depth / 2), region_); |
+ TypeHandle element = Fuzz(depth / 2); |
+ return Type::Array(element, region_); |
case 4: |
case 5: |
case 6: { // function |
- TypeHandle type = Type::Function( |
- Fuzz(depth / 2), Fuzz(depth / 2), rand() % 3, region_); |
+ TypeHandle result = Fuzz(depth / 2); |
+ TypeHandle receiver = Fuzz(depth / 2); |
+ int arity = rng_.NextInt(3); |
+ TypeHandle type = Type::Function(result, receiver, arity, region_); |
for (int i = 0; i < type->AsFunction()->Arity(); ++i) { |
- type->AsFunction()->InitParameter(i, Fuzz(depth - 1)); |
+ TypeHandle parameter = Fuzz(depth - 1); |
+ type->AsFunction()->InitParameter(i, parameter); |
} |
} |
default: { // union |
int n = rng_.NextInt(10); |
TypeHandle type = None; |
for (int i = 0; i < n; ++i) { |
- type = Type::Union(type, Fuzz(depth - 1), region_); |
+ TypeHandle operand = Fuzz(depth - 1); |
+ type = Type::Union(type, operand, region_); |
} |
return type; |
} |