xref: /llvm-project/lldb/test/API/lang/cpp/scratch-context-merging/structs/main.cpp (revision 03a8e70a192f382ae700d761e46e2299a38f58db)
1*03a8e70aSRaphael Isemann // In top-level scope.
2*03a8e70aSRaphael Isemann struct TopLevelStruct {
3*03a8e70aSRaphael Isemann   int member;
4*03a8e70aSRaphael Isemann };
5*03a8e70aSRaphael Isemann TopLevelStruct top_level_struct;
6*03a8e70aSRaphael Isemann 
7*03a8e70aSRaphael Isemann // Nested in a class.
8*03a8e70aSRaphael Isemann struct OuterStruct {
9*03a8e70aSRaphael Isemann   struct InnerStruct {
10*03a8e70aSRaphael Isemann     int member;
11*03a8e70aSRaphael Isemann   };
12*03a8e70aSRaphael Isemann };
13*03a8e70aSRaphael Isemann OuterStruct::InnerStruct inner_struct;
14*03a8e70aSRaphael Isemann 
15*03a8e70aSRaphael Isemann // Behind typedef.
16*03a8e70aSRaphael Isemann struct UnderlyingTypedefStruct {
17*03a8e70aSRaphael Isemann   int member;
18*03a8e70aSRaphael Isemann };
19*03a8e70aSRaphael Isemann typedef UnderlyingTypedefStruct TypedefStruct;
20*03a8e70aSRaphael Isemann TypedefStruct typedef_struct;
21*03a8e70aSRaphael Isemann 
22*03a8e70aSRaphael Isemann // In namespace.
23*03a8e70aSRaphael Isemann namespace NS {
24*03a8e70aSRaphael Isemann struct NamespaceStruct {
25*03a8e70aSRaphael Isemann   int member;
26*03a8e70aSRaphael Isemann };
27*03a8e70aSRaphael Isemann } // namespace NS
28*03a8e70aSRaphael Isemann NS::NamespaceStruct namespace_struct;
29*03a8e70aSRaphael Isemann 
30*03a8e70aSRaphael Isemann // In unnamed namespace.
31*03a8e70aSRaphael Isemann namespace {
32*03a8e70aSRaphael Isemann struct UnnamedNamespaceStruct {
33*03a8e70aSRaphael Isemann   int member;
34*03a8e70aSRaphael Isemann };
35*03a8e70aSRaphael Isemann } // namespace
36*03a8e70aSRaphael Isemann UnnamedNamespaceStruct unnamed_namespace_struct;
37*03a8e70aSRaphael Isemann 
38*03a8e70aSRaphael Isemann // In linkage spec.
39*03a8e70aSRaphael Isemann extern "C" {
40*03a8e70aSRaphael Isemann struct ExternCStruct {
41*03a8e70aSRaphael Isemann   int member;
42*03a8e70aSRaphael Isemann };
43*03a8e70aSRaphael Isemann }
44*03a8e70aSRaphael Isemann ExternCStruct extern_c_struct;
45*03a8e70aSRaphael Isemann 
main()46*03a8e70aSRaphael Isemann int main() {
47*03a8e70aSRaphael Isemann   struct DeclInFunc {
48*03a8e70aSRaphael Isemann     int member;
49*03a8e70aSRaphael Isemann   };
50*03a8e70aSRaphael Isemann 
51*03a8e70aSRaphael Isemann   DeclInFunc decl_in_func;
52*03a8e70aSRaphael Isemann   return unnamed_namespace_struct.member; // break here
53*03a8e70aSRaphael Isemann }
54