Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision ee3c93d9425378dba13f5e7407f9097ac9d1cbb8)
+++ src/SynTree/Statement.h	(revision 184557ed94d1cdbdc6fd685e497e5375f8968a96)
@@ -38,5 +38,4 @@
 
 	Statement( const std::list<Label> & labels = {} );
-	virtual ~Statement();
 
 	std::list<Label> & get_labels() { return labels; }
@@ -56,5 +55,4 @@
 	CompoundStmt( std::list<Statement *> stmts );
 	CompoundStmt( const CompoundStmt &other );
-	virtual ~CompoundStmt();
 
 	std::list<Statement*>& get_kids() { return kids; }
@@ -84,5 +82,4 @@
 	ExprStmt( Expression *expr );
 	ExprStmt( const ExprStmt &other );
-	virtual ~ExprStmt();
 
 	Expression *get_expr() { return expr; }
@@ -105,5 +102,4 @@
 	AsmStmt( bool voltile, Expression *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
 	AsmStmt( const AsmStmt &other );
-	virtual ~AsmStmt();
 
 	bool get_voltile() { return voltile; }
@@ -149,5 +145,4 @@
 			std::list<Statement *> initialization = std::list<Statement *>() );
 	IfStmt( const IfStmt &other );
-	virtual ~IfStmt();
 
 	std::list<Statement *> &get_initialization() { return initialization; }
@@ -172,5 +167,4 @@
 	SwitchStmt( Expression *condition, const std::list<Statement *> &statements );
 	SwitchStmt( const SwitchStmt &other );
-	virtual ~SwitchStmt();
 
 	Expression *get_condition() { return condition; }
@@ -194,5 +188,4 @@
 	CaseStmt( Expression *conditions, const std::list<Statement *> &stmts, bool isdef = false ) throw (SemanticErrorException);
 	CaseStmt( const CaseStmt &other );
-	virtual ~CaseStmt();
 
 	static CaseStmt * makeDefault( const std::list<Label> & labels = {}, std::list<Statement *> stmts = std::list<Statement *>() );
@@ -226,5 +219,4 @@
 	       Statement *body, std::list<Statement *> & initialization, bool isDoWhile = false );
 	WhileStmt( const WhileStmt &other );
-	virtual ~WhileStmt();
 
 	Expression *get_condition() { return condition; }
@@ -251,5 +243,4 @@
 	     Expression *condition = 0, Expression *increment = 0, Statement *body = 0 );
 	ForStmt( const ForStmt &other );
-	virtual ~ForStmt();
 
 	std::list<Statement *> &get_initialization() { return initialization; }
@@ -304,5 +295,4 @@
 	ReturnStmt( Expression *expr );
 	ReturnStmt( const ReturnStmt &other );
-	virtual ~ReturnStmt();
 
 	Expression *get_expr() { return expr; }
@@ -325,5 +315,4 @@
 	ThrowStmt( Kind kind, Expression * expr, Expression * target = nullptr );
 	ThrowStmt( const ThrowStmt &other );
-	virtual ~ThrowStmt();
 
 	Kind get_kind() { return kind; }
@@ -347,5 +336,4 @@
 	TryStmt( CompoundStmt *tryBlock, std::list<CatchStmt *> &handlers, FinallyStmt *finallyBlock = 0 );
 	TryStmt( const TryStmt &other );
-	virtual ~TryStmt();
 
 	CompoundStmt *get_block() const { return block; }
@@ -374,5 +362,4 @@
 	           Expression *cond, Statement *body );
 	CatchStmt( const CatchStmt &other );
-	virtual ~CatchStmt();
 
 	Kind get_kind() { return kind; }
@@ -396,5 +383,4 @@
 	FinallyStmt( CompoundStmt *block );
 	FinallyStmt( const FinallyStmt &other );
-	virtual ~FinallyStmt();
 
 	CompoundStmt *get_block() const { return block; }
@@ -423,5 +409,4 @@
 	WaitForStmt();
 	WaitForStmt( const WaitForStmt & );
-	virtual ~WaitForStmt();
 
 	std::vector<Clause> clauses;
@@ -452,5 +437,4 @@
 	WithStmt( const std::list< Expression * > & exprs, Statement * stmt );
 	WithStmt( const WithStmt & other );
-	virtual ~WithStmt();
 
 	virtual WithStmt * clone() const override { return new WithStmt( *this ); }
@@ -468,5 +452,4 @@
 	DeclStmt( Declaration *decl );
 	DeclStmt( const DeclStmt &other );
-	virtual ~DeclStmt();
 
 	Declaration *get_decl() const { return decl; }
@@ -490,5 +473,4 @@
 	ImplicitCtorDtorStmt( Statement * callStmt );
 	ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other );
-	virtual ~ImplicitCtorDtorStmt();
 
 	Statement *get_callStmt() const { return callStmt; }
