forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify %s
 | |
| 
 | |
| namespace A {
 | |
|     int VA;
 | |
|     void FA() {}
 | |
|     struct SA { int V; };
 | |
| }
 | |
| 
 | |
| using A::VA;
 | |
| using A::FA;
 | |
| using typename A::SA;
 | |
| 
 | |
| int main()
 | |
| {
 | |
|     VA = 1;
 | |
|     FA();
 | |
|     SA x;   //Still needs handling.
 | |
| }
 | |
| 
 | |
| struct B {
 | |
|     void f(char){};
 | |
|     void g(char){};
 | |
| };
 | |
| struct D : B {
 | |
|     using B::f;
 | |
|     void f(int);
 | |
|     void g(int);
 | |
| };
 | |
| void D::f(int) { f('c'); } // calls B::f(char)
 | |
| void D::g(int) { g('c'); } // recursively calls D::g(int)
 | |
| 
 | |
| namespace E {
 | |
|     template <typename TYPE> int funcE(TYPE arg) { return(arg); }
 | |
| }
 | |
| 
 | |
| using E::funcE<int>; // expected-error{{using declaration cannot refer to a template specialization}}
 | |
| 
 | |
| namespace F {
 | |
|     struct X;
 | |
| }
 | |
| 
 | |
| using F::X;
 | |
| // Should have some errors here.  Waiting for implementation.
 | |
| void X(int);
 | |
| struct X *x;
 | |
| 
 | |
| 
 | |
| namespace ShadowedTagNotes {
 | |
| 
 | |
| namespace foo {
 | |
|   class Bar {};
 | |
| }
 | |
| 
 | |
| void Bar(int); // expected-note{{class 'Bar' is hidden by a non-type declaration of 'Bar' here}}
 | |
| using foo::Bar;
 | |
| 
 | |
| void ambiguity() {
 | |
|    const Bar *x; // expected-error{{must use 'class' tag to refer to type 'Bar' in this scope}}
 | |
| }
 | |
| 
 | |
| } // namespace ShadowedTagNotes
 |