
There are only a few cases of importing a frienddecl which is currently supported. This patch aims to improve the friend import process. Set FriendObjectKind in case of decls, insert friend into the friend chain correctly, checks structurally equivalent in a more advanced manner. Test cases added as well. llvm-svn: 330847
49 lines
479 B
C++
49 lines
479 B
C++
struct A {
|
|
public:
|
|
int x;
|
|
};
|
|
|
|
struct B : A {
|
|
float y;
|
|
float foo();
|
|
};
|
|
|
|
struct C {
|
|
C(int i = 10);
|
|
C(const C&);
|
|
C &operator=(C&);
|
|
~C();
|
|
};
|
|
|
|
enum E {
|
|
b = 1
|
|
};
|
|
|
|
//Friend import tests
|
|
void f();
|
|
int g(int a);
|
|
struct X;
|
|
struct Y;
|
|
|
|
struct F1 {
|
|
public:
|
|
int x;
|
|
friend struct X;
|
|
friend int g(int);
|
|
friend void f();
|
|
};
|
|
|
|
struct F2 {
|
|
public:
|
|
int x;
|
|
friend struct X;
|
|
friend void f();
|
|
};
|
|
|
|
struct F3 {
|
|
public:
|
|
int x;
|
|
friend int g(int);
|
|
friend void f();
|
|
};
|