Index: src/Common/SemanticError.cc
===================================================================
--- src/Common/SemanticError.cc	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/Common/SemanticError.cc	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -22,17 +22,24 @@
 #include "SemanticError.h"
 
+#include <unistd.h>
+
+inline const std::string& error_str() {
+	static std::string str = isatty( fileno(stderr) ) ? "\e[31merror:\e[39m " : "error: ";
+	return str;
+}
+
 SemanticError::SemanticError() {
 }
 
 SemanticError::SemanticError( std::string error ) {
-  append( error );
+	append( error );
 }
 
 void SemanticError::append( SemanticError &other ) {
-  errors.splice( errors.end(), other.errors );
+	errors.splice( errors.end(), other.errors );
 }
 
 void SemanticError::append( const std::string & msg ) {
-  errors.push_back( std::string( "Error: ") + msg );
+	errors.emplace_back( error_str() + msg );
 }
 
@@ -42,5 +49,12 @@
 
 void SemanticError::print( std::ostream &os ) {
-	std::copy( errors.begin(), errors.end(), std::ostream_iterator< std::string >( os, "\n" ) );
+	using std::to_string;
+	for(auto err : errors) {
+		os << to_string( err.location ) << err.description << '\n';
+	}
+}
+
+void SemanticError::set_location( const CodeLocation& location ) {
+	errors.begin()->maybeSet( location );
 }
 
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/Common/SemanticError.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -23,4 +23,20 @@
 #include <iostream>
 
+#include "utility.h"
+
+struct error {
+	std::string description;
+	CodeLocation location;
+
+	error() = default;
+	error( const std::string& str ) : description( str ) {}
+
+	void maybeSet( const CodeLocation& location ) {
+		if( this->location.linenumber < 0 ) {
+			this->location = location;
+		}
+	}
+};
+
 class SemanticError : public std::exception {
   public:
@@ -35,8 +51,9 @@
 	void print( std::ostream &os );
 
+	void set_location( const CodeLocation& location );
 	// constructs an exception using the given message and the printed
 	// representation of the obj (T must have a print method)
   private:
-	std::list< std::string > errors;
+	std::list< error > errors;
 };
 
Index: src/Common/utility.h
===================================================================
--- src/Common/utility.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/Common/utility.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -25,6 +25,6 @@
 #include <sstream>
 #include <string>
+
 #include <cassert>
-
 template< typename T >
 static inline T * maybeClone( const T *orig ) {
@@ -303,4 +303,23 @@
 	return group_iterate_t<Args...>(args...);
 }
+
+struct CodeLocation {
+	int linenumber;
+	std::string filename;
+
+	CodeLocation() 
+		: linenumber( -1 )
+		, filename("")
+	{}
+
+	CodeLocation( const char* filename, int lineno )
+		: linenumber( lineno )
+		, filename(filename ? filename : "")
+	{}
+};
+
+inline std::string to_string( const CodeLocation& location ) {
+	return location.linenumber >= 0 ? location.filename + ":" + std::to_string(location.linenumber) + " " : "";
+}
 #endif // _UTILITY_H
 
Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/GenPoly/Box.cc	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -236,4 +236,5 @@
 				} // if
 			} catch( SemanticError &e ) {
+				e.set_location( (*i)->location );
 				errors.append( e );
 			} // try
Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/InitTweak/FixInit.cc	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -313,4 +313,5 @@
 					translationUnit.splice( i, fixer.staticDtorDecls );
 				} catch( SemanticError &e ) {
+					e.set_location( (*i)->location );
 					errors.append( e );
 				} // try
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/Parser/DeclarationNode.cc	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -921,4 +921,5 @@
 				Declaration * decl = extr->build();
 				if ( decl ) {
+					decl->location = cur->location;
 					* out++ = decl;
 				} // if
@@ -928,7 +929,9 @@
 			Declaration * decl = cur->build();
 			if ( decl ) {
+				decl->location = cur->location;
 				* out++ = decl;
 			} // if
 		} catch( SemanticError &e ) {
+			e.set_location( cur->location );
 			errors.append( e );
 		} // try
@@ -950,15 +953,21 @@
 			if ( decl ) {
 				if ( DeclarationWithType * dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
+					dwt->location = cur->location;
 					* out++ = dwt;
 				} else if ( StructDecl * agg = dynamic_cast< StructDecl * >( decl ) ) {
 					StructInstType * inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
-					* out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
+					auto obj = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
+					obj->location = cur->location;
+					* out++ = obj; 
 					delete agg;
 				} else if ( UnionDecl * agg = dynamic_cast< UnionDecl * >( decl ) ) {
 					UnionInstType * inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
-					* out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
+					auto obj = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
+					obj->location = cur->location;
+					* out++ = obj;
 				} // if
 			} // if
 		} catch( SemanticError &e ) {
+			e.set_location( cur->location );
 			errors.append( e );
 		} // try
@@ -979,4 +988,5 @@
 			* out++ = cur->buildType();
 		} catch( SemanticError &e ) {
+			e.set_location( cur->location );
 			errors.append( e );
 		} // try
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/Parser/ParseNode.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -39,4 +39,7 @@
 //##############################################################################
 
+extern char* yyfilename;
+extern int yylineno;
+
 class ParseNode {
   public:
@@ -65,4 +68,5 @@
 	ParseNode * next = nullptr;
 	std::string * name = nullptr;
+	CodeLocation location = { yyfilename, yylineno };
 }; // ParseNode
 
@@ -410,10 +414,11 @@
 	while ( cur ) {
 		try {
-//			SynTreeType * result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::result_of< decltype(&NodeType::build)(NodeType)>::type >( cur ) );
 			SynTreeType * result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::pointer_traits< decltype(cur->build())>::element_type >( cur ) );
 			if ( result ) {
+				result->location = cur->location;
 				* out++ = result;
 			} // if
 		} catch( SemanticError &e ) {
+			e.set_location( cur->location );
 			errors.append( e );
 		} // try
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/ResolvExpr/Resolver.cc	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -86,11 +86,4 @@
 		Resolver resolver;
 		acceptAll( translationUnit, resolver );
-#if 0
-		resolver.print( cerr );
-		for ( std::list< Declaration * >::iterator i = translationUnit.begin(); i != translationUnit.end(); ++i ) {
-			(*i)->print( std::cerr );
-			(*i)->accept( resolver );
-		} // for
-#endif
 	}
 
Index: src/SynTree/BaseSyntaxNode.h
===================================================================
--- src/SynTree/BaseSyntaxNode.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
+++ src/SynTree/BaseSyntaxNode.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -0,0 +1,32 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// BaseSyntaxNode.h --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Feb 14 07:44:20 2017
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+#ifndef BASE_SYNTAX_NODE_H
+#define BASE_SYNTAX_NODE_H
+
+#include "Common/utility.h"
+
+class BaseSyntaxNode {
+  public:
+	CodeLocation location;
+};
+
+#endif // BASE_SYNTAX_NODE_H
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/SynTree/Declaration.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -17,12 +17,14 @@
 #define DECLARATION_H
 
+#include <string>
+
+#include "BaseSyntaxNode.h"
+#include "Mutator.h"
+#include "Visitor.h"
 #include "SynTree.h"
-#include "Visitor.h"
-#include "Mutator.h"
 #include "Parser/LinkageSpec.h"
 #include "Parser/ParseNode.h"
-#include <string>
-
-class Declaration {
+
+class Declaration : public BaseSyntaxNode {
   public:
 	Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage );
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/SynTree/Expression.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -19,12 +19,14 @@
 #include <map>
 #include <memory>
+
+#include "BaseSyntaxNode.h"
+#include "Constant.h"
+#include "Mutator.h"
 #include "SynTree.h"
 #include "Visitor.h"
-#include "Mutator.h"
-#include "Constant.h"
 #include "Common/UniqueName.h"
 
 /// Expression is the root type for all expressions
-class Expression {
+class Expression : public BaseSyntaxNode{
   public:
 	Expression( Expression * _aname = nullptr );
Index: src/SynTree/Initializer.h
===================================================================
--- src/SynTree/Initializer.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/SynTree/Initializer.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -17,15 +17,16 @@
 #define INITIALIZER_H
 
+#include <cassert>
+
+#include "BaseSyntaxNode.h"
+#include "Mutator.h"
 #include "SynTree.h"
+#include "Type.h"
 #include "Visitor.h"
-#include "Mutator.h"
-#include "Type.h"
-
-#include <cassert>
 
 const std::list<Expression*> noDesignators;
 
 // Initializer: base class for object initializers (provide default values)
-class Initializer {
+class Initializer : public BaseSyntaxNode {
   public:
 	//	Initializer( std::string _name = std::string(""), int _pos = 0 );
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/SynTree/Mutator.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -139,4 +139,5 @@
 			} // if
 		} catch( SemanticError &e ) {
+			e.set_location( (*i)->location );
 			errors.append( e );
 		} // try
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/SynTree/Statement.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -17,12 +17,13 @@
 #define STATEMENT_H
 
+#include "BaseSyntaxNode.h"
+#include "Label.h"
+#include "Mutator.h"
 #include "SynTree.h"
+#include "Type.h"
 #include "Visitor.h"
-#include "Mutator.h"
 #include "Common/SemanticError.h"
-#include "Type.h"
-#include "Label.h"
-
-class Statement {
+
+class Statement : public BaseSyntaxNode {
   public:
 	Statement( std::list<Label> labels );
Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/SynTree/Type.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -17,10 +17,11 @@
 #define TYPE_H
 
+#include "BaseSyntaxNode.h"
+#include "Mutator.h"
 #include "SynTree.h"
 #include "Visitor.h"
-#include "Mutator.h"
 #include "Common/utility.h"
 
-class Type {
+class Type : public BaseSyntaxNode {
   public:
 	struct Qualifiers {
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/SynTree/Visitor.h	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -133,4 +133,5 @@
 			}
 		} catch( SemanticError &e ) {
+			e.set_location( (*i)->location );
 			errors.append( e );
 		}
@@ -159,4 +160,5 @@
 			} // if
 		} catch( SemanticError &e ) {
+			e.set_location( (*i)->location );			
 			errors.append( e );
 		} // try
Index: src/tests/.expect/castError.txt
===================================================================
--- src/tests/.expect/castError.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/castError.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,3 +1,3 @@
-Error: Can't choose between 3 alternatives for expression Cast of:
+castError.c:7 error: Can't choose between 3 alternatives for expression Cast of:
   Name: f
 
Index: src/tests/.expect/completeTypeError.txt
===================================================================
--- src/tests/.expect/completeTypeError.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/completeTypeError.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,3 +1,3 @@
-Error: No reasonable alternatives for expression Applying untyped: 
+completeTypeError.c:34 error: No reasonable alternatives for expression Applying untyped: 
   Name: *?
 ...to: 
@@ -5,5 +5,5 @@
 
 
-Error: No reasonable alternatives for expression Applying untyped: 
+completeTypeError.c:36 error: No reasonable alternatives for expression Applying untyped: 
   Name: baz
 ...to: 
@@ -11,5 +11,5 @@
 
 
-Error: No reasonable alternatives for expression Applying untyped: 
+completeTypeError.c:37 error: No reasonable alternatives for expression Applying untyped: 
   Name: quux
 ...to: 
@@ -17,5 +17,5 @@
 
 
-Error: No reasonable alternatives for expression Applying untyped: 
+completeTypeError.c:58 error: No reasonable alternatives for expression Applying untyped: 
   Name: baz
 ...to: 
@@ -23,5 +23,5 @@
 
 
-Error: No reasonable alternatives for expression Applying untyped: 
+completeTypeError.c:59 error: No reasonable alternatives for expression Applying untyped: 
   Name: quux
 ...to: 
@@ -29,5 +29,5 @@
 
 
-Error: No reasonable alternatives for expression Applying untyped: 
+completeTypeError.c:60 error: No reasonable alternatives for expression Applying untyped: 
   Name: *?
 ...to: 
@@ -35,5 +35,5 @@
 
 
-Error: No reasonable alternatives for expression Applying untyped: 
+completeTypeError.c:72 error: No reasonable alternatives for expression Applying untyped: 
   Name: baz
 ...to: 
Index: src/tests/.expect/constant0-1DP.txt
===================================================================
--- src/tests/.expect/constant0-1DP.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/constant0-1DP.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,33 +1,33 @@
-Error: duplicate object definition for 0: signed int
-Error: duplicate object definition for 0: const signed int
-Error: duplicate object definition for 1: signed int
-Error: duplicate object definition for 1: const signed int
-Error: duplicate object definition for 0: signed int
-Error: duplicate object definition for 1: signed int
-Error: duplicate object definition for 0: signed int
-Error: duplicate object definition for 1: signed int
-Error: duplicate object definition for 0: const signed int
-Error: duplicate object definition for 1: const signed int
-Error: duplicate object definition for 0: const signed int
-Error: duplicate object definition for 1: const signed int
-Error: duplicate object definition for 0: pointer to signed int
-Error: duplicate object definition for 1: pointer to signed int
-Error: duplicate object definition for 0: pointer to signed int
-Error: duplicate object definition for 1: pointer to signed int
-Error: duplicate object definition for 0: pointer to signed int
-Error: duplicate object definition for 1: pointer to signed int
-Error: duplicate object definition for 0: pointer to signed int
-Error: duplicate object definition for 1: pointer to signed int
-Error: duplicate object definition for 0: const pointer to signed int
-Error: duplicate object definition for 1: const pointer to signed int
-Error: duplicate object definition for 0: const pointer to signed int
-Error: duplicate object definition for 1: const pointer to signed int
-Error: duplicate object definition for 0: const pointer to signed int
-Error: duplicate object definition for 1: const pointer to signed int
-Error: duplicate object definition for x: const pointer to pointer to signed int
-Error: duplicate object definition for 0: pointer to pointer to signed int
-Error: duplicate object definition for x: const pointer to pointer to signed int
-Error: duplicate object definition for 0: pointer to pointer to signed int
-Error: duplicate object definition for x: const pointer to pointer to signed int
-Error: duplicate object definition for 0: pointer to pointer to signed int
+constant0-1.c:14 error: duplicate object definition for 0: signed int
+constant0-1.c:15 error: duplicate object definition for 0: const signed int
+constant0-1.c:16 error: duplicate object definition for 1: signed int
+constant0-1.c:17 error: duplicate object definition for 1: const signed int
+constant0-1.c:18 error: duplicate object definition for 0: signed int
+constant0-1.c:18 error: duplicate object definition for 1: signed int
+constant0-1.c:19 error: duplicate object definition for 0: signed int
+constant0-1.c:19 error: duplicate object definition for 1: signed int
+constant0-1.c:20 error: duplicate object definition for 0: const signed int
+constant0-1.c:20 error: duplicate object definition for 1: const signed int
+constant0-1.c:21 error: duplicate object definition for 0: const signed int
+constant0-1.c:21 error: duplicate object definition for 1: const signed int
+constant0-1.c:39 error: duplicate object definition for 0: pointer to signed int
+constant0-1.c:39 error: duplicate object definition for 1: pointer to signed int
+constant0-1.c:40 error: duplicate object definition for 0: pointer to signed int
+constant0-1.c:40 error: duplicate object definition for 1: pointer to signed int
+constant0-1.c:41 error: duplicate object definition for 0: pointer to signed int
+constant0-1.c:41 error: duplicate object definition for 1: pointer to signed int
+constant0-1.c:42 error: duplicate object definition for 0: pointer to signed int
+constant0-1.c:42 error: duplicate object definition for 1: pointer to signed int
+constant0-1.c:43 error: duplicate object definition for 0: const pointer to signed int
+constant0-1.c:43 error: duplicate object definition for 1: const pointer to signed int
+constant0-1.c:44 error: duplicate object definition for 0: const pointer to signed int
+constant0-1.c:44 error: duplicate object definition for 1: const pointer to signed int
+constant0-1.c:45 error: duplicate object definition for 0: const pointer to signed int
+constant0-1.c:45 error: duplicate object definition for 1: const pointer to signed int
+constant0-1.c:46 error: duplicate object definition for x: const pointer to pointer to signed int
+constant0-1.c:46 error: duplicate object definition for 0: pointer to pointer to signed int
+constant0-1.c:47 error: duplicate object definition for x: const pointer to pointer to signed int
+constant0-1.c:47 error: duplicate object definition for 0: pointer to pointer to signed int
+constant0-1.c:50 error: duplicate object definition for x: const pointer to pointer to signed int
+constant0-1.c:50 error: duplicate object definition for 0: pointer to pointer to signed int
 make: *** [constant0-1DP] Error 1
Index: src/tests/.expect/constant0-1NDDP.txt
===================================================================
--- src/tests/.expect/constant0-1NDDP.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/constant0-1NDDP.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,17 +1,17 @@
-Error: duplicate object definition for 0: signed int
-Error: duplicate object definition for 0: const signed int
-Error: duplicate object definition for 1: signed int
-Error: duplicate object definition for 1: const signed int
-Error: duplicate object definition for 0: signed int
-Error: duplicate object definition for 1: signed int
-Error: duplicate object definition for 0: signed int
-Error: duplicate object definition for 1: signed int
-Error: duplicate object definition for 0: const signed int
-Error: duplicate object definition for 1: const signed int
-Error: duplicate object definition for 0: const signed int
-Error: duplicate object definition for 1: const signed int
-Error: duplicate object definition for x: pointer to signed int
-Error: duplicate object definition for 0: pointer to signed int
-Error: duplicate object definition for x: const pointer to signed int
-Error: duplicate object definition for 0: const pointer to signed int
+constant0-1.c:14 error: duplicate object definition for 0: signed int
+constant0-1.c:15 error: duplicate object definition for 0: const signed int
+constant0-1.c:16 error: duplicate object definition for 1: signed int
+constant0-1.c:17 error: duplicate object definition for 1: const signed int
+constant0-1.c:18 error: duplicate object definition for 0: signed int
+constant0-1.c:18 error: duplicate object definition for 1: signed int
+constant0-1.c:19 error: duplicate object definition for 0: signed int
+constant0-1.c:19 error: duplicate object definition for 1: signed int
+constant0-1.c:20 error: duplicate object definition for 0: const signed int
+constant0-1.c:20 error: duplicate object definition for 1: const signed int
+constant0-1.c:21 error: duplicate object definition for 0: const signed int
+constant0-1.c:21 error: duplicate object definition for 1: const signed int
+constant0-1.c:66 error: duplicate object definition for x: pointer to signed int
+constant0-1.c:66 error: duplicate object definition for 0: pointer to signed int
+constant0-1.c:67 error: duplicate object definition for x: const pointer to signed int
+constant0-1.c:67 error: duplicate object definition for 0: const pointer to signed int
 make: *** [constant0-1NDDP] Error 1
Index: src/tests/.expect/declarationErrors.txt
===================================================================
--- src/tests/.expect/declarationErrors.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/declarationErrors.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,66 +1,66 @@
-Error: duplicate static in declaration of x1: static const volatile short int 
+declarationErrors.c:16 error: duplicate static in declaration of x1: static const volatile short int 
 
-Error: conflicting extern & static in declaration of x2: extern const volatile short int 
+declarationErrors.c:17 error: conflicting extern & static in declaration of x2: extern const volatile short int 
 
-Error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int 
+declarationErrors.c:18 error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int 
 
-Error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0
+declarationErrors.c:19 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0
   with members 
    with body 
 
 
-Error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1
+declarationErrors.c:20 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1
   with members 
    with body 
 
 
-Error: duplicate static in declaration of x6: static const volatile instance of type Int
+declarationErrors.c:22 error: duplicate static in declaration of x6: static const volatile instance of type Int
 
-Error: duplicate const in declaration of f01: static inline function
+declarationErrors.c:24 error: duplicate const in declaration of f01: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate volatile in declaration of f02: static inline function
+declarationErrors.c:25 error: duplicate volatile in declaration of f02: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate const in declaration of f03: static inline function
+declarationErrors.c:26 error: duplicate const in declaration of f03: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate volatile in declaration of f04: static inline function
+declarationErrors.c:27 error: duplicate volatile in declaration of f04: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate const in declaration of f05: static inline function
+declarationErrors.c:28 error: duplicate const in declaration of f05: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate volatile in declaration of f06: static inline function
+declarationErrors.c:29 error: duplicate volatile in declaration of f06: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate const in declaration of f07: static inline function
+declarationErrors.c:30 error: duplicate const in declaration of f07: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate const, duplicate volatile in declaration of f08: static inline function
+declarationErrors.c:31 error: duplicate const, duplicate volatile in declaration of f08: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate const, duplicate volatile in declaration of f09: static inline function
+declarationErrors.c:33 error: duplicate const, duplicate volatile in declaration of f09: static inline function
   with no parameters 
   returning const volatile int 
 
 
-Error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function
+declarationErrors.c:34 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function
   with no parameters 
   returning const restrict volatile _Atomic int 
Index: src/tests/.expect/dtor-early-exit-ERR1.txt
===================================================================
--- src/tests/.expect/dtor-early-exit-ERR1.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/dtor-early-exit-ERR1.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,3 +1,3 @@
-Error: jump to label 'L1' crosses initialization of y Branch (Goto)
+dtor-early-exit.c:142 error: jump to label 'L1' crosses initialization of y Branch (Goto)
 
 make: *** [dtor-early-exit-ERR1] Error 1
Index: src/tests/.expect/dtor-early-exit-ERR2.txt
===================================================================
--- src/tests/.expect/dtor-early-exit-ERR2.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/dtor-early-exit-ERR2.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,3 +1,3 @@
-Error: jump to label 'L2' crosses initialization of y Branch (Goto)
+dtor-early-exit.c:142 error: jump to label 'L2' crosses initialization of y Branch (Goto)
 
 make: *** [dtor-early-exit-ERR2] Error 1
Index: src/tests/.expect/memberCtors-ERR1.txt
===================================================================
--- src/tests/.expect/memberCtors-ERR1.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/memberCtors-ERR1.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,2 +1,2 @@
-Error: in void ?{}(struct B *b), field a2 used before being constructed
+error: in void ?{}(struct B *b), field a2 used before being constructed
 make: *** [memberCtors-ERR1] Error 1
Index: src/tests/.expect/scopeErrors.txt
===================================================================
--- src/tests/.expect/scopeErrors.txt	(revision e58dfb989674544981dfc936425231e7fa5edd1c)
+++ src/tests/.expect/scopeErrors.txt	(revision 35cd219b623c29a73cc06498fd38845d6799afd4)
@@ -1,4 +1,4 @@
-Error: duplicate object definition for thisIsAnError: signed int
-Error: duplicate function definition for butThisIsAnError: function
+scopeErrors.c:2 error: duplicate object definition for thisIsAnError: signed int
+scopeErrors.c:20 error: duplicate function definition for butThisIsAnError: function
   with parameters
     double
