Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 68195a628dc9339c2a4a40f3436aa4bfbcbbefb9)
+++ src/SynTree/Declaration.h	(revision 62194cbf579b5084c2ebfafd9003eb7b9cb0fa7b)
@@ -200,5 +200,5 @@
 	typedef NamedTypeDecl Parent;
   public:
-	enum Kind { Any, Dtype, Ftype, Ttype };
+	enum Kind { Dtype, Ftype, Ttype };
 
 	Type * init;
@@ -216,5 +216,5 @@
 	};
 
-	TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, Type * init = nullptr );
+	TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, bool sized, Type * init = nullptr );
 	TypeDecl( const TypeDecl &other );
 	virtual ~TypeDecl();
@@ -225,5 +225,5 @@
 	TypeDecl * set_init( Type * newValue ) { init = newValue; return this; }
 
-	bool isComplete() const { return kind == Any || sized; }
+	bool isComplete() const { return sized; }
 	bool get_sized() const { return sized; }
 	TypeDecl * set_sized( bool newValue ) { sized = newValue; return this; }
Index: src/SynTree/TypeDecl.cc
===================================================================
--- src/SynTree/TypeDecl.cc	(revision 68195a628dc9339c2a4a40f3436aa4bfbcbbefb9)
+++ src/SynTree/TypeDecl.cc	(revision 62194cbf579b5084c2ebfafd9003eb7b9cb0fa7b)
@@ -21,5 +21,5 @@
 #include "Type.h"            // for Type, Type::StorageClasses
 
-TypeDecl::TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, Type * init ) : Parent( name, scs, type ), init( init ), sized( kind == Any || kind == Ttype ), kind( kind ) {
+TypeDecl::TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, bool sized, Type * init ) : Parent( name, scs, type ), init( init ), sized( kind == Ttype || sized ), kind( kind ) {
 }
 
@@ -32,10 +32,14 @@
 
 std::string TypeDecl::typeString() const {
-	static const std::string kindNames[] = { "type", "incomplete type", "function type", "tuple type" };
-	return (kind != Any && isComplete() ? "sized " : "") + kindNames[ kind ];
+	static const std::string kindNames[] = { "object type", "function type", "tuple type" };
+	assertf( sizeof(kindNames)/sizeof(kindNames[0]) == DeclarationNode::NoTypeClass-1, "typeString: kindNames is out of sync." );
+	assertf( kind < sizeof(kindNames)/sizeof(kindNames[0]), "TypeDecl's kind is out of bounds." );
+	return (isComplete() ? "sized " : "") + kindNames[ kind ];
 }
 
 std::string TypeDecl::genTypeString() const {
-	static const std::string kindNames[] = { "otype", "dtype", "ftype", "ttype" };
+	static const std::string kindNames[] = { "dtype", "ftype", "ttype" };
+	assertf( sizeof(kindNames)/sizeof(kindNames[0]) == DeclarationNode::NoTypeClass-1, "genTypeString: kindNames is out of sync." );
+	assertf( kind < sizeof(kindNames)/sizeof(kindNames[0]), "TypeDecl's kind is out of bounds." );
 	return kindNames[ kind ];
 }
