Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 982832e24b58f99cf8d892fbb03bfd2c5cd57b15)
+++ src/SynTree/Declaration.h	(revision d67cdb749954789d84d7a8bbabc0ec601347a7bb)
@@ -62,7 +62,7 @@
 	void fixUniqueId( void );
 	virtual Declaration *clone() const = 0;
-	virtual void accept( Visitor &v ) = 0;
+	virtual void accept( Visitor &v ) override = 0;
 	virtual Declaration *acceptMutator( Mutator &m ) = 0;
-	virtual void print( std::ostream &os, int indent = 0 ) const = 0;
+	virtual void print( std::ostream &os, int indent = 0 ) const override = 0;
 	virtual void printShort( std::ostream &os, int indent = 0 ) const = 0;
 
@@ -106,6 +106,6 @@
 	//void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; }
 
-	virtual DeclarationWithType *clone() const = 0;
-	virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;
+	virtual DeclarationWithType *clone() const override = 0;
+	virtual DeclarationWithType *acceptMutator( Mutator &m )  override = 0;
 
 	virtual Type * get_type() const = 0;
@@ -128,6 +128,6 @@
 	virtual ~ObjectDecl();
 
-	virtual Type * get_type() const { return type; }
-	virtual void set_type(Type *newType) { type = newType; }
+	virtual Type * get_type() const override { return type; }
+	virtual void set_type(Type *newType) override { type = newType; }
 
 	Initializer *get_init() const { return init; }
@@ -139,9 +139,9 @@
 	static ObjectDecl * newObject( const std::string & name, Type * type, Initializer * init );
 
-	virtual ObjectDecl *clone() const { return new ObjectDecl( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual DeclarationWithType *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 ) const;
-	virtual void printShort( std::ostream &os, int indent = 0 ) const;
+	virtual ObjectDecl *clone() const override { return new ObjectDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual DeclarationWithType *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream &os, int indent = 0 ) const override;
+	virtual void printShort( std::ostream &os, int indent = 0 ) const override;
 };
 
@@ -157,6 +157,6 @@
 	virtual ~FunctionDecl();
 
-	Type * get_type() const { return type; }
-	virtual void set_type(Type * t) { type = strict_dynamic_cast< FunctionType* >( t ); }
+	virtual Type * get_type() const override { return type; }
+	virtual void set_type(Type * t) override { type = strict_dynamic_cast< FunctionType* >( t ); }
 
 	FunctionType * get_functionType() const { return type; }
@@ -165,9 +165,9 @@
 	void set_statements( CompoundStmt *newValue ) { statements = newValue; }
 
-	virtual FunctionDecl *clone() const { return new FunctionDecl( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual DeclarationWithType *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 ) const;
-	virtual void printShort( std::ostream &os, int indent = 0 ) const;
+	virtual FunctionDecl *clone() const override { return new FunctionDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual DeclarationWithType *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream &os, int indent = 0 ) const override;
+	virtual void printShort( std::ostream &os, int indent = 0 ) const override;
 };
 
@@ -190,7 +190,7 @@
 	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;
+	virtual NamedTypeDecl *clone() const override = 0;
+	virtual void print( std::ostream &os, int indent = 0 ) const override;
+	virtual void printShort( std::ostream &os, int indent = 0 ) const override;
 };
 
@@ -227,11 +227,11 @@
 	TypeDecl * set_sized( bool newValue ) { sized = newValue; return this; }
 
-	virtual std::string typeString() const;
+	virtual std::string typeString() const override;
 	virtual std::string genTypeString() const;
 
-	virtual TypeDecl *clone() const { return new TypeDecl( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 ) const;
+	virtual TypeDecl *clone() const override { return new TypeDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream &os, int indent = 0 ) const override;
 
   private:
@@ -245,9 +245,9 @@
 	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 ); }
+	virtual std::string typeString() const override;
+
+	virtual TypedefDecl *clone() const override { return new TypedefDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
   private:
 };
@@ -274,6 +274,6 @@
 	AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; }
 
-	virtual void print( std::ostream &os, int indent = 0 ) const;
-	virtual void printShort( std::ostream &os, int indent = 0 ) const;
+	virtual void print( std::ostream &os, int indent = 0 ) const override;
+	virtual void printShort( std::ostream &os, int indent = 0 ) const override;
   protected:
 	virtual std::string typeString() const = 0;
@@ -290,10 +290,10 @@
 	bool is_thread() { return kind == DeclarationNode::Thread; }
 
-	virtual StructDecl *clone() const { return new StructDecl( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
+	virtual StructDecl *clone() const override { return new StructDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
   private:
 	DeclarationNode::Aggregate kind;
-	virtual std::string typeString() const;
+	virtual std::string typeString() const override;
 };
 
@@ -304,9 +304,9 @@
 	UnionDecl( const UnionDecl &other ) : Parent( other ) {}
 
-	virtual UnionDecl *clone() const { return new UnionDecl( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-  private:
-	virtual std::string typeString() const;
+	virtual UnionDecl *clone() const override { return new UnionDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
+  private:
+	virtual std::string typeString() const override;
 };
 
@@ -317,9 +317,9 @@
 	EnumDecl( const EnumDecl &other ) : Parent( other ) {}
 
-	virtual EnumDecl *clone() const { return new EnumDecl( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-  private:
-	virtual std::string typeString() const;
+	virtual EnumDecl *clone() const override { return new EnumDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
+  private:
+	virtual std::string typeString() const override;
 };
 
@@ -332,9 +332,9 @@
 	TraitDecl( const TraitDecl &other ) : Parent( other ) {}
 
-	virtual TraitDecl *clone() const { return new TraitDecl( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-  private:
-	virtual std::string typeString() const;
+	virtual TraitDecl *clone() const override { return new TraitDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual Declaration *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
+  private:
+	virtual std::string typeString() const override;
 };
 
@@ -350,12 +350,11 @@
 	void set_stmt( AsmStmt *newValue ) { stmt = newValue; }
 
-	virtual AsmDecl *clone() const { return new AsmDecl( *this ); }
-	virtual void accept( Visitor &v ) { v.visit( this ); }
-	virtual AsmDecl *acceptMutator( Mutator &m ) { return m.mutate( this ); }
-	virtual void print( std::ostream &os, int indent = 0 ) const;
-	virtual void printShort( std::ostream &os, int indent = 0 ) const;
-};
-
-std::ostream & operator<<( std::ostream & out, const Declaration * decl );
+	virtual AsmDecl *clone() const override { return new AsmDecl( *this ); }
+	virtual void accept( Visitor &v ) override { v.visit( this ); }
+	virtual AsmDecl *acceptMutator( Mutator &m )  override { return m.mutate( this ); }
+	virtual void print( std::ostream &os, int indent = 0 ) const override;
+	virtual void printShort( std::ostream &os, int indent = 0 ) const override;
+};
+
 std::ostream & operator<<( std::ostream & os, const TypeDecl::Data & data );
 
