source: src/tests/globals.c @ 783dfd6

aaron-thesisarm-ehcleanup-dtorsdeferred_resndemanglerjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerresolv-newwith_gc
Last change on this file since 783dfd6 was 783dfd6, checked in by Thierry Delisle <tdelisle@…>, 5 years ago

Added test for initialization of globals

  • Property mode set to 100644
File size: 1.3 KB
Line 
1#include <fstream>
2
3struct value_t {
4        int value;
5};
6
7void ?{}( value_t * this ) { this->value = 22; }
8
9//Standard case
10struct g_t {
11        value_t val;
12};
13
14void ?{}( g_t * this ) { (&this->val){}; }
15
16g_t g;
17
18//Autogen case
19struct ga_t {
20        value_t val;
21};
22
23ga_t ga;
24
25//Inline case
26struct gi_t;
27void ?{}( gi_t * this );
28
29struct gi_t {
30        value_t val;
31} gi;
32
33void ?{}( gi_t * this ) { (&this->val){}; }
34
35//Inline autogen case
36struct gia_t {
37        value_t val;
38} gia;
39
40//Static case
41struct gs_t {
42        value_t val;
43};
44
45void ?{}( gs_t * this ) { (&this->val){}; }
46
47static gs_t gs;
48
49//Static autogen case
50struct gsa_t {
51        value_t val;
52};
53
54static gsa_t gsa;
55
56//Static inline case
57struct gsi_t;
58void ?{}( gsi_t * this );
59
60static struct gsi_t {
61        value_t val;
62} gsi;
63
64void ?{}( gsi_t * this ) { (&this->val){}; }
65
66//Static inline autogen case
67static struct gsia_t {
68        value_t val;
69} gsia;
70
71int main() {
72        sout | "static\tinline\tautogen\tvalue" | endl;
73
74        sout | "no \t\tno \t\tno \t\t" | g.val.value    | endl;
75        sout | "no \t\tno \t\tyes\t\t" | ga.val.value   | endl;
76        sout | "no \t\tyes\t\tno \t\t" | gi.val.value   | endl;
77        sout | "no \t\tyes\t\tyes\t\t" | gia.val.value  | endl;
78        sout | "yes\t\tno \t\tno \t\t" | gs.val.value   | endl;
79        sout | "yes\t\tno \t\tyes\t\t" | gsa.val.value  | endl;
80        sout | "yes\t\tyes\t\tno \t\t" | gsi.val.value  | endl;
81        sout | "yes\t\tyes\t\tyes\t\t" | gsia.val.value | endl;
82
83}
Note: See TracBrowser for help on using the repository browser.