Index: src/ResolvExpr/AlternativePrinter.h
===================================================================
--- src/ResolvExpr/AlternativePrinter.h	(revision 89e6ffcdff36e5cf99ff1d6c8bde150e2fb05235)
+++ src/ResolvExpr/AlternativePrinter.h	(revision 62e5546cd62ceedcb0b33b24775b308bc35ad734)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// AlternativePrinter.h -- 
+// AlternativePrinter.h --
 //
 // Author           : Richard C. Bilson
@@ -23,8 +23,10 @@
 
 namespace ResolvExpr {
-	class AlternativePrinter : public SymTab::Indexer {
+	class AlternativePrinter final : public SymTab::Indexer {
 	  public:
 		AlternativePrinter( std::ostream &os );
-		virtual void visit( ExprStmt *exprStmt );
+
+		using SymTab::Indexer::visit;
+		virtual void visit( ExprStmt *exprStmt ) override;
 	  private:
 		std::ostream &os;
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 89e6ffcdff36e5cf99ff1d6c8bde150e2fb05235)
+++ src/ResolvExpr/Resolver.cc	(revision 62e5546cd62ceedcb0b33b24775b308bc35ad734)
@@ -32,30 +32,31 @@
 
 namespace ResolvExpr {
-	class Resolver : public SymTab::Indexer {
+	class Resolver final : public SymTab::Indexer {
 	  public:
-		Resolver() : SymTab::Indexer( false ), switchType( 0 ) {}
-
-		virtual void visit( FunctionDecl *functionDecl );
-		virtual void visit( ObjectDecl *functionDecl );
-		virtual void visit( TypeDecl *typeDecl );
-		virtual void visit( EnumDecl * enumDecl );
-
-		virtual void visit( ArrayType * at );
-		virtual void visit( PointerType * at );
-
-		virtual void visit( ExprStmt *exprStmt );
-		virtual void visit( AsmExpr *asmExpr );
-		virtual void visit( AsmStmt *asmStmt );
-		virtual void visit( IfStmt *ifStmt );
-		virtual void visit( WhileStmt *whileStmt );
-		virtual void visit( ForStmt *forStmt );
-		virtual void visit( SwitchStmt *switchStmt );
-		virtual void visit( CaseStmt *caseStmt );
-		virtual void visit( BranchStmt *branchStmt );
-		virtual void visit( ReturnStmt *returnStmt );
-
-		virtual void visit( SingleInit *singleInit );
-		virtual void visit( ListInit *listInit );
-		virtual void visit( ConstructorInit *ctorInit );
+		Resolver() : SymTab::Indexer( false ) {}
+
+		using SymTab::Indexer::visit;
+		virtual void visit( FunctionDecl *functionDecl ) override;
+		virtual void visit( ObjectDecl *functionDecl ) override;
+		virtual void visit( TypeDecl *typeDecl ) override;
+		virtual void visit( EnumDecl * enumDecl ) override;
+
+		virtual void visit( ArrayType * at ) override;
+		virtual void visit( PointerType * at ) override;
+
+		virtual void visit( ExprStmt *exprStmt ) override;
+		virtual void visit( AsmExpr *asmExpr ) override;
+		virtual void visit( AsmStmt *asmStmt ) override;
+		virtual void visit( IfStmt *ifStmt ) override;
+		virtual void visit( WhileStmt *whileStmt ) override;
+		virtual void visit( ForStmt *forStmt ) override;
+		virtual void visit( SwitchStmt *switchStmt ) override;
+		virtual void visit( CaseStmt *caseStmt ) override;
+		virtual void visit( BranchStmt *branchStmt ) override;
+		virtual void visit( ReturnStmt *returnStmt ) override;
+
+		virtual void visit( SingleInit *singleInit ) override;
+		virtual void visit( ListInit *listInit ) override;
+		virtual void visit( ConstructorInit *ctorInit ) override;
 	  private:
   	typedef std::list< Initializer * >::iterator InitIterator;
@@ -69,5 +70,4 @@
 		std::list< Type * > functionReturn;
 		Type *initContext;
-		Type *switchType;
 		bool inEnumDecl = false;
 	};
Index: src/ResolvExpr/TypeMap.h
===================================================================
--- src/ResolvExpr/TypeMap.h	(revision 89e6ffcdff36e5cf99ff1d6c8bde150e2fb05235)
+++ src/ResolvExpr/TypeMap.h	(revision 62e5546cd62ceedcb0b33b24775b308bc35ad734)
@@ -38,5 +38,5 @@
 		typedef typename std::map< std::string, Value* > ValueMap;
 		typedef typename ValueMap::iterator ValueMapIterator;
-		
+
 		Value *voidValue;                                     ///< Value for void type
 		Value *basicValue[BasicType::NUMBER_OF_BASIC_TYPES];  ///< Values for basic types
@@ -54,5 +54,5 @@
 			/// One scope of map rollbacks
 			typedef std::vector< std::pair< ValueMapIterator, Value* > > MapScope;
-			
+
 			PointerScope pointers;  ///< Value pointers to roll back to their previous state
 			MapScope mapNodes;      ///< Value map iterators to roll back to their previous state
@@ -68,5 +68,5 @@
 
 		std::vector< Rollback > scopes;  ///< Scope rollback information
-		
+
 		struct Lookup : public Visitor {
 			Lookup( TypeMap<Value> &typeMap ) : typeMap( typeMap ), found( 0 ), toInsert( 0 ) {}
@@ -87,5 +87,5 @@
 				return found;
 			}
-			
+
 			void findAndReplace( Value *&loc ) {
 				found = loc;
@@ -109,13 +109,13 @@
 				}
 			}
-			
+
 			virtual void visit( VoidType *voidType ) {
 				findAndReplace( typeMap.voidValue );
 			}
-			
+
 			virtual void visit( BasicType *basicType ) {
 				findAndReplace( typeMap.basicValue[basicType->get_kind()] );
 			}
-			
+
 			virtual void visit( PointerType *pointerType ) {
 				// NOTE This is one of the places where the apporoximation of the resolver is (deliberately) poor;
@@ -129,5 +129,5 @@
 				}
 			}
-			
+
 			virtual void visit( ArrayType *arrayType ) {
 				if ( dynamic_cast< FunctionType* >( arrayType->get_base() ) ) {
@@ -137,17 +137,17 @@
 				}
 			}
-			
+
 			virtual void visit( FunctionType *functionType ) {
 				findAndReplace( typeMap.functionPointerValue );
 			}
-			
+
 			virtual void visit( StructInstType *structType ) {
 				findAndReplace( typeMap.structValue, structType->get_name() );
 			}
-			
+
 			virtual void visit( UnionInstType *unionType ) {
 				findAndReplace( typeMap.unionValue, unionType->get_name() );
 			}
-			
+
 			virtual void visit( EnumInstType *enumType ) {
 				findAndReplace( typeMap.enumValue, enumType->get_name() );
@@ -157,7 +157,7 @@
 			Value *found;             ///< Value found (NULL if none yet)
 			Value *toInsert;          ///< Value to insert (NULL if a lookup)
-		};  // class Lookup
-		friend class Lookup;
-		
+		};  // struct Lookup
+		friend struct Lookup;
+
 	public:
 		/// Starts a new scope
@@ -180,5 +180,5 @@
 			scopes.pop_back();
 		}
-		
+
 		TypeMap() : voidValue( 0 ), pointerValue( 0 ), voidPointerValue( 0 ), functionPointerValue( 0 ), structValue(), unionValue(), enumValue(), scopes() {
 			beginScope();
@@ -199,5 +199,5 @@
 			return searcher.find( key );
 		}
-		
+
 	}; // class TypeMap
 
Index: src/ResolvExpr/Unify.cc
===================================================================
--- src/ResolvExpr/Unify.cc	(revision 89e6ffcdff36e5cf99ff1d6c8bde150e2fb05235)
+++ src/ResolvExpr/Unify.cc	(revision 62e5546cd62ceedcb0b33b24775b308bc35ad734)
@@ -73,5 +73,4 @@
 		const OpenVarSet &openVars;
 		WidenMode widenMode;
-		Type *commonType;
 		const SymTab::Indexer &indexer;
 	};
