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