forked from qt-creator/qt-creator
		
	Workaround for wrong cursor annotated by Clang. Use clang_getCursor in case of the variable used as operator argument to get the proper cursor. Task-number: QTCREATORBUG-20966 Change-Id: Idb195bffc2296f3fae27595cf9c43c9e6b2c5cd0 Reviewed-by: Marco Bubke <marco.bubke@qt.io>
		
			
				
	
	
		
			175 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
void variableSingleReference()
 | 
						|
{
 | 
						|
    int foo;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
int variableMultipleReferences()
 | 
						|
{
 | 
						|
    int foo = 0;
 | 
						|
    return foo;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class Foo {};
 | 
						|
void bla()
 | 
						|
{
 | 
						|
    Foo foo;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
namespace N { class Bar {}; }
 | 
						|
namespace N { class Baz {}; }
 | 
						|
N::Bar bar;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
namespace G { class App {}; }
 | 
						|
using G::App;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class Hoo;
 | 
						|
void f(const Hoo &);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class Moo {};
 | 
						|
void x()
 | 
						|
{
 | 
						|
    new Moo;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class Element {};
 | 
						|
template<typename T> struct Wrap { T member; };
 | 
						|
void g()
 | 
						|
{
 | 
						|
    Wrap<Element> con;
 | 
						|
    con.member;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
template<typename T>
 | 
						|
struct Wrapper {
 | 
						|
    T f()
 | 
						|
    {
 | 
						|
        int foo;
 | 
						|
        ++foo;
 | 
						|
        return mem;
 | 
						|
    }
 | 
						|
 | 
						|
    T mem;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
template<typename T>
 | 
						|
void f()
 | 
						|
{
 | 
						|
    T mem;
 | 
						|
    mem.foo();
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
struct Woo {
 | 
						|
    Woo();
 | 
						|
    ~Woo();
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
int muu();
 | 
						|
int muu(int);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
struct Doo {
 | 
						|
    int muu();
 | 
						|
    int muu(int);
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
template<typename T> int tuu();
 | 
						|
int tuu(int);
 | 
						|
 | 
						|
 | 
						|
 | 
						|
struct Xoo {
 | 
						|
    template<typename T> int tuu();
 | 
						|
    int tuu(int);
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
enum ET { E1 };
 | 
						|
bool e(ET e)
 | 
						|
{
 | 
						|
    return e == E1;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
struct LData { int member; };
 | 
						|
void lambda(LData foo) {
 | 
						|
    auto l = [bar=foo] { return bar.member; };
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
template<class T> class Coo;
 | 
						|
template<class T> class Coo<T*>;
 | 
						|
template<> class Coo<int>;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
template<typename T> typename T::foo n()
 | 
						|
{
 | 
						|
    typename T::bla hello;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
int rec(int n = 100)
 | 
						|
{
 | 
						|
    return n == 0 ? 0 : rec(--n);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#define FOO 3
 | 
						|
int objectLikeMacro()
 | 
						|
{
 | 
						|
    return FOO;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#define BAR(x) x
 | 
						|
int functionLikeMacro(int foo)
 | 
						|
{
 | 
						|
    return BAR(foo);
 | 
						|
}
 | 
						|
 | 
						|
template<class T>
 | 
						|
class Container
 | 
						|
{
 | 
						|
public:
 | 
						|
    T &operator[](int); T &operator()(int, int);
 | 
						|
};
 | 
						|
 | 
						|
int testOperator() {
 | 
						|
  Container<int> vec;
 | 
						|
 | 
						|
  int n = 10;
 | 
						|
  vec[n] = n * 100;
 | 
						|
  vec(n, n) = 100;
 | 
						|
}
 |