Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/enum_tests/enumInlineValue.cfa

    r85855b0 reb7586e  
    11#include <fstream.hfa>
    2 #include <enum.hfa>
    3 
    4 enum(int) A !{
    5     a = 10
     2enum enumA {
     3    A=5, B, C=10, D
    64};
    75
    8 enum(int) B {
    9     b = 20
     6enum enumB {
     7    inline enumA,
     8    E
    109};
    1110
    12 enum(int) AB {
    13     inline A,
    14     inline B,
    15     ab = 30
    16 };
    17 
    18 enum(int) C {
    19     c = 40
    20 };
    21 
    22 enum(int) D {
    23     d = 50
    24 };
    25 
    26 enum(int) CD {
    27     inline C,
    28     inline D,
    29     cd = 60
    30 };
    31 
    32 enum(int) ACD {
    33     inline A,
    34     inline CD,
    35     acd = 70
    36 };
    37 
    38 // Note: variable name (cat in this case) cannot be overloaded with those declared in enum,
    39 // Probably for the same reason as const overloading problem
    40 // i.e. int identity_t(enum ACD a) would not work as the valueE(a) is ambigious currently
    41 int identity_t(enum ACD cat) {
    42     return valueE(cat);
     11int main() {
     12    enum enumB val = A;
     13    sout | "enumB.A is" | val;
     14    enum enumB val2 = enumB.B;
     15    sout | "enumB.B is" | val2;
     16    sout | "enumB.D is" | enumB.D;
     17    sout | "enumB.E is" | enumB.E;
    4318}
    44 
    45 int main() {
    46     // Note: We need to use qualified name syntax even if no ! hidding
    47     // Because Inline introduce ambiguity on symbols
    48     sout | "Symbols (enumerator) should have the same values:" |nl;
    49     sout | "Symbol a: (10) " | valueE(A.a) | "," | valueE(AB.a) | "," | valueE(ACD.a) | nl;
    50     sout | "Symbol b: (20) " | valueE(B.b) | "," | valueE(AB.b) | nl;
    51     sout | "Symbol ab: (30) " | valueE(AB.ab) | nl;
    52     sout | "Symbol c: (40) " | valueE(C.c) | "," | valueE(CD.c) | "," | valueE(ACD.c) | nl;
    53     sout | "Symbol d: (50) " | valueE(D.d) | "," | valueE(CD.d) | "," | valueE(ACD.d) | nl;
    54     sout | "Symbol cd: (60) " | valueE(CD.cd) | "," | valueE(ACD.cd) | nl;
    55     sout | "Symbol acd: (70) " | valueE(ACD.acd) | nl;
    56 
    57     sout | "Casting/Upcasting:" | nl;
    58     sout | "Symbol a: (10) " | valueE((A)A.a) | "," | valueE((AB)A.a) | "," | valueE((ACD)A.a) | nl;
    59     sout | "Symbol b: (20) " | valueE((B)B.b) | "," | valueE((AB)B.b) | nl;
    60     sout | "Symbol ab: (30) " | valueE((AB)AB.ab) | nl;
    61     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;
    62     sout | "Symbol d: (50) " | valueE((D)D.d) | "," | valueE((CD)D.d) | "," | valueE((ACD)D.d) | "," | valueE((ACD)CD.d) | nl;
    63     sout | "Symbol cd: (60) " | valueE((CD)CD.cd) | "," | valueE((ACD)CD.cd) | nl;
    64     sout | "Symbol acd: (70) " | valueE((ACD)ACD.acd) | nl;
    65 
    66     sout | "Function Call:" | nl;
    67     sout | "Symbol a: (10) " | identity_t(A.a) | "," | identity_t(ACD.a) | nl;
    68     sout | "Symbol c: (40) " | identity_t(C.c) | "," | identity_t(ACD.c) | nl;
    69     sout | "Symbol d: (50) " | identity_t(D.d) | "," | identity_t(ACD.d) | nl;
    70     sout | "Symbol cd: (60) " | identity_t(CD.cd) | "," | identity_t(ACD.cd) | nl;
    71     sout | "Symbol acd: (70) " | identity_t(ACD.acd) | nl;
    72 }
Note: See TracChangeset for help on using the changeset viewer.