1*0333dd95SReid Kleckner // Merge success 2*0333dd95SReid Kleckner namespace N1 { 3*0333dd95SReid Kleckner extern int x0; 4*0333dd95SReid Kleckner } 5*0333dd95SReid Kleckner 6*0333dd95SReid Kleckner // Merge multiple namespaces 7*0333dd95SReid Kleckner namespace N2 { 8*0333dd95SReid Kleckner extern int x; 9*0333dd95SReid Kleckner } 10*0333dd95SReid Kleckner namespace N2 { 11*0333dd95SReid Kleckner extern float y; 12*0333dd95SReid Kleckner } 13*0333dd95SReid Kleckner 14*0333dd95SReid Kleckner // Merge namespace with conflict 15*0333dd95SReid Kleckner namespace N3 { 16*0333dd95SReid Kleckner extern double z; 17*0333dd95SReid Kleckner } 18*0333dd95SReid Kleckner 19*0333dd95SReid Kleckner namespace Enclosing { 20*0333dd95SReid Kleckner namespace Nested { 21*0333dd95SReid Kleckner const int z = 4; 22*0333dd95SReid Kleckner } 23*0333dd95SReid Kleckner } 24*0333dd95SReid Kleckner 25*0333dd95SReid Kleckner namespace ContainsInline { 26*0333dd95SReid Kleckner inline namespace Inline { 27*0333dd95SReid Kleckner const int z = 10; 28*0333dd95SReid Kleckner } 29*0333dd95SReid Kleckner } 30*0333dd95SReid Kleckner 31*0333dd95SReid Kleckner namespace TestAliasName = Enclosing::Nested; 32*0333dd95SReid Kleckner // NOTE: There is no warning on this alias. 33*0333dd95SReid Kleckner namespace AliasWithSameName = Enclosing::Nested; 34*0333dd95SReid Kleckner 35*0333dd95SReid Kleckner namespace TestUsingDecls { 36*0333dd95SReid Kleckner 37*0333dd95SReid Kleckner namespace A { 38*0333dd95SReid Kleckner void foo(); 39*0333dd95SReid Kleckner } 40*0333dd95SReid Kleckner namespace B { 41*0333dd95SReid Kleckner using A::foo; // <- a UsingDecl creating a UsingShadow 42*0333dd95SReid Kleckner } 43*0333dd95SReid Kleckner 44*0333dd95SReid Kleckner }// end namespace TestUsingDecls 45*0333dd95SReid Kleckner 46*0333dd95SReid Kleckner namespace TestUnresolvedTypenameAndValueDecls { 47*0333dd95SReid Kleckner 48*0333dd95SReid Kleckner template <class T> class Base; 49*0333dd95SReid Kleckner template <class T> class Derived : public Base<T> { 50*0333dd95SReid Kleckner public: 51*0333dd95SReid Kleckner using typename Base<T>::foo; 52*0333dd95SReid Kleckner using Base<T>::bar; 53*0333dd95SReid Kleckner typedef typename Derived::foo NewUnresolvedUsingType; 54*0333dd95SReid Kleckner }; 55*0333dd95SReid Kleckner 56*0333dd95SReid Kleckner } // end namespace TestUnresolvedTypenameAndValueDecls 57*0333dd95SReid Kleckner 58*0333dd95SReid Kleckner namespace TestUsingNamespace { 59*0333dd95SReid Kleckner using namespace Enclosing; 60*0333dd95SReid Kleckner } 61