When disambiguating an expression-statement from a declaraton-statement, if the
statement starts with an identifier for which name lookup will fail either way,
look at later tokens to disambiguate in order to improve error recovery.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162464 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Modules/module-private.cpp b/test/Modules/module-private.cpp
index 246dcaf..31a3410 100644
--- a/test/Modules/module-private.cpp
+++ b/test/Modules/module-private.cpp
@@ -12,9 +12,12 @@
 }
 
 int test_broken() {
-  HiddenStruct hidden; // expected-error{{use of undeclared identifier 'HiddenStruct'}}
+  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}}
 
-  Integer i; // expected-error{{use of undeclared identifier 'Integer'}}
+  Integer i; // expected-error{{unknown type name 'Integer'}}
 
   int *ip = 0;
   f1(ip); // expected-error{{use of undeclared identifier 'f1'}}