Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 186fd864a423a60033d1f353374a4070a3294b18)
+++ src/SymTab/Validate.cc	(revision 2c57025b9dec0a2c5dae7c32ad6e1ac3ccf8f76e)
@@ -361,4 +361,16 @@
 	void Pass2::visit( TraitInstType *contextInst ) {
 		Parent::visit( contextInst );
+		if ( contextInst->get_name() == "sized" ) {
+			// "sized" is a special trait with no members - just flick the sized status on for the type variable
+			if ( contextInst->get_parameters().size() != 1 ) {
+				throw SemanticError( "incorrect number of context parameters: ", contextInst );
+			}
+			TypeExpr * param = safe_dynamic_cast< TypeExpr * > ( contextInst->get_parameters().front() );
+			TypeInstType * inst = safe_dynamic_cast< TypeInstType * > ( param->get_type() );
+			TypeDecl * decl = inst->get_baseType();
+			decl->set_sized( true );
+			// since "sized" is special, the next few steps don't apply
+			return;
+		}
 		TraitDecl *ctx = indexer->lookupTrait( contextInst->get_name() );
 		if ( ! ctx ) {
@@ -584,5 +596,5 @@
 
 		typedeclNames[ typeDecl->get_name() ] = typeDecl;
-		return typeDecl;
+		return Mutator::mutate( typeDecl );
 	}
 
