Make all the 'redefinition' diagnostics more consistent, and make the 
"previously defined here" diagnostics all notes.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59920 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Parser/argument_redef.c b/test/Parser/argument_redef.c
index d831d48..16263f4 100644
--- a/test/Parser/argument_redef.c
+++ b/test/Parser/argument_redef.c
@@ -1,6 +1,6 @@
 /* RUN: clang -fsyntax-only -verify %s
 */
 
-int foo(int A) { /* expected-error {{previous definition is here}} */
+int foo(int A) { /* expected-note {{previous definition is here}} */
   int A; /* expected-error {{redefinition of 'A'}} */
 }
diff --git a/test/Sema/array-declared-as-incorrect-type.c b/test/Sema/array-declared-as-incorrect-type.c
index e7dd458..9b7d8b7 100644
--- a/test/Sema/array-declared-as-incorrect-type.c
+++ b/test/Sema/array-declared-as-incorrect-type.c
@@ -3,14 +3,14 @@
 extern int a1[];
 int a1[1];
 
-extern int a2[]; // expected-error {{previous definition is here}}
+extern int a2[]; // expected-note {{previous definition is here}}
 float a2[1]; // expected-error {{redefinition of 'a2'}}
 
 extern int a3[][2];
 int a3[1][2];
 
-extern int a4[][2]; // expected-error {{previous definition is here}}
+extern int a4[][2]; // expected-note {{previous definition is here}}
 int a4[2]; // expected-error {{redefinition of 'a4'}}
 
-extern int a5[1][2][3]; // expected-error {{previous definition is here}}
+extern int a5[1][2][3]; // expected-note {{previous definition is here}}
 int a5[3][2][1]; // expected-error {{redefinition of 'a5'}}
diff --git a/test/Sema/enum.c b/test/Sema/enum.c
index ba93aaa..b06882b 100644
--- a/test/Sema/enum.c
+++ b/test/Sema/enum.c
@@ -30,8 +30,8 @@
 }
 
 // PR2020
-union u0;    // expected-error {{previous use is here}}
-enum u0 { U0A }; // expected-error {{error: use of 'u0' with tag type that does not match previous declaration}}
+union u0;    // expected-note {{previous use is here}}
+enum u0 { U0A }; // expected-error {{use of 'u0' with tag type that does not match previous declaration}}
 
 
 // rdar://6095136
@@ -52,6 +52,6 @@
 enum someenum {};  // expected-warning {{use of empty enum extension}}
 
 // <rdar://problem/6093889>
-enum e0 { // expected-error {{previous definition is here}}
+enum e0 { // expected-note {{previous definition is here}}
   E0 = sizeof(enum e0 { E1 }) // expected-error {{nested redefinition}}
 };
diff --git a/test/Sema/function.c b/test/Sema/function.c
index 152205d..7c67bba 100644
--- a/test/Sema/function.c
+++ b/test/Sema/function.c
@@ -6,15 +6,15 @@
 int foo (__const char *__path);
 int foo(__const char *__restrict __file);
 
-void func(const char*); //expected-error{{previous declaration is here}}
-void func(char*); //expected-error{{conflicting types for 'func'}}
+void func(const char*); // expected-note {{previous declaration is here}}
+void func(char*); // expected-error{{conflicting types for 'func'}}
 
 void g(int (*)(const void **, const void **));
 void g(int (*compar)()) {
 }
 
-void h();  //expected-error{{previous declaration is here}}
-void h (const char *fmt, ...) {} //expected-error{{conflicting types for 'h'}}
+void h();  // expected-note {{previous declaration is here}}
+void h (const char *fmt, ...) {} // expected-error{{conflicting types for 'h'}}
 
 // PR1965
 int t5(b);          // expected-error {{parameter list without types}}
diff --git a/test/Sema/implicit-decl.c b/test/Sema/implicit-decl.c
index ea40e61..099cf9d 100644
--- a/test/Sema/implicit-decl.c
+++ b/test/Sema/implicit-decl.c
@@ -7,7 +7,7 @@
    int32_t *vector[16];
    const char compDesc[16 + 1];
    int32_t compCount = 0;
-   if (_CFCalendarDecomposeAbsoluteTimeV(compDesc, vector, compCount)) { // expected-error{{previous implicit declaration is here}}
+   if (_CFCalendarDecomposeAbsoluteTimeV(compDesc, vector, compCount)) { // expected-note {{previous implicit declaration is here}}
    }
    return ((void *)0);
 }
diff --git a/test/Sema/merge-decls.c b/test/Sema/merge-decls.c
index 50ce478..b26532c 100644
--- a/test/Sema/merge-decls.c
+++ b/test/Sema/merge-decls.c
@@ -3,7 +3,7 @@
 void foo(void);
 void foo(void) {} 
 void foo(void);
-void foo(void); // expected-error{{previous declaration is here}}
+void foo(void); // expected-note {{previous declaration is here}}
 
 void foo(int); // expected-error {{conflicting types for 'foo'}}
 
@@ -14,6 +14,6 @@
 
 int funcdef();
 
-int funcdef2() { return 0; } // expected-error{{previous definition is here}}
+int funcdef2() { return 0; } // expected-note {{previous definition is here}}
 int funcdef2() { return 0; } // expected-error {{redefinition of 'funcdef2'}}
 
diff --git a/test/Sema/predefined-function.c b/test/Sema/predefined-function.c
index e8c3965..2a254cc 100644
--- a/test/Sema/predefined-function.c
+++ b/test/Sema/predefined-function.c
@@ -4,7 +4,7 @@
 enum Test {A=-1};
 char *funk(enum Test x);
 
-int eli(float b); // expected-error {{previous declaration is here}}
+int eli(float b); // expected-note {{previous declaration is here}}
 int b(int c) {return 1;}
 
 int foo();
@@ -16,7 +16,7 @@
 }
 
 int bar();
-int bar(int i) // expected-error {{previous definition is here}}
+int bar(int i) // expected-note {{previous definition is here}}
 {
 	return 0;
 }
@@ -26,14 +26,14 @@
 }
 
 #if 0
-int foobar(int); // error {{previous declaration is here}}
+int foobar(int); // note {{previous declaration is here}}
 int foobar() // error {{conflicting types for 'foobar'}}
 {
 	return 0;
 }
 #endif
 
-int wibble(); // expected-error {{previous declaration is here}}
+int wibble(); // expected-note {{previous declaration is here}}
 float wibble() // expected-error {{conflicting types for 'wibble'}}
 {
 	return 0.0f;
diff --git a/test/Sema/redefinition.c b/test/Sema/redefinition.c
index c45779f..9ad77f6 100644
--- a/test/Sema/redefinition.c
+++ b/test/Sema/redefinition.c
@@ -1,5 +1,5 @@
 // RUN: clang %s -fsyntax-only -verify
-int f(int) { } // expected-error{{previous definition is here}}
+int f(int) { } // expected-note {{previous definition is here}}
 int f(int);
-int f(int) { } // expected-error{{redefinition of 'f'}}
+int f(int) { } // expected-error {{redefinition of 'f'}}
 
diff --git a/test/Sema/struct-compat.c b/test/Sema/struct-compat.c
index a4492d1..489ff47 100644
--- a/test/Sema/struct-compat.c
+++ b/test/Sema/struct-compat.c
@@ -1,17 +1,17 @@
 /* RUN: clang %s -fsyntax-only -pedantic -verify
  */
 
-extern struct {int a;} x; // expected-error{{previous definition is here}}
-extern struct {int a;} x; // expected-error{{redefinition of 'x'}}
+extern struct {int a;} x; // expected-note {{previous definition is here}}
+extern struct {int a;} x; // expected-error {{redefinition of 'x'}}
 
 struct x;
 int a(struct x* b) {
 // Per C99 6.7.2.3, since the outer and inner "struct x"es have different
 // scopes, they don't refer to the same type, and are therefore incompatible
-struct x {int a;} *c = b; // expected-warning{{incompatible pointer types}}
+struct x {int a;} *c = b; // expected-warning {{incompatible pointer types}}
 }
 
 struct x {int a;} r;
 int b() {
-struct x {char x;} s = r; // expected-error{{incompatible type initializing}}
+struct x {char x;} s = r; // expected-error {{incompatible type initializing}}
 }
diff --git a/test/Sema/switch-duplicate-defaults.c b/test/Sema/switch-duplicate-defaults.c
deleted file mode 100644
index 9ef683b..0000000
--- a/test/Sema/switch-duplicate-defaults.c
+++ /dev/null
@@ -1,10 +0,0 @@
-// RUN: clang -fsyntax-only -verify %s
-
-void f (int z) { 
-  switch(z) {
-      default:  // expected-error {{first label is here}}
-      default:  // expected-error {{multiple default labels in one switch}}
-        break;
-  }
-} 
-
diff --git a/test/Sema/switch.c b/test/Sema/switch.c
index 63e5fe3..5886fef 100644
--- a/test/Sema/switch.c
+++ b/test/Sema/switch.c
@@ -8,17 +8,17 @@
 
 void foo(int X) {
   switch (X) {
-  case 42: ;                 // expected-error {{previous case value}}
+  case 42: ;                 // expected-note {{previous case}}
   case 5000000000LL:         // expected-warning {{overflow}}
   case 42:                   // expected-error {{duplicate case value}}
    ;
 
   case 100 ... 99: ;         // expected-warning {{empty case range}}
 
-  case 43: ;                 // expected-error {{previous case value}}
+  case 43: ;                 // expected-note {{previous case}}
   case 43 ... 45:  ;         // expected-error {{duplicate case value}}
 
-  case 100 ... 20000:;       // expected-error {{previous case value}}
+  case 100 ... 20000:;       // expected-note {{previous case}}
   case 15000 ... 40000000:;  // expected-error {{duplicate case value}}
   }
 }
@@ -60,3 +60,11 @@
   }
 }
 
+void test5(int z) { 
+  switch(z) {
+    default:  // expected-note {{previous case defined here}}
+    default:  // expected-error {{multiple default labels in one switch}}
+      break;
+  }
+} 
+
diff --git a/test/Sema/tentative-decls.c b/test/Sema/tentative-decls.c
index 3a2fd5a..0e4b13a 100644
--- a/test/Sema/tentative-decls.c
+++ b/test/Sema/tentative-decls.c
@@ -9,12 +9,12 @@
 extern const int c[] = {1}; // expected-warning{{'extern' variable has an initializer}}
 const int c[];
 
-int i1 = 1; // expected-error{{previous definition is here}}
-int i1 = 2; // expected-error{{redefinition of 'i1'}} // expected-error{{previous definition is here}}
+int i1 = 1; // expected-note {{previous definition is here}}
+int i1 = 2; // expected-error {{redefinition of 'i1'}} // expected-note {{previous definition is here}}
 int i1;
 int i1;
-extern int i1; // expected-error{{previous definition is here}}
-static int i1; // expected-error{{static declaration of 'i1' follows non-static declaration}} expected-error{{previous definition is here}}
+extern int i1; // expected-note {{previous definition is here}}
+static int i1; // expected-error{{static declaration of 'i1' follows non-static declaration}} expected-note {{previous definition is here}}
 int i1 = 3; // expected-error{{redefinition of 'i1'}} expected-error{{non-static declaration of 'i1' follows static declaration}}
 
 __private_extern__ int pExtern;
@@ -28,11 +28,11 @@
 int (*pToArray)[8];
 
 int redef[10];
-int redef[];  // expected-error{{previous definition is here}}
+int redef[];  // expected-note {{previous definition is here}}
 int redef[11]; // expected-error{{redefinition of 'redef'}}
 
 void func() {
-  extern int i1; // expected-error{{previous definition is here}}
+  extern int i1; // expected-note {{previous definition is here}}
   static int i1; // expected-error{{static declaration of 'i1' follows non-static declaration}}
 }
 
diff --git a/test/Sema/typedef-redef.c b/test/Sema/typedef-redef.c
index d3904dd..76b8a3c 100644
--- a/test/Sema/typedef-redef.c
+++ b/test/Sema/typedef-redef.c
@@ -6,7 +6,7 @@
 
 
 
-typedef const int x; // expected-error {{previous definition is here}}
+typedef const int x; // expected-note {{previous definition is here}}
 extern x a;
 typedef int x;  // expected-error {{typedef redefinition with different types}}
 extern x a;
diff --git a/test/SemaCXX/class-names.cpp b/test/SemaCXX/class-names.cpp
index 22546ef..8b01c89 100644
--- a/test/SemaCXX/class-names.cpp
+++ b/test/SemaCXX/class-names.cpp
@@ -5,7 +5,7 @@
 

 void D(int);

 

-class D {}; // expected-error{{previous use is here}}

+class D {}; // expected-note {{previous use is here}}

 

 void foo()

 {

@@ -15,7 +15,7 @@
 

 class D; 

 

-enum D; // expected-error{{use of 'D' with tag type that does not match previous declaration}}

+enum D; // expected-error {{use of 'D' with tag type that does not match previous declaration}}

 

 class A * A;

 

diff --git a/test/SemaCXX/condition.cpp b/test/SemaCXX/condition.cpp
index f4a6deb..d611364 100644
--- a/test/SemaCXX/condition.cpp
+++ b/test/SemaCXX/condition.cpp
@@ -6,30 +6,30 @@
   if (int x=0) ++x;
 
   typedef int arr[10];
-  while (arr x=0) ; // expected-error: {{an array type is not allowed here}} expected-error: {{initialization with '{...}' expected for array}}
-  while (int f()=0) ; // expected-error: {{a function type is not allowed here}}
+  while (arr x=0) ; // expected-error {{an array type is not allowed here}} expected-error {{initialization with '{...}' expected for array}}
+  while (int f()=0) ; // expected-error {{a function type is not allowed here}}
 
   struct S {} s;
-  if (s) ++x; // expected-error: {{expression must have bool type (or be convertible to bool) ('struct S' invalid)}}
-  while (struct S x=s) ; // expected-error: {{expression must have bool type (or be convertible to bool) ('struct S' invalid)}}
-  do ; while (s); // expected-error: {{expression must have bool type (or be convertible to bool) ('struct S' invalid)}}
-  for (;s;) ; // expected-error: {{expression must have bool type (or be convertible to bool) ('struct S' invalid)}}
-  switch (s) {} // expected-error: {{statement requires expression of integer type ('struct S' invalid)}}
+  if (s) ++x; // expected-error {{expression must have bool type (or be convertible to bool) ('struct S' invalid)}}
+  while (struct S x=s) ; // expected-error {{expression must have bool type (or be convertible to bool) ('struct S' invalid)}}
+  do ; while (s); // expected-error {{expression must have bool type (or be convertible to bool) ('struct S' invalid)}}
+  for (;s;) ; // expected-error {{expression must have bool type (or be convertible to bool) ('struct S' invalid)}}
+  switch (s) {} // expected-error {{statement requires expression of integer type ('struct S' invalid)}}
 
-  while (struct S {} x=0) ; // expected-error: {{types may not be defined in conditions}} expected-error: {{incompatible type}} expected-error: {{expression must have bool type}}
-  while (struct {} x=0) ; // expected-error: {{types may not be defined in conditions}} expected-error: {{incompatible type}} expected-error: {{expression must have bool type}}
-  switch (enum {E} x=0) ; // expected-error: {{types may not be defined in conditions}} expected-error: {{incompatible type}}
+  while (struct S {} x=0) ; // expected-error {{types may not be defined in conditions}} expected-error {{incompatible type}} expected-error {{expression must have bool type}}
+  while (struct {} x=0) ; // expected-error {{types may not be defined in conditions}} expected-error {{incompatible type}} expected-error {{expression must have bool type}}
+  switch (enum {E} x=0) ; // expected-error {{types may not be defined in conditions}} expected-error {{incompatible type}}
 
-  if (int x=0) { // expected-error: {{previous definition is here}}
-    int x;  // expected-error: {{redefinition of 'x'}}
+  if (int x=0) { // expected-note {{previous definition is here}}
+    int x;  // expected-error {{redefinition of 'x'}}
   }
   else
-    int x;  // expected-error: {{redefinition of 'x'}}
-  while (int x=0) int x; // expected-error: {{redefinition of 'x'}} expected-error: {{previous definition is here}}
-  while (int x=0) { int x; } // expected-error: {{redefinition of 'x'}} expected-error: {{previous definition is here}}
-  for (int x; int x=0; ) ; // expected-error: {{redefinition of 'x'}} expected-error: {{previous definition is here}}
-  for (int x; ; ) int x; // expected-error: {{redefinition of 'x'}} expected-error: {{previous definition is here}}
-  for (; int x=0; ) int x; // expected-error: {{redefinition of 'x'}} expected-error: {{previous definition is here}}
-  for (; int x=0; ) { int x; } // expected-error: {{redefinition of 'x'}} expected-error: {{previous definition is here}}
-  switch (int x=0) { default: int x; } // expected-error: {{redefinition of 'x'}} expected-error: {{previous definition is here}}
+    int x;  // expected-error {{redefinition of 'x'}}
+  while (int x=0) int x; // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
+  while (int x=0) { int x; } // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
+  for (int x; int x=0; ) ; // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
+  for (int x; ; ) int x; // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
+  for (; int x=0; ) int x; // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
+  for (; int x=0; ) { int x; } // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
+  switch (int x=0) { default: int x; } // expected-error {{redefinition of 'x'}} expected-note {{previous definition is here}}
 }
diff --git a/test/SemaCXX/constructor.cpp b/test/SemaCXX/constructor.cpp
index 1aedb29..fc398e2 100644
--- a/test/SemaCXX/constructor.cpp
+++ b/test/SemaCXX/constructor.cpp
@@ -5,7 +5,7 @@
 class Foo {
   Foo();
   (Foo)(float) { }
-  explicit Foo(int); // expected-error{{previous declaration is here}}
+  explicit Foo(int); // expected-note {{previous declaration is here}}
   Foo(const Foo&);
 
   ((Foo))(INT); // expected-error{{cannot be redeclared}}
diff --git a/test/SemaCXX/conversion-function.cpp b/test/SemaCXX/conversion-function.cpp
index 3c2401f..17e73bc 100644
--- a/test/SemaCXX/conversion-function.cpp
+++ b/test/SemaCXX/conversion-function.cpp
@@ -34,8 +34,8 @@
 typedef INT* INT_PTR;
 
 class Z { 
-  operator int(); // expected-error{{previous declaration is here}}
-  operator int**(); // expected-error{{previous declaration is here}}
+  operator int(); // expected-note {{previous declaration is here}}
+  operator int**(); // expected-note {{previous declaration is here}}
   
   operator INT();  // expected-error{{conversion function cannot be redeclared}}
   operator INT_PTR*(); // expected-error{{conversion function cannot be redeclared}}
diff --git a/test/SemaCXX/decl-expr-ambiguity.cpp b/test/SemaCXX/decl-expr-ambiguity.cpp
index 1d69060..7d12e22 100644
--- a/test/SemaCXX/decl-expr-ambiguity.cpp
+++ b/test/SemaCXX/decl-expr-ambiguity.cpp
@@ -23,7 +23,7 @@
 
   // Declarations.
   int fd(T(a)); // expected-warning {{parentheses were disambiguated as a function declarator}}
-  T(*d)(int(p)); // expected-warning {{parentheses were disambiguated as a function declarator}} expected-warning {{statement was disambiguated as declaration}} expected-error {{previous definition is here}}
+  T(*d)(int(p)); // expected-warning {{parentheses were disambiguated as a function declarator}} expected-warning {{statement was disambiguated as declaration}} expected-note {{previous definition is here}}
   T(d)[5]; // expected-warning {{statement was disambiguated as declaration}} expected-error {{redefinition of 'd'}}
   typeof(int[])(f) = { 1, 2 }; // expected-warning {{statement was disambiguated as declaration}}
   void(b)(int);
diff --git a/test/SemaCXX/default1.cpp b/test/SemaCXX/default1.cpp
index 3acf119..286be61 100644
--- a/test/SemaCXX/default1.cpp
+++ b/test/SemaCXX/default1.cpp
@@ -1,6 +1,6 @@
 // RUN: clang -fsyntax-only -verify %s
 void f(int i);
-void f(int i = 0); // expected-error {{previous definition is here}}
+void f(int i = 0); // expected-note {{previous definition is here}}
 void f(int i = 17); // expected-error {{redefinition of default argument}}
 
 
diff --git a/test/SemaCXX/destructor.cpp b/test/SemaCXX/destructor.cpp
index cb5bd23..7f791da 100644
--- a/test/SemaCXX/destructor.cpp
+++ b/test/SemaCXX/destructor.cpp
@@ -31,8 +31,8 @@
 };
 
 struct F {
-  (~F)(); // expected-error{{previous declaration is here}}
-  ~F(); // expected-error{{destructor cannot be redeclared}}
+  (~F)(); // expected-note {{previous declaration is here}}
+  ~F(); // expected-error {{destructor cannot be redeclared}}
 };
 
 ~; // expected-error {{expected class name}}
diff --git a/test/SemaCXX/fntype-decl.cpp b/test/SemaCXX/fntype-decl.cpp
index ee72f0c..51aeab8 100644
--- a/test/SemaCXX/fntype-decl.cpp
+++ b/test/SemaCXX/fntype-decl.cpp
@@ -2,7 +2,7 @@
 
 // PR2942
 typedef void fn(int);
-fn f; // expected-error{{previous declaration is here}}
+fn f; // expected-note {{previous declaration is here}}
 
 int g(int x, int y);
 int g(int x, int y = 2);
@@ -10,7 +10,7 @@
 typedef int g_type(int, int);
 g_type g;
 
-int h(int x) { // expected-error{{previous definition is here}}
+int h(int x) { // expected-note {{previous definition is here}}
   return g(x);
 }
 
diff --git a/test/SemaCXX/namespace.cpp b/test/SemaCXX/namespace.cpp
index 62251d3..848dc27 100644
--- a/test/SemaCXX/namespace.cpp
+++ b/test/SemaCXX/namespace.cpp
@@ -1,18 +1,18 @@
 // RUN: clang -fsyntax-only -verify %s 
-namespace A { // expected-error {{error: previous definition is here}}
+namespace A { // expected-note {{previous definition is here}}
   int A;
   void f() { A = 0; }
 }
 
-void f() { A = 0; } // expected-error {{error: unexpected namespace name 'A': expected expression}}
-int A; // expected-error {{error: redefinition of 'A' as different kind of symbol}}
-class A; // expected-error {{error: redefinition of 'A' as different kind of symbol}}
+void f() { A = 0; } // expected-error {{unexpected namespace name 'A': expected expression}}
+int A; // expected-error {{redefinition of 'A' as different kind of symbol}}
+class A; // expected-error {{redefinition of 'A' as different kind of symbol}}
 
-class B {}; // expected-error {{error: previous definition is here}}
-namespace B {} // expected-error {{error: redefinition of 'B' as different kind of symbol}}
+class B {}; // expected-note {{previous definition is here}}
+namespace B {} // expected-error {{redefinition of 'B' as different kind of symbol}}
 
-void C(); // expected-error {{error: previous definition is here}}
-namespace C {} // expected-error {{error: redefinition of 'C' as different kind of symbol}}
+void C(); // expected-note {{previous definition is here}}
+namespace C {} // expected-error {{redefinition of 'C' as different kind of symbol}}
 
 namespace D {
   class D {};
@@ -38,7 +38,7 @@
     
     namespace S3 {
       void f() {
-        x = 0; // expected-error {{error: incompatible type assigning 'int', expected 'class B'}}
+        x = 0; // expected-error {{incompatible type assigning 'int', expected 'class B'}}
       }
     }
 
diff --git a/test/SemaCXX/overload-decl.cpp b/test/SemaCXX/overload-decl.cpp
index 9b0d0e2..9814725 100644
--- a/test/SemaCXX/overload-decl.cpp
+++ b/test/SemaCXX/overload-decl.cpp
@@ -6,22 +6,22 @@
 void f(int, ...);
 
 typedef float Float;
-void f(int, Float); // expected-error {{error: previous declaration is here}}
+void f(int, Float); // expected-note {{previous declaration is here}}
 
-int f(int, Float); // expected-error {{error: functions that differ only in their return type cannot be overloaded}}
+int f(int, Float); // expected-error {{functions that differ only in their return type cannot be overloaded}}
 
-void g(void); // expected-error {{error: previous declaration is here}}
-int g(); // expected-error {{error: functions that differ only in their return type cannot be overloaded}}
+void g(void); // expected-note {{previous declaration is here}}
+int g(); // expected-error {{functions that differ only in their return type cannot be overloaded}}
 
 class X {
   void f();
   void f(int);
   void f() const;
 
-  void g(int); // expected-error {{error: previous declaration is here}}
-  void g(int, float); // expected-error {{error: previous declaration is here}}
-  int g(int, Float); // expected-error {{error: functions that differ only in their return type cannot be overloaded}}
+  void g(int); // expected-note {{previous declaration is here}}
+  void g(int, float); // expected-note {{previous declaration is here}}
+  int g(int, Float); // expected-error {{functions that differ only in their return type cannot be overloaded}}
 
   static void g(float);
-  static void g(int); // expected-error {{error: static and non-static member functions with the same parameter types cannot be overloaded}}
+  static void g(int); // expected-error {{static and non-static member functions with the same parameter types cannot be overloaded}}
 };
diff --git a/test/SemaCXX/typedef-redecl.cpp b/test/SemaCXX/typedef-redecl.cpp
index c37a08a..eabcef8 100644
--- a/test/SemaCXX/typedef-redecl.cpp
+++ b/test/SemaCXX/typedef-redecl.cpp
@@ -1,12 +1,12 @@
 // RUN: clang -fsyntax-only -verify %s 
 
 typedef int INT;
-typedef INT REALLY_INT; // expected-error{{previous definition is here}}
+typedef INT REALLY_INT; // expected-note {{previous definition is here}}
 typedef REALLY_INT REALLY_REALLY_INT;
 typedef REALLY_INT BOB;
 typedef float REALLY_INT; // expected-error{{typedef redefinition with different types ('float' vs 'INT')}}
 
 class X {
-  typedef int result_type; // expected-error{{previous definition is here}}
-  typedef INT result_type; // expected-error{{redefinition of 'result_type'}}
+  typedef int result_type; // expected-note {{previous definition is here}}
+  typedef INT result_type; // expected-error {{redefinition of 'result_type'}}
 };
diff --git a/test/SemaObjC/DoubleMethod.m b/test/SemaObjC/DoubleMethod.m
index 70c7ed5..07e8912 100644
--- a/test/SemaObjC/DoubleMethod.m
+++ b/test/SemaObjC/DoubleMethod.m
@@ -10,7 +10,7 @@
 @end
 
 @implementation Subclass
-- (void) method {;} // expected-error {{previous declaration is here}}
+- (void) method {;} // expected-note {{previous declaration is here}}
 - (void) method {;} // expected-error {{duplicate declaration of method 'method'}}
 @end
 
diff --git a/test/SemaObjC/alias-test-1.m b/test/SemaObjC/alias-test-1.m
index fdaccf3..377f62f 100644
--- a/test/SemaObjC/alias-test-1.m
+++ b/test/SemaObjC/alias-test-1.m
@@ -2,7 +2,7 @@
 
 @compatibility_alias alias4 foo; // expected-warning {{cannot find interface declaration for 'foo'}}
 
-@class class2; // expected-error {{previous declaration is here}}
+@class class2; // expected-note {{previous declaration is here}}
 @class class3;
 
 typedef int I;  // expected-warning {{previous declaration is here}}
@@ -13,7 +13,7 @@
 @compatibility_alias alias class3;   // expected-error {{conflicting types for alias 'alias'}}
 
 
-typedef int alias2;	// expected-error {{previous declaration is here}}
+typedef int alias2;	// expected-note {{previous declaration is here}}
 @compatibility_alias alias2 class3;  // expected-error {{conflicting types for alias 'alias2'}}
 
 alias *p;
diff --git a/test/SemaObjC/alias-test-2.m b/test/SemaObjC/alias-test-2.m
index bdaeefe..4eb2007 100644
--- a/test/SemaObjC/alias-test-2.m
+++ b/test/SemaObjC/alias-test-2.m
@@ -1,7 +1,7 @@
 // RUN: clang -fsyntax-only -verify %s
 
 // Note: GCC doesn't produce any of the following errors.
-@interface Super @end // expected-error {{previous definition is here}}
+@interface Super @end // expected-note {{previous definition is here}}
 
 @interface MyWpModule @end  // expected-note {{previous definition is here}}
 
diff --git a/test/SemaObjC/check-dup-decl-methods-1.m b/test/SemaObjC/check-dup-decl-methods-1.m
index 36a98a2..985a4c1 100644
--- a/test/SemaObjC/check-dup-decl-methods-1.m
+++ b/test/SemaObjC/check-dup-decl-methods-1.m
@@ -8,7 +8,7 @@
 @interface T @end
 
 @interface class1 : SUPER
-- (int) meth;	// expected-error {{previous declaration is here}}
+- (int) meth;	// expected-note {{previous declaration is here}}
 - (int*) meth;	// expected-error {{duplicate declaration of method 'meth'}}
 - (T*) meth1;  
 - (T*) meth1;
@@ -16,7 +16,7 @@
 @end
 
 @interface class1(cat)
-- (int) catm : (char)ch1; // expected-error {{previous declaration is here}}
+- (int) catm : (char)ch1; // expected-note {{previous declaration is here}}
 - (int) catm1 : (char)ch : (int)i;
 - (int) catm : (char*)ch1; // expected-error {{duplicate declaration of method 'catm:'}}
 + (int) catm1 : (char)ch : (int)i;
@@ -24,15 +24,15 @@
 @end
 
 @interface class1(cat1)
-+ (int) catm1 : (char)ch : (int)i; // expected-error {{previous declaration is here}}
-+ (T*) meth1; // expected-error {{previous declaration is here}}
++ (int) catm1 : (char)ch : (int)i; // expected-note {{previous declaration is here}}
++ (T*) meth1; // expected-note {{previous declaration is here}}
 + (int) catm1 : (char)ch : (int*)i; // expected-error {{duplicate declaration of method 'catm1::'}}
 + (T**) meth1; // expected-error {{duplicate declaration of method 'meth1'}}
 + (int) foobar;
 @end
 
 @protocol P
-- (int) meth; // expected-error {{previous declaration is here}}
+- (int) meth; // expected-note {{previous declaration is here}}
 - (int*) meth; // expected-error {{duplicate declaration of method 'meth'}}
 @end
 
diff --git a/test/SemaObjC/check-dup-objc-decls-1.m b/test/SemaObjC/check-dup-objc-decls-1.m
index 28c6068..fa9b867 100644
--- a/test/SemaObjC/check-dup-objc-decls-1.m
+++ b/test/SemaObjC/check-dup-objc-decls-1.m
@@ -1,11 +1,11 @@
 // RUN: clang -fsyntax-only -verify %s
 
-@interface Foo // expected-error {{previous definition is here}}
+@interface Foo // expected-note {{previous definition is here}}
 @end
 
 float Foo;	// expected-error {{redefinition of 'Foo' as different kind of symbol}}
 
-@class Bar;  // expected-error {{previous definition is here}}
+@class Bar;  // expected-note {{previous definition is here}}
 
 typedef int Bar;  // expected-error {{redefinition of 'Bar' as different kind of symbol}}
 
@@ -13,12 +13,12 @@
 @end
 
 
-typedef int OBJECT; // expected-error {{previous definition is here}}
+typedef int OBJECT; // expected-note {{previous definition is here}}
 
 @class OBJECT ;	// expected-error {{redefinition of 'OBJECT' as different kind of symbol}}
 
 
-typedef int Gorf;  // expected-error {{previous definition is here}}
+typedef int Gorf;  // expected-note {{previous definition is here}}
 
 @interface Gorf @end // expected-error {{redefinition of 'Gorf' as different kind of symbol}}
 
diff --git a/test/SemaObjC/class-conforming-protocol-1.m b/test/SemaObjC/class-conforming-protocol-1.m
index 6afee0d..00f3204 100644
--- a/test/SemaObjC/class-conforming-protocol-1.m
+++ b/test/SemaObjC/class-conforming-protocol-1.m
@@ -5,11 +5,11 @@
 @protocol P3 @end
 
 @interface INTF 
-- (INTF*) METH1;	// expected-error {{previous declaration is here}}
+- (INTF*) METH1;	// expected-note {{previous declaration is here}}
 - (INTF<P1>*) METH1;	// expected-error {{duplicate declaration of method 'METH1'}}
 
 - (INTF<P1,P2>*) METH2;
-- (INTF<P2,P1>*) METH2;  // expected-error {{previous declaration is here}}
+- (INTF<P2,P1>*) METH2;  // expected-note {{previous declaration is here}}
 - (INTF<P2,P1,P3>*) METH2;  // expected-error {{duplicate declaration of method 'METH2'}}
 
 - (INTF<P2,P1,P3>*) METH3;
diff --git a/test/SemaObjC/class-def-test-1.m b/test/SemaObjC/class-def-test-1.m
index cf0ef53..ef226a5 100644
--- a/test/SemaObjC/class-def-test-1.m
+++ b/test/SemaObjC/class-def-test-1.m
@@ -4,17 +4,17 @@
 
 @interface SUPER <SUPER> @end // expected-warning {{cannot find protocol definition for 'SUPER'}}
 
-typedef int INTF; //  expected-error {{previous definition is here}}
+typedef int INTF; //  expected-note {{previous definition is here}}
 
 @interface INTF @end // expected-error {{redefinition of 'INTF' as different kind of symbol}}
 
-@interface OBJECT @end	// expected-error {{previous definition is here}}
+@interface OBJECT @end	// expected-note {{previous definition is here}}
 
 @interface INTF1 : OBJECT @end // expected-note {{previous definition is here}}
 
 @interface INTF1 : OBJECT @end // expected-error {{duplicate interface definition for class 'INTF1'}}
 
-typedef int OBJECT; // expected-error {{previous definition is here}}  \
+typedef int OBJECT; // expected-note {{previous definition is here}}  \
 		       expected-error {{redefinition of 'OBJECT' as different kind of symbol}}
 
 @interface INTF2 : OBJECT @end // expected-error {{redefinition of 'OBJECT' as different kind of symbol}}
diff --git a/test/SemaObjC/class-impl-1.m b/test/SemaObjC/class-impl-1.m
index dedce58..a3a1852 100644
--- a/test/SemaObjC/class-impl-1.m
+++ b/test/SemaObjC/class-impl-1.m
@@ -1,8 +1,8 @@
 // RUN: clang -fsyntax-only -verify %s
 
-typedef int INTF3; // expected-error {{previous definition is here}}
+typedef int INTF3; // expected-note {{previous definition is here}}
 
-@interface SUPER @end // expected-error {{previous definition is here}}
+@interface SUPER @end // expected-note {{previous definition is here}}
 
 @interface OBJECT @end
 
diff --git a/test/SemaObjC/conflicting-ivar-test-1.m b/test/SemaObjC/conflicting-ivar-test-1.m
index c5a6be4..3f27b2c 100644
--- a/test/SemaObjC/conflicting-ivar-test-1.m
+++ b/test/SemaObjC/conflicting-ivar-test-1.m
@@ -3,7 +3,7 @@
 @interface INTF 
 {
 @public
-	int IVAR; // expected-error {{previous definition is here}}
+	int IVAR; // expected-note {{previous definition is here}}
 }
 @end
 
@@ -54,7 +54,7 @@
 @interface INTF3
 {
 @public
-	int IVAR; // expected-error {{previous definition is here}}
+	int IVAR; // expected-note {{previous definition is here}}
 }
 @end
 
diff --git a/test/SemaObjC/ivar-sem-check-1.m b/test/SemaObjC/ivar-sem-check-1.m
index 4e810a2..4e46457 100644
--- a/test/SemaObjC/ivar-sem-check-1.m
+++ b/test/SemaObjC/ivar-sem-check-1.m
@@ -8,11 +8,11 @@
 	struct F {} JJ;
 	int arr[];  // expected-error {{field 'arr' has incomplete type}}
 	struct S IC;  // expected-error {{field 'IC' has incomplete type}}
-	struct T { // expected-error {{previous definition is here}}
+	struct T { // expected-note {{previous definition is here}}
 	  struct T {} X;  // expected-error {{nested redefinition of 'struct'}}
 	}YYY; 
 	FOO    BADFUNC;  // expected-error {{field 'BADFUNC' declared as a function}}
-	int kaka;	// expected-error {{previous definition is here}}
+	int kaka;	// expected-note {{previous definition is here}}
 	int kaka;	// expected-error {{duplicate member 'kaka'}}
 	char ch[];	// expected-error {{field 'ch' has incomplete type}}
 }