Index: src/SynTree/ReferenceToType.cc
===================================================================
--- src/SynTree/ReferenceToType.cc	(revision bb9d8e8868e5e7d1abbe4d4374fe3474c6ddc850)
+++ src/SynTree/ReferenceToType.cc	(revision 6137fbb8754ddae70e06461364ee568113aaa3e3)
@@ -129,4 +129,15 @@
 bool EnumInstType::isComplete() const { return baseEnum ? baseEnum->has_body() : false; }
 
+void EnumInstType::print( std::ostream &os, Indenter indent ) const {
+	using std::endl;
+
+	if ( baseEnum == nullptr ) ReferenceToType::print( os, indent );
+	else {
+		Type::print( os, indent );
+		os << "instance of " << typeString() << " " << name << " with body " << baseEnum->has_body() << " ";
+	} // if
+}
+
+
 std::string TraitInstType::typeString() const { return "trait"; }
 
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision bb9d8e8868e5e7d1abbe4d4374fe3474c6ddc850)
+++ src/SynTree/Type.h	(revision 6137fbb8754ddae70e06461364ee568113aaa3e3)
@@ -466,4 +466,6 @@
 	virtual void accept( Visitor & v ) override { v.visit( this ); }
 	virtual Type *acceptMutator( Mutator & m ) override { return m.mutate( this ); }
+
+	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
   private:
 	virtual std::string typeString() const override;
