161c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor// RUN: %clang_cc1 -fsyntax-only -verify %s
261c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor
361c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor// <rdar://problem/9168556>
461c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregortypedef struct Point Point;
561c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor
661c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregornamespace NameSpace {
761c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor  class Point;
861c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor}
961c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor
1061c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregorusing namespace NameSpace;
1161c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor
1261c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregorclass Test
1361c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor{
1461c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregorpublic:
1561c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor  struct Point { };
1661c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor  virtual bool testMethod (Test::Point& p) = 0;
1761c6c4415d0f73bd033128ac85f054a0211e7c42Douglas Gregor};
1893b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregor
1993b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregor// PR8151
2093b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregornamespace A { struct Face {}; }
2193b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregornamespace B { struct Face {}; }
2293b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregorusing namespace A;
2393b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregorusing namespace B;
2493b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregor
2593b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregorclass C {
2693b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregor  struct Face;
2793b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregor  Face *mFaces;
2893b6bceb0f009942e8a9e97d8c5c316ad10338f2Douglas Gregor};
29