Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 8780e30b2d0cf8d3c7765ec0c68824494b453871)
+++ src/Parser/ParseNode.h	(revision 33a7b6db7e7a3b3fa85ef51cb227fdc43223b1fd)
@@ -109,5 +109,5 @@
 	ExpressionNode * set_extension( bool exten ) { extension = exten; return this; }
 
-	void print( std::ostream &os, int indent = 0 ) const {}
+	virtual void print( std::ostream &os, int indent = 0 ) const override {}
 	void printOneLine( std::ostream &os, int indent = 0 ) const {}
 
@@ -191,5 +191,5 @@
 //##############################################################################
 
-class TypeData;
+struct TypeData;
 
 class DeclarationNode : public ParseNode {
@@ -275,6 +275,6 @@
 	}
 
-	void print( std::ostream &os, int indent = 0 ) const;
-	void printList( std::ostream &os, int indent = 0 ) const;
+	virtual void print( std::ostream &os, int indent = 0 ) const override;
+	virtual void printList( std::ostream &os, int indent = 0 ) const override;
 
 	Declaration * build() const;
@@ -349,6 +349,6 @@
 	virtual StatementNode * append_last_case( StatementNode * );
 
-	virtual void print( std::ostream &os, int indent = 0 ) {}
-	virtual void printList( std::ostream &os, int indent = 0 ) {}
+	virtual void print( std::ostream &os, int indent = 0 ) const override {}
+	virtual void printList( std::ostream &os, int indent = 0 ) const override {}
   private:
 	std::unique_ptr<Statement> stmt;
