1.1 --- a/src/Types.cpp Sat Dec 22 19:48:43 2012 -0800
1.2 +++ b/src/Types.cpp Sat Dec 22 23:18:57 2012 -0800
1.3 @@ -55,8 +55,7 @@
1.4 return NULL;
1.5
1.6 type->kind_ = PRIMITIVE;
1.7 - type->name_ = NULL;
1.8 - type->primitive_ = prim;
1.9 + type->primitive_ = prim;
1.10 return type;
1.11 }
1.12
1.13 @@ -75,7 +74,6 @@
1.14 return NULL;
1.15
1.16 type->kind_ = ARRAY;
1.17 - type->name_ = NULL;
1.18 type->contained_ = contained;
1.19 type->elements_ = elements;
1.20 if (!contained->isArray())
1.21 @@ -95,7 +93,6 @@
1.22 assert(contained->isPrimitive());
1.23
1.24 type->kind_ = EXTERNAL_ARRAY;
1.25 - type->name_ = NULL;
1.26 type->contained_ = contained;
1.27 type->elements_ = DYNAMIC_ARRAY_SIZE;
1.28 type->levels_ = 1;
1.29 @@ -110,16 +107,15 @@
1.30 return NULL;
1.31
1.32 type->kind_ = REFERENCE;
1.33 - type->name_ = NULL;
1.34 type->const_ = false;
1.35 type->contained_ = contained;
1.36 return type;
1.37 }
1.38
1.39 -Type *
1.40 -Type::NewEnum(Zone *zone, Handle<String> name)
1.41 +EnumType *
1.42 +EnumType::New(Zone *zone, Handle<String> name)
1.43 {
1.44 - Local<Type> type(zone, Type::cast(zone->allocate(MapKind_Type, sizeof(Type), Heap::Tenure_Old)));
1.45 + Local<EnumType> type(zone, EnumType::cast(zone->allocate(MapKind_EnumType, sizeof(EnumType), Heap::Tenure_Old)));
1.46 if (!type)
1.47 return NULL;
1.48
1.49 @@ -138,7 +134,6 @@
1.50 return NULL;
1.51
1.52 type->kind_ = NATIVE;
1.53 - type->name_ = NULL;
1.54 type->contained_ = NULL;
1.55 type->fields_ = NULL;
1.56 type->newMap_ = NULL;
1.57 @@ -217,9 +212,9 @@
1.58 return NULL;
1.59
1.60 type->kind_ = STRUCT;
1.61 - type->name_ = name;
1.62 type->newMap_ = NULL;
1.63 type->fields_ = fields;
1.64 + type->name_ = name;
1.65
1.66 // Fill in field offsets.
1.67 StructureBufferBuilder builder;
1.68 @@ -259,17 +254,17 @@
1.69 }
1.70
1.71 FunctionType *
1.72 -FunctionType::New(Zone *zone, TokenKind token)
1.73 +FunctionType::New(Zone *zone, Handle<String> name, TokenKind token)
1.74 {
1.75 Local<FunctionType> type(zone, FunctionType::cast(zone->allocate(MapKind_FunctionType, sizeof(FunctionType), Heap::Tenure_Old)));
1.76 if (!type)
1.77 return NULL;
1.78
1.79 type->kind_ = FUNCTION;
1.80 - type->name_ = NULL;
1.81 type->parameters_ = NULL;
1.82 type->defaults_ = NULL;
1.83 type->returnType_ = NULL;
1.84 + type->name_ = name;
1.85 type->token_ = token;
1.86 return type;
1.87 }
1.88 @@ -284,8 +279,10 @@
1.89 return "function";
1.90 if (type->isVoid())
1.91 return "void";
1.92 - if (type->isEnum() || type->isStruct())
1.93 - return type->name()->chars();
1.94 + if (type->isEnum())
1.95 + return EnumType::cast(type)->name()->chars();
1.96 + if (type->isStruct())
1.97 + return StructType::cast(type)->name()->chars();
1.98 if (type->isReference())
1.99 type = ReferenceType::cast(type)->contained();
1.100 switch (type->primitive()) {