source: tests/enum_tests/enumInlineValue.cfa @ d68de59

Last change on this file since d68de59 was d68de59, checked in by JiadaL <j82liang@…>, 4 months ago

Update enumInlineValue.cfa

  • Property mode set to 100644
File size: 2.0 KB
Line 
1#include <fstream.hfa>
2#include <enum.hfa>
3
4enum(int) A {
5    a = 10
6};
7
8enum(int) B {
9    b = 20
10};
11
12enum(int) AB {
13    inline A,
14    inline B,
15    ab = 30
16};
17
18enum(int) C {
19    c = 40
20};
21
22enum(int) D {
23    d = 50
24};
25
26enum(int) CD {
27    inline C,
28    inline D,
29    cd = 60
30};
31
32enum(int) ACD {
33    inline A,
34    inline CD,
35    acd = 70
36};
37
38int identity(A a) {
39    return valueE(a);
40}
41
42int main() {
43    // Note: We need to use qualified name syntax even if no ! hidding
44    // Because Inline introduce ambiguity on symbols
45    // sout | "Symbols (enumerator) should have the same values:" |nl;
46    // sout | "Symbol a: (10) " | valueE(A.a) | "," | valueE(AB.a) | "," | valueE(ACD.a) | nl;
47    // sout | "Symbol b: (20) " | valueE(B.b) | "," | valueE(AB.b) | nl;
48    // sout | "Symbol ab: (30) " | valueE(AB.ab) | nl;
49    // sout | "Symbol c: (40) " | valueE(C.c) | "," | valueE(CD.c) | "," | valueE(ACD.c) | nl;
50    // sout | "Symbol d: (50) " | valueE(D.d) | "," | valueE(CD.d) | "," | valueE(ACD.d) | nl;
51    // sout | "Symbol cd: (60) " | valueE(CD.cd) | "," | valueE(ACD.cd) | nl;
52    // sout | "Symbol acd: (70) " | valueE(ACD.acd) | nl;
53
54    // sout | "Casting/Upcasting:" | nl;
55    // sout | "Symbol a: (10) " | valueE((A)A.a) | "," | valueE((AB)A.a) | "," | valueE((ACD)A.a) | nl;
56    // sout | "Symbol b: (20) " | valueE((B)B.b) | "," | valueE((AB)B.b) | nl;
57    // sout | "Symbol ab: (30) " | valueE((AB)AB.ab) | nl;
58    // sout | "Symbol c: (40) " | valueE((C)C.c) | "," | valueE((CD)C.c) | "," | valueE((ACD)C.c) | "," | valueE((CD)CD.c)| "," | valueE((ACD)CD.c) | nl;
59    // sout | "Symbol d: (50) " | valueE((D)D.d) | "," | valueE((CD)D.d) | "," | valueE((ACD)D.d) | "," | valueE((ACD)CD.d) | nl;
60    // sout | "Symbol cd: (60) " | valueE((CD)CD.cd) | "," | valueE((ACD)CD.cd) | nl;
61    // sout | "Symbol acd: (70) " | valueE((ACD)ACD.acd) | nl;
62
63    // sout | "Function Call:" | nl;
64    // sout | "Symbol a: (10) " | identity(A.a) | "," | identity(ACD.a);
65    // sout | "Symbol c: (40) " | identity(C.c) | "," | identity(CD.c)| "," | identity(ACD.c);
66    identity(A.a);
67
68}
Note: See TracBrowser for help on using the repository browser.