12d2a3ad8SAndrii Nakryiko // SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) 22d2a3ad8SAndrii Nakryiko 32d2a3ad8SAndrii Nakryiko /* 42d2a3ad8SAndrii Nakryiko * BTF-to-C dumper test validating no name versioning happens between 52d2a3ad8SAndrii Nakryiko * independent C namespaces (struct/union/enum vs typedef/enum values). 62d2a3ad8SAndrii Nakryiko * 72d2a3ad8SAndrii Nakryiko * Copyright (c) 2019 Facebook 82d2a3ad8SAndrii Nakryiko */ 92d2a3ad8SAndrii Nakryiko /* ----- START-EXPECTED-OUTPUT ----- */ 102d2a3ad8SAndrii Nakryiko struct S { 112d2a3ad8SAndrii Nakryiko int S; 122d2a3ad8SAndrii Nakryiko int U; 132d2a3ad8SAndrii Nakryiko }; 142d2a3ad8SAndrii Nakryiko 152d2a3ad8SAndrii Nakryiko typedef struct S S; 162d2a3ad8SAndrii Nakryiko 172d2a3ad8SAndrii Nakryiko union U { 182d2a3ad8SAndrii Nakryiko int S; 192d2a3ad8SAndrii Nakryiko int U; 202d2a3ad8SAndrii Nakryiko }; 212d2a3ad8SAndrii Nakryiko 222d2a3ad8SAndrii Nakryiko typedef union U U; 232d2a3ad8SAndrii Nakryiko 242d2a3ad8SAndrii Nakryiko enum E { 252d2a3ad8SAndrii Nakryiko V = 0, 262d2a3ad8SAndrii Nakryiko }; 272d2a3ad8SAndrii Nakryiko 282d2a3ad8SAndrii Nakryiko typedef enum E E; 292d2a3ad8SAndrii Nakryiko 302d2a3ad8SAndrii Nakryiko struct A {}; 312d2a3ad8SAndrii Nakryiko 322d2a3ad8SAndrii Nakryiko union B {}; 332d2a3ad8SAndrii Nakryiko 342d2a3ad8SAndrii Nakryiko enum C { 352d2a3ad8SAndrii Nakryiko A = 1, 362d2a3ad8SAndrii Nakryiko B = 2, 372d2a3ad8SAndrii Nakryiko C = 3, 382d2a3ad8SAndrii Nakryiko }; 392d2a3ad8SAndrii Nakryiko 402d2a3ad8SAndrii Nakryiko struct X {}; 412d2a3ad8SAndrii Nakryiko 422d2a3ad8SAndrii Nakryiko union Y {}; 432d2a3ad8SAndrii Nakryiko 442d2a3ad8SAndrii Nakryiko enum Z; 452d2a3ad8SAndrii Nakryiko 462d2a3ad8SAndrii Nakryiko typedef int X; 472d2a3ad8SAndrii Nakryiko 482d2a3ad8SAndrii Nakryiko typedef int Y; 492d2a3ad8SAndrii Nakryiko 502d2a3ad8SAndrii Nakryiko typedef int Z; 512d2a3ad8SAndrii Nakryiko 522d2a3ad8SAndrii Nakryiko /*------ END-EXPECTED-OUTPUT ------ */ 532d2a3ad8SAndrii Nakryiko f(struct{ struct S _1; S _2; union U _3; U _4; enum E _5; E _6; struct A a; union B b; enum C c; struct X x; union Y y; enum Z *z; X xx; Y yy; Z zz; } * _)542d2a3ad8SAndrii Nakryikoint f(struct { 552d2a3ad8SAndrii Nakryiko struct S _1; 562d2a3ad8SAndrii Nakryiko S _2; 572d2a3ad8SAndrii Nakryiko union U _3; 582d2a3ad8SAndrii Nakryiko U _4; 592d2a3ad8SAndrii Nakryiko enum E _5; 602d2a3ad8SAndrii Nakryiko E _6; 612d2a3ad8SAndrii Nakryiko struct A a; 622d2a3ad8SAndrii Nakryiko union B b; 632d2a3ad8SAndrii Nakryiko enum C c; 642d2a3ad8SAndrii Nakryiko struct X x; 652d2a3ad8SAndrii Nakryiko union Y y; 662d2a3ad8SAndrii Nakryiko enum Z *z; 672d2a3ad8SAndrii Nakryiko X xx; 682d2a3ad8SAndrii Nakryiko Y yy; 692d2a3ad8SAndrii Nakryiko Z zz; 702d2a3ad8SAndrii Nakryiko } *_) 712d2a3ad8SAndrii Nakryiko { 722d2a3ad8SAndrii Nakryiko return 0; 732d2a3ad8SAndrii Nakryiko } 74