Index: src/Common/Debug.h
===================================================================
--- src/Common/Debug.h	(revision 9dc31c106f1a43094de3a5a6e85d3125948b4ef9)
+++ src/Common/Debug.h	(revision c28afead3fc6f0b5c6246bbd5dfbe4841fcc3902)
@@ -37,5 +37,13 @@
 
 		std::cerr << "======" << label << "======" << std::endl;
-		CodeGen::generate( decls, std::cerr, true, true );
+		CodeGen::generate(
+			decls,
+			std::cerr,
+			true /* doIntrinsics */,
+			true /* pretty */,
+			false /* generateC */,
+			false /* lineMarks */,
+			true /* printTypeExpr */
+		);
 	#endif
 	} // dump
Index: src/Common/SemanticError.cc
===================================================================
--- src/Common/SemanticError.cc	(revision 9dc31c106f1a43094de3a5a6e85d3125948b4ef9)
+++ src/Common/SemanticError.cc	(revision c28afead3fc6f0b5c6246bbd5dfbe4841fcc3902)
@@ -68,10 +68,31 @@
 }
 
-void SemanticWarningImpl( CodeLocation location, Warning, const char * const fmt, ... ) {
-	va_list args;
-	va_start(args, fmt);
-	std::string msg = fmtToString( fmt, args );
-	va_end(args);
-	std::cerr << ErrorHelpers::bold() << location << ErrorHelpers::warning_str() << ErrorHelpers::reset_font() << msg << std::endl;
+void SemanticWarningImpl( CodeLocation location, Warning warning, const char * const fmt, ... ) {
+	Severity severity = WarningFormats[(int)warning].severity;
+	switch(severity) {
+	case Severity::Suppress :
+		break;
+	case Severity::Warn :
+		{
+			va_list args;
+			va_start(args, fmt);
+			std::string msg = fmtToString( fmt, args );
+			va_end(args);
+			std::cerr << ErrorHelpers::bold() << location << ErrorHelpers::warning_str() << ErrorHelpers::reset_font() << msg << std::endl;
+		}
+		break;
+	case Severity::Error :
+		{
+			va_list args;
+			va_start(args, fmt);
+			std::string msg = fmtToString( fmt, args );
+			va_end(args);
+			SemanticError(location, msg);
+		}
+		break;
+	case Severity::Critical :
+		assertf(false, "Critical errors not implemented yet");
+		break;
+	}
 }
 
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision 9dc31c106f1a43094de3a5a6e85d3125948b4ef9)
+++ src/Common/SemanticError.h	(revision c28afead3fc6f0b5c6246bbd5dfbe4841fcc3902)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr 18 16:28:16 2018
-// Update Count     : 18
+// Last Modified On : Thu Apr 19 17:52:03 2018
+// Update Count     : 19
 //
 
@@ -36,8 +36,21 @@
 // Warnings
 
-constexpr const char * const WarningFormats[] = {
-	"self assignment of expression: %s",
-	"rvalue to reference conversion of rvalue: %s",
-	"questionable use of type qualifier %s with %s",
+enum class Severity {
+	Suppress,
+	Warn,
+	Error,
+	Critical
+};
+
+struct WarningData {
+	const char * const name;
+	const char * const message;
+	mutable Severity severity;
+};
+
+constexpr const WarningData WarningFormats[] = {
+	{"self-assign"         , "self assignment of expression: %s"           , Severity::Warn},
+	{"reference-conversion", "rvalue to reference conversion of rvalue: %s", Severity::Warn},
+	{"qualifiers-zero_t-one_t", "questionable use of type qualifier %s with %s", Severity::Warn},
 };
 
@@ -54,6 +67,5 @@
 );
 
-// ## used here to allow empty __VA_ARGS__
-#define SemanticWarning(loc, id, ...) SemanticWarningImpl(loc, id, WarningFormats[(int)id], ## __VA_ARGS__)
+#define SemanticWarning(loc, id, ...) SemanticWarningImpl(loc, id, WarningFormats[(int)id].message, __VA_ARGS__)
 
 void SemanticWarningImpl (CodeLocation loc, Warning warn, const char * const fmt, ...) __attribute__((format(printf, 3, 4)));
