Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision 246c245850d55831cc2fd8e987ae1d76506c6fdd)
+++ src/Common/SemanticError.h	(revision 77bfc801f3cb89b3b5dcb4ce8808bf2332aeef24)
@@ -17,4 +17,5 @@
 
 #include "ErrorObjects.h"
+#include "AST/Node.hpp"
 #include <cstring>
 
Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision 246c245850d55831cc2fd8e987ae1d76506c6fdd)
+++ src/InitTweak/InitTweak.cc	(revision 77bfc801f3cb89b3b5dcb4ce8808bf2332aeef24)
@@ -437,5 +437,5 @@
 		// const ast::Expr * callArg( const CallExpr * call, unsigned int pos ) {
 		// 	if( pos >= call->args.size() ) {
-		// 		assertf( false, "getCallArg for argument that doesn't exist: (%u); %s.", 
+		// 		assertf( false, "getCallArg for argument that doesn't exist: (%u); %s.",
 		// 			pos, toString( call ).c_str() );
 		// 	}
@@ -467,5 +467,8 @@
 	}
 	const ast::Expr * getCallArg( const ast::Expr * call, unsigned pos ) {
-		assert(!"implemented; needs to build AST/Expr.cpp");
+		(void)call;
+		(void)pos;
+		#warning unimplemented; needs to build AST/Expr.cpp
+		assertf(false, "unimplemented; needs to build AST/Expr.cpp");
 		// if ( auto app = dynamic_cast< const ast::ApplicationExpr * >( call ) ) {
 		// 	return callArg( app, pos );
@@ -482,5 +485,5 @@
 		// 	return getCallArg( ctor->callExpr, pos );
 		// } else {
-		// 	assertf( false, "Unexpected expression type passed to getCallArg: %s", 
+		// 	assertf( false, "Unexpected expression type passed to getCallArg: %s",
 		// 		toString( call ).c_str() );
 		// }
@@ -548,5 +551,7 @@
 	}
 	const ast::Type* getPointerBase( const ast::Type* t ) {
-		assert(!"needs to build Type.cpp before inclusion");
+		(void)t;
+		#warning needs to build Type.cpp before inclusion
+		assertf(false, "needs to build Type.cpp before inclusion");
 		// if ( const auto * p = dynamic_cast< const ast::PointerType * >( t ) ) {
 		// 	return p->base;
Index: src/SynTree/Declaration.cc
===================================================================
--- src/SynTree/Declaration.cc	(revision 246c245850d55831cc2fd8e987ae1d76506c6fdd)
+++ src/SynTree/Declaration.cc	(revision 77bfc801f3cb89b3b5dcb4ce8808bf2332aeef24)
@@ -31,9 +31,9 @@
 
 Declaration::Declaration( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage )
-		: name( name ), linkage( linkage ), storageClasses( scs ), uniqueId( 0 ) {
+		: name( name ), linkage( linkage ), uniqueId( 0 ), storageClasses( scs ) {
 }
 
 Declaration::Declaration( const Declaration &other )
-	: BaseSyntaxNode( other ), name( other.name ), linkage( other.linkage ), extension( other.extension ), storageClasses( other.storageClasses ), uniqueId( other.uniqueId ) {
+	: BaseSyntaxNode( other ), name( other.name ), linkage( other.linkage ), extension( other.extension ), uniqueId( other.uniqueId ), storageClasses( other.storageClasses ) {
 }
 
Index: src/Tuples/TupleExpansion.cc
===================================================================
--- src/Tuples/TupleExpansion.cc	(revision 246c245850d55831cc2fd8e987ae1d76506c6fdd)
+++ src/Tuples/TupleExpansion.cc	(revision 77bfc801f3cb89b3b5dcb4ce8808bf2332aeef24)
@@ -320,11 +320,13 @@
 	}
 	const ast::Type * makeTupleType( const std::vector<ast::ptr<ast::Expr>> & exprs ) {
-		assert(!"implemented; needs Type.cpp in build");
+		(void) exprs;
+		#warning Not implemented; needs Type.cpp in build
+		assertf(false, "Not implemented; needs Type.cpp in build");
 		// // produce the TupleType which aggregates the types of the exprs
 		// std::vector<ast::ptr<ast::Type>> types;
-		// ast::CV::Qualifiers quals{ 
-		// 	ast::CV::Const | ast::CV::Volatile | ast::CV::Restrict | ast::CV::Lvalue | 
+		// ast::CV::Qualifiers quals{
+		// 	ast::CV::Const | ast::CV::Volatile | ast::CV::Restrict | ast::CV::Lvalue |
 		// 	ast::CV::Atomic | ast::CV::Mutex };
-		
+
 		// for ( const ast::Expr * expr : exprs ) {
 		// 	assert( expr->result );
Index: src/Tuples/Tuples.h
===================================================================
--- src/Tuples/Tuples.h	(revision 246c245850d55831cc2fd8e987ae1d76506c6fdd)
+++ src/Tuples/Tuples.h	(revision 77bfc801f3cb89b3b5dcb4ce8808bf2332aeef24)
@@ -29,7 +29,7 @@
 namespace Tuples {
 	// TupleAssignment.cc
-	void handleTupleAssignment( ResolvExpr::AlternativeFinder & currentFinder, UntypedExpr * assign, 
+	void handleTupleAssignment( ResolvExpr::AlternativeFinder & currentFinder, UntypedExpr * assign,
 		std::vector< ResolvExpr::AlternativeFinder >& args );
-	
+
 	// TupleExpansion.cc
 	/// expands z.[a, b.[x, y], c] into [z.a, z.b.x, z.b.y, z.c], inserting UniqueExprs as appropriate
@@ -48,4 +48,5 @@
 	/// returns a TypeInstType if `type` is a ttype, nullptr otherwise
 	TypeInstType * isTtype( Type * type );
+	const ast::TypeInstType * isTtype( const ast::Type * type );
 
 	/// returns true if the expression may contain side-effects.
