Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 4b0f9977dbaf2d66c3868617ef00f4cf9a136fa9)
+++ src/SynTree/Declaration.h	(revision 1ed841f7e049323e1d8acd9b17df225ae010f2a5)
@@ -167,9 +167,10 @@
 	std::list< DeclarationWithType* >& get_assertions() { return assertions; }
 
+	virtual std::string typeString() const = 0;
+
 	virtual NamedTypeDecl *clone() const = 0;
 	virtual void print( std::ostream &os, int indent = 0 ) const;
 	virtual void printShort( std::ostream &os, int indent = 0 ) const;
   protected:
-	virtual std::string typeString() const = 0;
   private:
 	Type *base;
@@ -202,9 +203,10 @@
 	TypeDecl * set_sized( bool newValue ) { sized = newValue; return this; }
 
+	virtual std::string typeString() const;
+
 	virtual TypeDecl *clone() const { return new TypeDecl( *this ); }
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual TypeDecl *acceptMutator( Mutator &m ) { return m.mutate( this ); }
   private:
-	virtual std::string typeString() const;
 	Kind kind;
 	bool sized;
@@ -217,9 +219,10 @@
 	TypedefDecl( const TypedefDecl &other ) : Parent( other ) {}
 
+	virtual std::string typeString() const;
+
 	virtual TypedefDecl *clone() const { return new TypedefDecl( *this ); }
 	virtual void accept( Visitor &v ) { v.visit( this ); }
 	virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
   private:
-	virtual std::string typeString() const;
 };
 
