178 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
#include "../ctu-hdr.h"
 | 
						|
 | 
						|
int callback_to_main(int x);
 | 
						|
int f(int x) {
 | 
						|
  return x - 1;
 | 
						|
}
 | 
						|
 | 
						|
int g(int x) {
 | 
						|
  return callback_to_main(x) + 1;
 | 
						|
}
 | 
						|
 | 
						|
int h_chain(int);
 | 
						|
 | 
						|
int h(int x) {
 | 
						|
  return 2 * h_chain(x);
 | 
						|
}
 | 
						|
 | 
						|
namespace myns {
 | 
						|
int fns(int x) {
 | 
						|
  return x + 7;
 | 
						|
}
 | 
						|
 | 
						|
namespace embed_ns {
 | 
						|
int fens(int x) {
 | 
						|
  return x - 3;
 | 
						|
}
 | 
						|
} // namespace embed_ns
 | 
						|
 | 
						|
class embed_cls {
 | 
						|
public:
 | 
						|
  int fecl(int x);
 | 
						|
};
 | 
						|
int embed_cls::fecl(int x) {
 | 
						|
  return x - 7;
 | 
						|
}
 | 
						|
} // namespace myns
 | 
						|
 | 
						|
class mycls {
 | 
						|
public:
 | 
						|
  int fcl(int x);
 | 
						|
  virtual int fvcl(int x);
 | 
						|
  static int fscl(int x);
 | 
						|
 | 
						|
  class embed_cls2 {
 | 
						|
  public:
 | 
						|
    int fecl2(int x);
 | 
						|
  };
 | 
						|
};
 | 
						|
 | 
						|
int mycls::fcl(int x) {
 | 
						|
  return x + 5;
 | 
						|
}
 | 
						|
int mycls::fvcl(int x) {
 | 
						|
  return x + 7;
 | 
						|
}
 | 
						|
int mycls::fscl(int x) {
 | 
						|
  return x + 6;
 | 
						|
}
 | 
						|
int mycls::embed_cls2::fecl2(int x) {
 | 
						|
  return x - 11;
 | 
						|
}
 | 
						|
 | 
						|
class derived : public mycls {
 | 
						|
public:
 | 
						|
  virtual int fvcl(int x) override;
 | 
						|
};
 | 
						|
 | 
						|
int derived::fvcl(int x) {
 | 
						|
  return x + 8;
 | 
						|
}
 | 
						|
 | 
						|
namespace chns {
 | 
						|
int chf2(int x);
 | 
						|
 | 
						|
class chcls {
 | 
						|
public:
 | 
						|
  int chf4(int x);
 | 
						|
};
 | 
						|
 | 
						|
int chf3(int x) {
 | 
						|
  return chcls().chf4(x);
 | 
						|
}
 | 
						|
 | 
						|
int chf1(int x) {
 | 
						|
  return chf2(x);
 | 
						|
}
 | 
						|
}
 | 
						|
 | 
						|
typedef struct { int n; } Anonymous;
 | 
						|
int fun_using_anon_struct(int n) { Anonymous anon; anon.n = n; return anon.n; }
 | 
						|
 | 
						|
int other_macro_diag(int x) {
 | 
						|
  MACRODIAG();
 | 
						|
  return x;
 | 
						|
}
 | 
						|
 | 
						|
extern const int extInt = 2;
 | 
						|
namespace intns {
 | 
						|
extern const int extInt = 3;
 | 
						|
}
 | 
						|
struct S {
 | 
						|
  int a;
 | 
						|
};
 | 
						|
extern const S extS = {.a = 4};
 | 
						|
struct A {
 | 
						|
  static const int a;
 | 
						|
};
 | 
						|
const int A::a = 3;
 | 
						|
struct SC {
 | 
						|
  const int a;
 | 
						|
};
 | 
						|
SC extSC = {.a = 8};
 | 
						|
struct ST {
 | 
						|
  static struct SC sc;
 | 
						|
};
 | 
						|
struct SC ST::sc = {.a = 2};
 | 
						|
struct SCNest {
 | 
						|
  struct SCN {
 | 
						|
    const int a;
 | 
						|
  } scn;
 | 
						|
};
 | 
						|
SCNest extSCN = {.scn = {.a = 9}};
 | 
						|
SCNest::SCN extSubSCN = {.a = 1};
 | 
						|
struct SCC {
 | 
						|
  SCC(int c) : a(c) {}
 | 
						|
  const int a;
 | 
						|
};
 | 
						|
SCC extSCC{7};
 | 
						|
union U {
 | 
						|
  const int a;
 | 
						|
  const unsigned int b;
 | 
						|
};
 | 
						|
U extU = {.a = 4};
 | 
						|
 | 
						|
class TestAnonUnionUSR {
 | 
						|
public:
 | 
						|
  inline float f(int value) {
 | 
						|
    union {
 | 
						|
      float f;
 | 
						|
      int i;
 | 
						|
    };
 | 
						|
    i = value;
 | 
						|
    return f;
 | 
						|
  }
 | 
						|
  static const int Test;
 | 
						|
};
 | 
						|
const int TestAnonUnionUSR::Test = 5;
 | 
						|
 | 
						|
struct DefaultParmContext {
 | 
						|
  static const int I;
 | 
						|
  int f();
 | 
						|
};
 | 
						|
 | 
						|
int fDefaultParm(int I = DefaultParmContext::I) {
 | 
						|
  return I;
 | 
						|
}
 | 
						|
 | 
						|
int testImportOfIncompleteDefaultParmDuringImport(int I) {
 | 
						|
  return fDefaultParm(I);
 | 
						|
}
 | 
						|
 | 
						|
const int DefaultParmContext::I = 0;
 | 
						|
 | 
						|
int DefaultParmContext::f() {
 | 
						|
  return fDefaultParm();
 | 
						|
}
 | 
						|
 | 
						|
class TestDelegateConstructor {
 | 
						|
public:
 | 
						|
  TestDelegateConstructor() : TestDelegateConstructor(2) {}
 | 
						|
  TestDelegateConstructor(int) {}
 | 
						|
};
 | 
						|
 | 
						|
int testImportOfDelegateConstructor(int i) {
 | 
						|
  TestDelegateConstructor TDC;
 | 
						|
  return i;
 | 
						|
}
 |