Author: andyg
Date: Wed Apr 17 03:06:46 2013
New Revision: 179677

URL: http://llvm.org/viewvc/llvm-project?rev=179677&view=rev
Log:
Extended VerifyDiagnosticConsumer to also verify source file for diagnostic.

VerifyDiagnosticConsumer previously would not check that the diagnostic and
its matching directive referenced the same source file.  Common practice was
to create directives that referenced other files but only by line number,
and this led to problems such as when the file containing the directive
didn't have enough lines to match the location of the diagnostic in the
other file, leading to bizarre file formatting and other oddities.

This patch causes VerifyDiagnosticConsumer to match source files as well as
line numbers.  Therefore, a new syntax is made available for directives, for
example:

// expected-error@file:line {{diagnostic message}}

This extends the @line feature where "file" is the file where the diagnostic
is generated.  The @line syntax is still available and uses the current file
for the diagnostic.  "file" can be specified either as a relative or absolute
path - although the latter has less usefulness, I think!  The #include search
paths will be used to locate the file and if it is not found an error will be
generated.

The new check is not optional: if the directive is in a different file to the
diagnostic, the file must be specified.  Therefore, a number of test-cases
have been updated with regard to this.

This closes out PR15613.

Modified:
    cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td
    cfe/trunk/include/clang/Frontend/VerifyDiagnosticConsumer.h
    cfe/trunk/lib/Frontend/VerifyDiagnosticConsumer.cpp
    cfe/trunk/test/ASTMerge/function.c
    cfe/trunk/test/Analysis/diagnostics/explicit-suppression.cpp
    cfe/trunk/test/Frontend/verify.c
    cfe/trunk/test/Misc/warn-in-system-header.c
    cfe/trunk/test/Modules/auto-module-import.m
    cfe/trunk/test/Modules/decldef.m
    cfe/trunk/test/Modules/decldef.mm
    cfe/trunk/test/Modules/diamond-pch.c
    cfe/trunk/test/Modules/diamond.c
    cfe/trunk/test/Modules/linkage-merge.cpp
    cfe/trunk/test/Modules/linkage-merge.m
    cfe/trunk/test/Modules/lookup.cpp
    cfe/trunk/test/Modules/lookup.m
    cfe/trunk/test/Modules/macros.c
    cfe/trunk/test/Modules/method_pool.m
    cfe/trunk/test/Modules/module-private.cpp
    cfe/trunk/test/Modules/namespaces.cpp
    cfe/trunk/test/Modules/normal-module-map.cpp
    cfe/trunk/test/Modules/objc-categories.m
    cfe/trunk/test/Modules/on-demand-build.m
    cfe/trunk/test/Modules/redecl-merge.m
    cfe/trunk/test/Modules/subframeworks.m
    cfe/trunk/test/PCH/cxx-using.cpp
    cfe/trunk/test/PCH/cxx11-statement-attributes.cpp
    cfe/trunk/test/PCH/functions.c
    cfe/trunk/test/PCH/method_pool.m
    cfe/trunk/test/PCH/nonvisible-external-defs.c
    cfe/trunk/test/PCH/reloc.c
    cfe/trunk/test/PCH/tentative-defs.c
    cfe/trunk/test/PCH/typo.cpp
    cfe/trunk/test/PCH/typo.m
    cfe/trunk/test/Sema/pragma-arc-cf-code-audited.c
    cfe/trunk/test/SemaObjC/arc-system-header.m
    cfe/trunk/test/SemaObjCXX/arc-system-header.mm

Modified: cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td Wed Apr 17 
03:06:46 2013
@@ -67,6 +67,8 @@ def warn_fe_serialized_diag_failure : Wa
 
 def err_verify_missing_line : Error<
     "missing or invalid line number following '@' in expected %0">;
+def err_verify_missing_file : Error<
+    "file '%0' could not be located in expected %1">;
 def err_verify_invalid_range : Error<
     "invalid range following '-' in expected %0">;
 def err_verify_missing_start : Error<

Modified: cfe/trunk/include/clang/Frontend/VerifyDiagnosticConsumer.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/VerifyDiagnosticConsumer.h?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/include/clang/Frontend/VerifyDiagnosticConsumer.h (original)
+++ cfe/trunk/include/clang/Frontend/VerifyDiagnosticConsumer.h Wed Apr 17 
03:06:46 2013
@@ -61,6 +61,18 @@ class FileEntry;
 /// The line number may be absolute (as above), or relative to the current
 /// line by prefixing the number with either '+' or '-'.
 ///
+/// If the diagnostic is generated in a separate file, for example in a shared
+/// header file, it may be beneficial to be able to declare the file in which
+/// the diagnostic will appear, rather than placing the expected-* directive in
+/// the actual file itself.  This can be done using the following syntax:
+///
+/// \code
+///   // expected-error@path/include.h:15 {{error message}}
+/// \endcode
+///
+/// The path can be absolute or relative and the same search paths will be used
+/// as for #include directives.
+///
 /// The simple syntax above allows each specification to match exactly one
 /// error.  You can use the extended syntax to customize this. The extended
 /// syntax is "expected-<type> <n> {{diag text}}", where \<type> is one of

Modified: cfe/trunk/lib/Frontend/VerifyDiagnosticConsumer.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/VerifyDiagnosticConsumer.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/VerifyDiagnosticConsumer.cpp (original)
+++ cfe/trunk/lib/Frontend/VerifyDiagnosticConsumer.cpp Wed Apr 17 03:06:46 2013
@@ -278,8 +278,10 @@ private:
 ///
 /// Returns true if any valid directives were found.
 static bool ParseDirective(StringRef S, ExpectedData *ED, SourceManager &SM,
-                           SourceLocation Pos, DiagnosticsEngine &Diags,
+                           Preprocessor *PP, SourceLocation Pos,
                            VerifyDiagnosticConsumer::DirectiveStatus &Status) {
+  DiagnosticsEngine &Diags = PP ? PP->getDiagnostics() : SM.getDiagnostics();
+
   // A single comment may contain multiple directives.
   bool FoundDirective = false;
   for (ParseHelper PH(S); !PH.Done();) {
@@ -353,10 +355,30 @@ static bool ParseDirective(StringRef S,
           else ExpectedLine -= Line;
           ExpectedLoc = SM.translateLineCol(SM.getFileID(Pos), ExpectedLine, 
1);
         }
-      } else {
+      } else if (PH.Next(Line)) {
         // Absolute line number.
-        if (PH.Next(Line) && Line > 0)
+        if (Line > 0)
           ExpectedLoc = SM.translateLineCol(SM.getFileID(Pos), Line, 1);
+      } else if (PP && PH.Search(":")) {
+        // Specific source file.
+        StringRef Filename(PH.C, PH.P-PH.C);
+        PH.Advance();
+
+        // Lookup file via Preprocessor, like a #include.
+        const DirectoryLookup *CurDir;
+        const FileEntry *FE = PP->LookupFile(Filename, false, NULL, CurDir,
+                                             NULL, NULL, 0);
+        if (!FE) {
+          Diags.Report(Pos.getLocWithOffset(PH.C-PH.Begin),
+                       diag::err_verify_missing_file) << Filename << KindStr;
+          continue;
+        }
+
+        if (SM.translateFile(FE).isInvalid())
+          SM.createFileID(FE, Pos, SrcMgr::C_User);
+
+        if (PH.Next(Line) && Line > 0)
+          ExpectedLoc = SM.translateFileLineCol(FE, Line, 1);
       }
 
       if (ExpectedLoc.isInvalid()) {
@@ -465,7 +487,7 @@ bool VerifyDiagnosticConsumer::HandleCom
   // Fold any "\<EOL>" sequences
   size_t loc = C.find('\\');
   if (loc == StringRef::npos) {
-    ParseDirective(C, &ED, SM, CommentBegin, PP.getDiagnostics(), Status);
+    ParseDirective(C, &ED, SM, &PP, CommentBegin, Status);
     return false;
   }
 
@@ -495,7 +517,7 @@ bool VerifyDiagnosticConsumer::HandleCom
   }
 
   if (!C2.empty())
-    ParseDirective(C2, &ED, SM, CommentBegin, PP.getDiagnostics(), Status);
+    ParseDirective(C2, &ED, SM, &PP, CommentBegin, Status);
   return false;
 }
 
@@ -530,8 +552,7 @@ static bool findDirectives(SourceManager
     if (Comment.empty()) continue;
 
     // Find first directive.
-    if (ParseDirective(Comment, 0, SM, Tok.getLocation(),
-                       SM.getDiagnostics(), Status))
+    if (ParseDirective(Comment, 0, SM, 0, Tok.getLocation(), Status))
       return true;
   }
   return false;
@@ -551,8 +572,13 @@ static unsigned PrintUnexpected(Diagnost
   for (const_diag_iterator I = diag_begin, E = diag_end; I != E; ++I) {
     if (I->first.isInvalid() || !SourceMgr)
       OS << "\n  (frontend)";
-    else
-      OS << "\n  Line " << SourceMgr->getPresumedLineNumber(I->first);
+    else {
+      OS << "\n ";
+      if (const FileEntry *File = SourceMgr->getFileEntryForID(
+                                                
SourceMgr->getFileID(I->first)))
+        OS << " File " << File->getName();
+      OS << " Line " << SourceMgr->getPresumedLineNumber(I->first);
+    }
     OS << ": " << I->second;
   }
 
@@ -572,11 +598,12 @@ static unsigned PrintExpected(Diagnostic
   llvm::raw_svector_ostream OS(Fmt);
   for (DirectiveList::iterator I = DL.begin(), E = DL.end(); I != E; ++I) {
     Directive &D = **I;
-    OS << "\n  Line " << SourceMgr.getPresumedLineNumber(D.DiagnosticLoc);
+    OS << "\n  File " << SourceMgr.getFilename(D.DiagnosticLoc)
+          << " Line " << SourceMgr.getPresumedLineNumber(D.DiagnosticLoc);
     if (D.DirectiveLoc != D.DiagnosticLoc)
       OS << " (directive at "
-         << SourceMgr.getFilename(D.DirectiveLoc) << ":"
-         << SourceMgr.getPresumedLineNumber(D.DirectiveLoc) << ")";
+         << SourceMgr.getFilename(D.DirectiveLoc) << ':'
+         << SourceMgr.getPresumedLineNumber(D.DirectiveLoc) << ')';
     OS << ": " << D.Text;
   }
 
@@ -585,6 +612,22 @@ static unsigned PrintExpected(Diagnostic
   return DL.size();
 }
 
+/// \brief Determine whether two source locations come from the same file.
+static bool IsFromSameFile(SourceManager &SM, SourceLocation DirectiveLoc,
+                           SourceLocation DiagnosticLoc) {
+  while (DiagnosticLoc.isMacroID())
+    DiagnosticLoc = SM.getImmediateMacroCallerLoc(DiagnosticLoc);
+
+  if (SM.isFromSameFile(DirectiveLoc, DiagnosticLoc))
+    return true;
+
+  const FileEntry *DiagFile = 
SM.getFileEntryForID(SM.getFileID(DiagnosticLoc));
+  if (!DiagFile && SM.isFromMainFile(DirectiveLoc))
+    return true;
+
+  return (DiagFile == SM.getFileEntryForID(SM.getFileID(DirectiveLoc)));
+}
+
 /// CheckLists - Compare expected to seen diagnostic lists and return the
 /// the difference between them.
 ///
@@ -607,6 +650,9 @@ static unsigned CheckLists(DiagnosticsEn
         if (LineNo1 != LineNo2)
           continue;
 
+        if (!IsFromSameFile(SourceMgr, D.DiagnosticLoc, II->first))
+          continue;
+
         const std::string &RightText = II->second;
         if (D.match(RightText))
           break;

Modified: cfe/trunk/test/ASTMerge/function.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ASTMerge/function.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/ASTMerge/function.c (original)
+++ cfe/trunk/test/ASTMerge/function.c Wed Apr 17 03:06:46 2013
@@ -9,7 +9,7 @@
 // CHECK: function1.c:4:6: note: declared here with type 'void (void)'
 // CHECK: 2 errors generated
 
-// expected-error@3 {{external function 'f1' declared with incompatible types}}
-// expected-note@2 {{declared here}}
-// expected-error@5 {{external function 'f3' declared with incompatible types}}
-// expected-note@4 {{declared here}}
+// expected-error@Inputs/function2.c:3 {{external function 'f1' declared with 
incompatible types}}
+// expected-note@Inputs/function1.c:2 {{declared here}}
+// expected-error@Inputs/function2.c:5 {{external function 'f3' declared with 
incompatible types}}
+// expected-note@Inputs/function1.c:4 {{declared here}}

Modified: cfe/trunk/test/Analysis/diagnostics/explicit-suppression.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/diagnostics/explicit-suppression.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/diagnostics/explicit-suppression.cpp (original)
+++ cfe/trunk/test/Analysis/diagnostics/explicit-suppression.cpp Wed Apr 17 
03:06:46 2013
@@ -12,69 +12,6 @@ void clang_analyzer_eval(bool);
 void testCopyNull(int *I, int *E) {
   std::copy(I, E, (int *)0);
 #ifndef SUPPRESSED
-  // This line number comes from system-header-simulator-cxx.h.
-  // expected-warning@79 {{Dereference of null pointer}}
+  // expected-warning@../Inputs/system-header-simulator-cxx.h:80 {{Dereference 
of null pointer}}
 #endif
 }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// PR15613: expected-* can't refer to diagnostics in other source files.
-// The current implementation only matches line numbers, but has an upper limit
-// of the number of lines in the main source file.

Modified: cfe/trunk/test/Frontend/verify.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/verify.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Frontend/verify.c (original)
+++ cfe/trunk/test/Frontend/verify.c Wed Apr 17 03:06:46 2013
@@ -124,3 +124,19 @@ unexpected b; // expected-error@33 1-1 {
 // CHECK7-NEXT:   Line 2: 2
 // CHECK7-NEXT: 2 errors generated.
 #endif
+
+#ifdef TEST8
+// RUN: %clang_cc1 -DTEST8 -verify %s 2>&1 | FileCheck -check-prefix=CHECK8 %s
+
+// expected-warning@nonexistant-file:1 {{ }}
+// expected-error@-1 {{file 'nonexistant-file' could not be located}}
+
+// [email protected]: {{ }}
+// expected-error@-1 {{missing or invalid line number}}
+
+// [email protected]:1 {{diagnostic}}
+
+//      CHECK8: error: 'warning' diagnostics expected but not seen:
+// CHECK8-NEXT:   File {{.*}}verify-directive.h Line 1 (directive at 
{{.*}}verify.c:137): diagnostic
+// CHECK8-NEXT: 1 error generated.
+#endif

Modified: cfe/trunk/test/Misc/warn-in-system-header.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/warn-in-system-header.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Misc/warn-in-system-header.c (original)
+++ cfe/trunk/test/Misc/warn-in-system-header.c Wed Apr 17 03:06:46 2013
@@ -1,4 +1,4 @@
 // RUN: %clang_cc1 -isystem %S %s -fsyntax-only -verify 
 
 #include <warn-in-system-header.h>
-// expected-warning {{the cake is a lie}}
+// [email protected]:4 {{the cake is a lie}}

Modified: cfe/trunk/test/Modules/auto-module-import.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/auto-module-import.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/auto-module-import.m (original)
+++ cfe/trunk/test/Modules/auto-module-import.m Wed Apr 17 03:06:46 2013
@@ -1,10 +1,10 @@
-// other file: expected-note{{'no_umbrella_A_private' declared here}}
-
 // RUN: rm -rf %t
 // RUN: %clang_cc1 -Wauto-import -fmodules-cache-path=%t -fmodules -F 
%S/Inputs %s -verify
 
 #include <DependsOnModule/DependsOnModule.h> // expected-warning{{treating 
#include as an import of module 'DependsOnModule'}}
 
+// 
expected-note@Inputs/NoUmbrella.framework/PrivateHeaders/A_Private.h:1{{'no_umbrella_A_private'
 declared here}}
+
 #ifdef MODULE_H_MACRO
 #  error MODULE_H_MACRO should have been hidden
 #endif

Modified: cfe/trunk/test/Modules/decldef.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/decldef.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/decldef.m (original)
+++ cfe/trunk/test/Modules/decldef.m Wed Apr 17 03:06:46 2013
@@ -1,8 +1,7 @@
 // RUN: rm -rf %t
 // RUN: %clang_cc1 -fmodules -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t 
%s -verify
 
-
-// In other file: expected-note {{previous definition is here}}
+// expected-note@Inputs/def.h:5 {{previous definition is here}}
 
 @class Def;
 Def *def;

Modified: cfe/trunk/test/Modules/decldef.mm
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/decldef.mm?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/decldef.mm (original)
+++ cfe/trunk/test/Modules/decldef.mm Wed Apr 17 03:06:46 2013
@@ -1,8 +1,7 @@
 // RUN: rm -rf %t
 // RUN: %clang_cc1 -fmodules -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t 
%s -verify
 
-
-// In other file: expected-note {{previous definition is here}}
+// expected-note@Inputs/def.h:5 {{previous definition is here}}
 
 @class Def;
 Def *def;

Modified: cfe/trunk/test/Modules/diamond-pch.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/diamond-pch.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/diamond-pch.c (original)
+++ cfe/trunk/test/Modules/diamond-pch.c Wed Apr 17 03:06:46 2013
@@ -1,14 +1,20 @@
-
-
-
-// in diamond-bottom.h: expected-note{{passing argument to parameter 'x' here}}
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_top %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_left %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_right %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_bottom %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-pch -fmodules-cache-path=%t 
-o %t.pch %S/Inputs/diamond.h
+// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t 
-include-pch %t.pch %s -verify
+// FIXME: When we have a syntax for modules in C, use that.
 
 void test_diamond(int i, float f, double d, char c) {
   top(&i);
   left(&f);
   right(&d);
   bottom(&c);
-  bottom(&d); // expected-warning{{incompatible pointer types passing 'double 
*' to parameter of type 'char *'}}
+  bottom(&d);
+  // expected-warning@-1{{incompatible pointer types passing 'double *' to 
parameter of type 'char *'}}
+  // expected-note@Inputs/diamond_bottom.h:4{{passing argument to parameter 
'x' here}}
 
   // Names in multiple places in the diamond.
   top_left(&c);
@@ -17,12 +23,3 @@ void test_diamond(int i, float f, double
   struct left_and_right lr;
   lr.left = 17;
 }
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_top %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_right %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_bottom %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-pch -fmodules-cache-path=%t 
-o %t.pch %S/Inputs/diamond.h
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t 
-include-pch %t.pch %s -verify
-// FIXME: When we have a syntax for modules in C, use that.

Modified: cfe/trunk/test/Modules/diamond.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/diamond.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/diamond.c (original)
+++ cfe/trunk/test/Modules/diamond.c Wed Apr 17 03:06:46 2013
@@ -1,7 +1,10 @@
-
-
-
-// in diamond-bottom.h: expected-note{{passing argument to parameter 'x' here}}
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_top %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_left %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_right %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_bottom %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t %s -verify
+// FIXME: When we have a syntax for modules in C, use that.
 
 @import diamond_bottom;
 
@@ -10,7 +13,9 @@ void test_diamond(int i, float f, double
   left(&f);
   right(&d);
   bottom(&c);
-  bottom(&d); // expected-warning{{incompatible pointer types passing 'double 
*' to parameter of type 'char *'}}
+  bottom(&d);
+  // expected-warning@-1{{incompatible pointer types passing 'double *' to 
parameter of type 'char *'}}
+  // expected-note@Inputs/diamond_bottom.h:4{{passing argument to parameter 
'x' here}}
 
   // Names in multiple places in the diamond.
   top_left(&c);
@@ -20,10 +25,3 @@ void test_diamond(int i, float f, double
   lr.left = 17;
 }
 
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_top %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_right %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -emit-module 
-fmodules-cache-path=%t -fmodule-name=diamond_bottom %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t %s -verify
-// FIXME: When we have a syntax for modules in C, use that.

Modified: cfe/trunk/test/Modules/linkage-merge.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/linkage-merge.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/linkage-merge.cpp (original)
+++ cfe/trunk/test/Modules/linkage-merge.cpp Wed Apr 17 03:06:46 2013
@@ -1,13 +1,12 @@
-// FIXME: we should be able to put these in the .h file :-(
-// expected-note {{target of using declaration}}
-// expected-note {{using declaration}}
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -verify -fmodules -fmodules-cache-path=%t -I %S/Inputs %s
 
 #include "linkage-merge-bar.h"
 
 static int f(int);
 int f(int);
 
-static void g(int); // expected-error {{declaration conflicts with target of 
using declaration already in scope}}
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -verify -fmodules -fmodules-cache-path=%t -I %S/Inputs %s
+static void g(int);
+// expected-error@-1 {{declaration conflicts with target of using declaration 
already in scope}}
+// expected-note@Inputs/linkage-merge-foo.h:2 {{target of using declaration}}
+// expected-note@Inputs/linkage-merge-bar.h:3 {{using declaration}}

Modified: cfe/trunk/test/Modules/linkage-merge.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/linkage-merge.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/linkage-merge.m (original)
+++ cfe/trunk/test/Modules/linkage-merge.m Wed Apr 17 03:06:46 2013
@@ -1,27 +1,26 @@
-// In module: expected-note{{previous declaration}}
-
-
-
-
-// In module: expected-note{{previous definition is here}}
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t 
-emit-module -fmodule-name=linkage_merge_left %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -w %s -verify
 
 // Test redeclarations of functions where the original declaration is
 // still hidden.
 
 @import linkage_merge_left; // excludes "sub"
 
-extern int f0(float); // expected-error{{conflicting types for 'f0'}}
+extern int f0(float);
+// expected-error@-1{{conflicting types for 'f0'}}
+// expected-note@Inputs/linkage-merge-sub.h:1{{previous declaration}}
+
 static int f1(float); // okay: considered distinct
 static int f2(float); // okay: considered distinct
 extern int f3(float); // okay: considered distinct
 
-extern float v0; // expected-error{{redefinition of 'v0' with a different 
type: 'float' vs 'int'}}
+extern float v0;
+// expected-error@-1{{redefinition of 'v0' with a different type: 'float' vs 
'int'}}
+// expected-note@Inputs/linkage-merge-sub.h:6{{previous definition is here}}
+
 static float v1;
 static float v2;
 extern float v3;
 
 typedef float T0;
-
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t 
-emit-module -fmodule-name=linkage_merge_left %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -w %s -verify

Modified: cfe/trunk/test/Modules/lookup.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/lookup.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/lookup.cpp (original)
+++ cfe/trunk/test/Modules/lookup.cpp Wed Apr 17 03:06:46 2013
@@ -5,7 +5,7 @@ import lookup_left_cxx;
 #define IMPORT(X) @import X
 IMPORT(lookup_right_cxx);
 
-// in lookup_left.hpp: expected-warning@3 {{weak identifier 'weak_identifier' 
never declared}}
+// expected-warning@Inputs/lookup_left.hpp:3 {{weak identifier 
'weak_identifier' never declared}}
 
 void test(int i, float f) {
   // unqualified lookup

Modified: cfe/trunk/test/Modules/lookup.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/lookup.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/lookup.m (original)
+++ cfe/trunk/test/Modules/lookup.m Wed Apr 17 03:06:46 2013
@@ -1,19 +1,19 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -emit-module -x 
objective-c -fmodule-name=lookup_left_objc %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -emit-module -x 
objective-c -fmodule-name=lookup_right_objc %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -verify %s
+// RUN: %clang_cc1 -fmodules -ast-print -x objective-c -fmodules-cache-path=%t 
%s | FileCheck -check-prefix=CHECK-PRINT %s
 
-// lookup_left.h: expected-note{{using}}
-// lookup_right.h: expected-note{{also found}}
 @import lookup_left_objc;
 @import lookup_right_objc;
 
 void test(id x) {
-  [x method]; // expected-warning{{multiple methods named 'method' found}}
+  [x method];
+// expected-warning@-1{{multiple methods named 'method' found}}
+// expected-note@Inputs/lookup_left.h:2{{using}}
+// expected-note@Inputs/lookup_right.h:3{{also found}}
 }
 
-// RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -emit-module -x 
objective-c -fmodule-name=lookup_left_objc %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -emit-module -x 
objective-c -fmodule-name=lookup_right_objc %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -verify %s
-// RUN: %clang_cc1 -fmodules -ast-print -x objective-c -fmodules-cache-path=%t 
%s | FileCheck -check-prefix=CHECK-PRINT %s
-
 // CHECK-PRINT: - (int) method;
 // CHECK-PRINT: - (double) method
 // CHECK-PRINT: void test(id x)

Modified: cfe/trunk/test/Modules/macros.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/macros.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/macros.c (original)
+++ cfe/trunk/test/Modules/macros.c Wed Apr 17 03:06:46 2013
@@ -8,13 +8,13 @@
 // FIXME: When we have a syntax for modules in C, use that.
 // These notes come from headers in modules, and are bogus.
 
-// FIXME: expected-note{{previous definition is here}}
-// FIXME: expected-note{{previous definition is here}} 
expected-note{{expanding this definition of 'LEFT_RIGHT_DIFFERENT'}}
-// expected-note{{other definition of 'TOP_RIGHT_REDEF'}} 
expected-note{{expanding this definition of 'LEFT_RIGHT_DIFFERENT2'}}
-// expected-note{{other definition of 'LEFT_RIGHT_DIFFERENT'}}
-
-
-// expected-note{{expanding this definition of 'TOP_RIGHT_REDEF'}}
+// FIXME: expected-note@Inputs/macros_left.h:11{{previous definition is here}}
+// FIXME: expected-note@Inputs/macros_right.h:12{{previous definition is here}}
+// expected-note@Inputs/macros_right.h:12{{expanding this definition of 
'LEFT_RIGHT_DIFFERENT'}}
+// expected-note@Inputs/macros_top.h:13{{other definition of 
'TOP_RIGHT_REDEF'}}
+// expected-note@Inputs/macros_right.h:13{{expanding this definition of 
'LEFT_RIGHT_DIFFERENT2'}}
+// expected-note@Inputs/macros_left.h:14{{other definition of 
'LEFT_RIGHT_DIFFERENT'}}
+// expected-note@Inputs/macros_right.h:17{{expanding this definition of 
'TOP_RIGHT_REDEF'}}
 
 @import macros;
 

Modified: cfe/trunk/test/Modules/method_pool.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/method_pool.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/method_pool.m (original)
+++ cfe/trunk/test/Modules/method_pool.m Wed Apr 17 03:06:46 2013
@@ -8,8 +8,8 @@
 - (void)method5:(D*)obj;
 @end
 
-// in other file: // expected-note@7{{using}}
-// in other file: expected-note@12{{also found}}
+// expected-note@Inputs/MethodPoolA.h:7{{using}}
+// expected-note@Inputs/MethodPoolB.h:12{{also found}}
 
 void testMethod1(id object) {
   [object method1]; 
@@ -51,8 +51,8 @@ void testMethod3Again(id object) {
 
 void testMethod3AgainAgain(id object) {
   [object method3]; // expected-warning{{multiple methods named 'method3' 
found}}
-  // expected-note@2{{using}}
-  // expected-note@2{{also found}}
+  // expected-note@Inputs/MethodPoolBSub.h:2{{using}}
+  // expected-note@Inputs/MethodPoolASub.h:2{{also found}}
 }
 
 void testMethod4Again(id object) {

Modified: cfe/trunk/test/Modules/module-private.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/module-private.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/module-private.cpp (original)
+++ cfe/trunk/test/Modules/module-private.cpp Wed Apr 17 03:06:46 2013
@@ -15,7 +15,7 @@ int test_broken() {
   HiddenStruct hidden; // \
   // expected-error{{must use 'struct' tag to refer to type 'HiddenStruct' in 
this scope}} \
   // expected-error{{definition of 'struct HiddenStruct' must be imported}}
-  // expected-note@3 {{previous definition is here}}
+  // expected-note@Inputs/module_private_left.h:3 {{previous definition is 
here}}
 
   Integer i; // expected-error{{unknown type name 'Integer'}}
 

Modified: cfe/trunk/test/Modules/namespaces.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/namespaces.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/namespaces.cpp (original)
+++ cfe/trunk/test/Modules/namespaces.cpp Wed Apr 17 03:06:46 2013
@@ -73,5 +73,5 @@ void testAnonymousNotMerged() {
   N12::consumeFoo(N12::getFoo()); // expected-error{{cannot initialize a 
parameter of type 'N12::<anonymous>::Foo *' with an rvalue of type 
'N12::<anonymous>::Foo *'}}  
 }
 
-// namespaces-right.h: expected-note@60 {{passing argument to parameter here}}
-// namespaces-right.h: expected-note@67 {{passing argument to parameter here}}
+// expected-note@Inputs/namespaces-right.h:60 {{passing argument to parameter 
here}}
+// expected-note@Inputs/namespaces-right.h:67 {{passing argument to parameter 
here}}

Modified: cfe/trunk/test/Modules/normal-module-map.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/normal-module-map.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/normal-module-map.cpp (original)
+++ cfe/trunk/test/Modules/normal-module-map.cpp Wed Apr 17 03:06:46 2013
@@ -1,5 +1,3 @@
-// Note: inside the module. expected-note{{'nested_umbrella_a' declared here}}
-
 // RUN: rm -rf %t
 // RUN: %clang_cc1 -x objective-c -fmodules-cache-path=%t -fmodules -I 
%S/Inputs/normal-module-map %s -verify
 #include "Umbrella/umbrella_sub.h"
@@ -25,7 +23,9 @@ int testNestedUmbrellaA() {
 }
 
 int testNestedUmbrellaBFail() {
-  return nested_umbrella_b; // expected-error{{use of undeclared identifier 
'nested_umbrella_b'; did you mean 'nested_umbrella_a'?}}
+  return nested_umbrella_b;
+  // expected-error@-1{{use of undeclared identifier 'nested_umbrella_b'; did 
you mean 'nested_umbrella_a'?}}
+  // 
expected-note@Inputs/normal-module-map/nested_umbrella/a.h:1{{'nested_umbrella_a'
 declared here}}
 }
 
 @import nested_umbrella.b;

Modified: cfe/trunk/test/Modules/objc-categories.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/objc-categories.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/objc-categories.m (original)
+++ cfe/trunk/test/Modules/objc-categories.m Wed Apr 17 03:06:46 2013
@@ -8,11 +8,8 @@
 
 @import category_bottom;
 
-
-
-
-// in category_left.h: expected-note {{previous definition}}
-// in category_right.h: expected-warning@11 {{duplicate definition of 
category}}
+// expected-note@Inputs/category_left.h:14 {{previous definition}}
+// expected-warning@Inputs/category_right.h:11 {{duplicate definition of 
category}}
 
 @interface Foo(Source)
 -(void)source; 
@@ -75,7 +72,7 @@ void test_hidden_right_errors(Foo *foo)
   [p4 p4_method]; // expected-warning{{instance method '-p4_method' not found 
(return type defaults to 'id')}}
   id p4p = p4.p4_prop; // expected-error{{property 'p4_prop' not found on 
object of type 'id<P4>'}}
   p4p = foo.p4_prop; // expected-error{{property 'p4_prop' not found on object 
of type 'Foo *'; did you mean 'p3_prop'?}}
-  // expected-note@7{{'p3_prop' declared here}}
+  // expected-note@Inputs/category_left_sub.h:7{{'p3_prop' declared here}}
 }
 
 @import category_right.sub;

Modified: cfe/trunk/test/Modules/on-demand-build.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/on-demand-build.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/on-demand-build.m (original)
+++ cfe/trunk/test/Modules/on-demand-build.m Wed Apr 17 03:06:46 2013
@@ -7,7 +7,7 @@
 @interface OtherClass
 @end
 
-// in module: expected-note@17{{class method 'alloc' is assumed to return an 
instance of its receiver type ('Module *')}}
+// expected-note@Inputs/Module.framework/Headers/Module.h:17{{class method 
'alloc' is assumed to return an instance of its receiver type ('Module *')}}
 void test_getModuleVersion() {
   const char *version = getModuleVersion();
   const char *version2 = [Module version];

Modified: cfe/trunk/test/Modules/redecl-merge.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/redecl-merge.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/redecl-merge.m (original)
+++ cfe/trunk/test/Modules/redecl-merge.m Wed Apr 17 03:06:46 2013
@@ -27,8 +27,8 @@ int *call_eventually_noreturn_again(void
 int *call_eventually_noreturn2_again(void) {
   // noreturn and non-noreturn functions have different types
   eventually_noreturn2(); // expected-error{{call to 'eventually_noreturn2' is 
ambiguous}}
-  // expected-note@93{{candidate function}}
-  // expected-note@90{{candidate function}}
+  // expected-note@Inputs/redecl-merge-left.h:93{{candidate function}}
+  // expected-note@Inputs/redecl-merge-right.h:90{{candidate function}}
 }
 
 @implementation A
@@ -79,24 +79,26 @@ void testTypedefMerge(int i, double d) {
   T1 *ip = &i;
   // FIXME: Typedefs aren't actually merged in the sense of other merges, 
because
   // we should only merge them when the types are identical.
-  // in other file: expected-note@60{{candidate found by name lookup is 'T2'}}
-  // in other file: expected-note@63{{candidate found by name lookup is 'T2'}}
+  // expected-note@Inputs/redecl-merge-left.h:60{{candidate found by name 
lookup is 'T2'}}
+  // expected-note@Inputs/redecl-merge-right.h:63{{candidate found by name 
lookup is 'T2'}}
   T2 *dp = &d; // expected-error{{reference to 'T2' is ambiguous}}
 }
 
 void testFuncMerge(int i) {
   func0(i);
   func1(i);
-  // in other file: expected-note@64{{candidate function}}
-  // in other file: expected-note@70{{candidate function}}
+  // expected-note@Inputs/redecl-merge-left.h:64{{candidate function}}
+  // expected-note@Inputs/redecl-merge-right.h:70{{candidate function}}
   func2(i); // expected-error{{call to 'func2' is ambiguous}}
 }
 
 void testVarMerge(int i) {
   var1 = i;
-  // in other files: expected-note@77 2{{candidate found by name lookup is 
'var2'}}
+  // expected-note@Inputs/redecl-merge-left.h:77{{candidate found by name 
lookup is 'var2'}}
+  // expected-note@Inputs/redecl-merge-right.h:77{{candidate found by name 
lookup is 'var2'}}
   var2 = i; // expected-error{{reference to 'var2' is ambiguous}}
-  // in other files: expected-note@79 2{{candidate found by name lookup is 
'var3'}}
+  // expected-note@Inputs/redecl-merge-left.h:79{{candidate found by name 
lookup is 'var3'}}
+  // expected-note@Inputs/redecl-merge-right.h:79{{candidate found by name 
lookup is 'var3'}}
   var3 = i; // expected-error{{reference to 'var3' is ambiguous}}
 }
 

Modified: cfe/trunk/test/Modules/subframeworks.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/subframeworks.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Modules/subframeworks.m (original)
+++ cfe/trunk/test/Modules/subframeworks.m Wed Apr 17 03:06:46 2013
@@ -23,7 +23,7 @@ CXXOnly cxxonly;
 
 @import HasSubModules;
 
-// expected-warning@1{{treating #include as an import of module 
'HasSubModules.Sub.Types'}}
+// 
expected-warning@Inputs/HasSubModules.framework/Frameworks/Sub.framework/PrivateHeaders/SubPriv.h:1{{treating
 #include as an import of module 'HasSubModules.Sub.Types'}}
 #import <HasSubModules/HasSubModulesPriv.h>
 
 struct FrameworkSubStruct ss;

Modified: cfe/trunk/test/PCH/cxx-using.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/cxx-using.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/cxx-using.cpp (original)
+++ cfe/trunk/test/PCH/cxx-using.cpp Wed Apr 17 03:06:46 2013
@@ -6,10 +6,9 @@
 // RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
 
 void m() {
-    D s;   // expected-note {{candidate function}}
+    D s;
     s.f(); // expected-error {{no matching member}}
 }
 
-
-
-// expected-note {{candidate function}}
+// [email protected]:9  {{candidate function}}
+// [email protected]:15 {{candidate function}}

Modified: cfe/trunk/test/PCH/cxx11-statement-attributes.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/cxx11-statement-attributes.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/cxx11-statement-attributes.cpp (original)
+++ cfe/trunk/test/PCH/cxx11-statement-attributes.cpp Wed Apr 17 03:06:46 2013
@@ -4,8 +4,7 @@
 // RUN: %clang_cc1 -x c++-header -emit-pch -std=c++11 -o %t 
%S/Inputs/cxx11-statement-attributes.h
 // RUN: %clang_cc1 -include-pch %t -std=c++11 -Wimplicit-fallthrough 
-fsyntax-only %s -o - -verify
 
-// Warning from Inputs/cxx11-statement-attributes.h:
-// expected-warning@10 {{fallthrough annotation does not directly precede 
switch label}}
+// expected-warning@Inputs/cxx11-statement-attributes.h:10 {{fallthrough 
annotation does not directly precede switch label}}
 
 void g(int n) {
   f<1>(n);  // expected-note {{in instantiation of function template 
specialization 'f<1>' requested here}}

Modified: cfe/trunk/test/PCH/functions.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/functions.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/functions.c (original)
+++ cfe/trunk/test/PCH/functions.c Wed Apr 17 03:06:46 2013
@@ -4,18 +4,20 @@
 // Test with pch.
 // RUN: %clang_cc1 -emit-pch -o %t %S/functions.h
 // RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s 
-// expected-note{{'f1' declared here}}
+
 int f0(int x0, int y0, ...) { return x0 + y0; }
-// expected-note{{passing argument to parameter here}}
+
 float *test_f1(int val, double x, double y) {
   if (val > 5)
     return f1(x, y);
   else
     return f1(x); // expected-error{{too few arguments to function call}}
+                  // [email protected]:7{{'f1' declared here}}
 }
 
 void test_g0(int *x, float * y) {
   g0(y); // expected-warning{{incompatible pointer types passing 'float *' to 
parameter of type 'int *'}}
+         // [email protected]:9{{passing argument to parameter here}}
   g0(x); 
 }
 

Modified: cfe/trunk/test/PCH/method_pool.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/method_pool.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/method_pool.m (original)
+++ cfe/trunk/test/PCH/method_pool.m Wed Apr 17 03:06:46 2013
@@ -9,13 +9,5 @@ int message_id(id x) {
    return [x instMethod:17]; // expected-warning{{multiple methods}}
 }
 
-
-
-
-
-/* Whitespace below is significant */
-/* expected-note{{using}} */
-
-
-
-/* expected-note{{also}} */
+/* expected-note@method_pool.h:17{{using}} */
+/* expected-note@method_pool.h:21{{also}} */

Modified: cfe/trunk/test/PCH/nonvisible-external-defs.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/nonvisible-external-defs.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/nonvisible-external-defs.c (original)
+++ cfe/trunk/test/PCH/nonvisible-external-defs.c Wed Apr 17 03:06:46 2013
@@ -7,4 +7,4 @@
 
 int g(int, float); // expected-error{{conflicting types}}
 
-// expected-note{{previous declaration}}
+// [email protected]:10{{previous declaration}}

Modified: cfe/trunk/test/PCH/reloc.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/reloc.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/reloc.c (original)
+++ cfe/trunk/test/PCH/reloc.c Wed Apr 17 03:06:46 2013
@@ -10,5 +10,5 @@ int x = 2; // expected-error{{redefiniti
 int y = 5; // expected-error{{redefinition}}
 
 
-// expected-note{{previous definition}}
-// expected-note{{previous definition}}
+// expected-note@libroot/usr/include/reloc.h:13{{previous definition}}
+// expected-note@libroot/usr/include/reloc2.h:14{{previous definition}}

Modified: cfe/trunk/test/PCH/tentative-defs.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/tentative-defs.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/tentative-defs.c (original)
+++ cfe/trunk/test/PCH/tentative-defs.c Wed Apr 17 03:06:46 2013
@@ -5,5 +5,4 @@
 // RUN: grep "@variable = common global i32 0" %t | count 1
 // RUN: grep "@incomplete_array = common global .*1 x i32" %t | count 1
 
-
-// FIXME: tentative-defs.h expected-warning{{tentative}}
+// FIXME: [email protected]:9{{tentative}}

Modified: cfe/trunk/test/PCH/typo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/typo.cpp?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/typo.cpp (original)
+++ cfe/trunk/test/PCH/typo.cpp Wed Apr 17 03:06:46 2013
@@ -1,17 +1,14 @@
-
-// In header: expected-note{{'boost::function' declared here}}
-
-
-// In header: expected-note{{'boost::graph::adjacency_list' declared here}}
-
-
-
-adjacent_list<int, int> g; // expected-error{{no template named 
'adjacent_list'; did you mean 'boost::graph::adjacency_list'?}}
-Function<int(int)> f; // expected-error{{no template named 'Function'; did you 
mean 'boost::function'?}}
-
 // Without PCH
 // RUN: %clang_cc1 -include %S/Inputs/typo.hpp -verify %s
 
 // With PCH
 // RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/Inputs/typo.hpp
 // RUN: %clang_cc1 -include-pch %t -verify %s
+
+adjacent_list<int, int> g;
+// expected-error@-1{{no template named 'adjacent_list'; did you mean 
'boost::graph::adjacency_list'?}}
+// expected-note@Inputs/typo.hpp:5{{'boost::graph::adjacency_list' declared 
here}}
+
+Function<int(int)> f;
+// expected-error@-1{{no template named 'Function'; did you mean 
'boost::function'?}}
+// expected-note@Inputs/typo.hpp:2{{'boost::function' declared here}}

Modified: cfe/trunk/test/PCH/typo.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/typo.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/PCH/typo.m (original)
+++ cfe/trunk/test/PCH/typo.m Wed Apr 17 03:06:46 2013
@@ -1,6 +1,7 @@
 // RUN: %clang_cc1 -x objective-c-header -emit-pch -o %t %S/Inputs/typo.h
 // RUN: %clang_cc1 -include-pch %t -verify %s
-// In header: expected-note{{declared here}}
+
 void f() {
   [NSstring alloc]; // expected-error{{unknown receiver 'NSstring'; did you 
mean 'NSString'?}}
+                    // expected-note@Inputs/typo.h:3{{declared here}}
 }

Modified: cfe/trunk/test/Sema/pragma-arc-cf-code-audited.c
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/pragma-arc-cf-code-audited.c?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/Sema/pragma-arc-cf-code-audited.c (original)
+++ cfe/trunk/test/Sema/pragma-arc-cf-code-audited.c Wed Apr 17 03:06:46 2013
@@ -13,6 +13,6 @@
 #include "Inputs/pragma-arc-cf-code-audited.h" // expected-error {{cannot 
#include files inside '#pragma clang arc_cf_code_audited'}}
 
 // This is actually on the #pragma line in the header.
-// expected-error {{'#pragma clang arc_cf_code_audited' was not ended within 
this file}}
+// expected-error@Inputs/pragma-arc-cf-code-audited.h:16 {{'#pragma clang 
arc_cf_code_audited' was not ended within this file}}
 
 #pragma clang arc_cf_code_audited begin // expected-error {{'#pragma clang 
arc_cf_code_audited' was not ended within this file}}

Modified: cfe/trunk/test/SemaObjC/arc-system-header.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/arc-system-header.m?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/arc-system-header.m (original)
+++ cfe/trunk/test/SemaObjC/arc-system-header.m Wed Apr 17 03:06:46 2013
@@ -1,30 +1,30 @@
-// silly workaround expected-note {{marked unavailable here}}
 // RUN: %clang_cc1 -fobjc-arc -isystem %S/Inputs %s -DNO_USE
 // RUN: %clang_cc1 -fobjc-arc -isystem %S/Inputs %s -verify
 
-// another silly workaround expected-note {{marked unavailable here}}
 #include <arc-system-header.h>
 
 #ifndef NO_USE
 void test(id op, void *cp) {
   cp = test0(op); // expected-error {{'test0' is unavailable: converts between 
Objective-C and C pointers in -fobjc-arc}}
   cp = *test1(&op); // expected-error {{'test1' is unavailable: converts 
between Objective-C and C pointers in -fobjc-arc}}
+// [email protected]:1 {{marked unavailable here}}
+// [email protected]:5 {{marked unavailable here}}
 }
 
-// workaround expected-note {{marked unavailable here}}
 void test3(struct Test3 *p) {
   p->field = 0; // expected-error {{'field' is unavailable: this system 
declaration uses an unsupported type}}
+                // [email protected]:14 {{marked unavailable 
here}}
 }
 
-// workaround expected-note {{marked unavailable here}}
 void test4(Test4 *p) {
   p->field1 = 0; // expected-error {{'field1' is unavailable: this system 
declaration uses an unsupported type}}
+                 // [email protected]:19 {{marked unavailable 
here}}
   p->field2 = 0;
 }
 
-// workaround expected-note {{marked unavailable here}}
 void test5(struct Test5 *p) {
   p->field = 0; // expected-error {{'field' is unavailable: this system field 
has retaining ownership}}
+                // [email protected]:25 {{marked unavailable 
here}}
 }
 
 id test6() {
@@ -38,12 +38,13 @@ id test6() {
   x = (id) (test6_helper(), kMagicConstant);
 }
 
-// workaround expected-note 4 {{marked unavailable here}} expected-note 2 
{{property 'prop' is declared unavailable here}}
 void test7(Test7 *p) {
   *p.prop = 0; // expected-error {{'prop' is unavailable: this system 
declaration uses an unsupported type}}
   p.prop = 0; // expected-error {{'prop' is unavailable: this system 
declaration uses an unsupported type}}
   *[p prop] = 0; // expected-error {{'prop' is unavailable: this system 
declaration uses an unsupported type}}
   [p setProp: 0]; // expected-error {{'setProp:' is unavailable: this system 
declaration uses an unsupported type}}
+// [email protected]:41 4 {{marked unavailable here}}
+// [email protected]:41 2 {{property 'prop' is declared 
unavailable here}}
 }
 #endif
 

Modified: cfe/trunk/test/SemaObjCXX/arc-system-header.mm
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjCXX/arc-system-header.mm?rev=179677&r1=179676&r2=179677&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjCXX/arc-system-header.mm (original)
+++ cfe/trunk/test/SemaObjCXX/arc-system-header.mm Wed Apr 17 03:06:46 2013
@@ -6,5 +6,4 @@ void f(A* a) {
   a->data.void_ptr = 0;
   a->data.a_b.b = 0; // expected-error{{'a_b' is unavailable: this system 
field has retaining ownership}}
 }
-// Silly location below
-// expected-note{{declaration has been explicitly marked unavailable here}}
+// [email protected]:10{{declaration has been explicitly 
marked unavailable here}}


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to