Index: tests/enum_tests/.expect/funcEnum.txt
===================================================================
--- tests/enum_tests/.expect/funcEnum.txt	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
+++ tests/enum_tests/.expect/funcEnum.txt	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -0,0 +1,1 @@
+5
Index: tests/enum_tests/.expect/pointerEnum.cfa
===================================================================
--- tests/enum_tests/.expect/pointerEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
+++ tests/enum_tests/.expect/pointerEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -0,0 +1,1 @@
+v: 1
Index: tests/enum_tests/.expect/qualifiedEnum.cfa
===================================================================
--- tests/enum_tests/.expect/qualifiedEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
+++ tests/enum_tests/.expect/qualifiedEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -0,0 +1,1 @@
+l :0
Index: tests/enum_tests/.expect/voidEnum.txt
===================================================================
--- tests/enum_tests/.expect/voidEnum.txt	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
+++ tests/enum_tests/.expect/voidEnum.txt	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -0,0 +1,3 @@
+Not Equal
+0
+1
Index: tests/enum_tests/funcEnum.cfa
===================================================================
--- tests/enum_tests/funcEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
+++ tests/enum_tests/funcEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -0,0 +1,15 @@
+#include <stdio.h>
+void my_int_func(int x)
+{
+    printf( "%d\n", x );
+}
+ 
+int main()
+{
+    void (*foo)(int);
+    enum( void (*)(int) ) { FF = &my_int_func }; 
+    /* the ampersand is actually optional */
+    foo = &my_int_func;
+    foo(5);
+    return 0;
+}
Index: tests/enum_tests/pointerEnum.cfa
===================================================================
--- tests/enum_tests/pointerEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
+++ tests/enum_tests/pointerEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -0,0 +1,14 @@
+#include <fstream.hfa>
+
+struct E {
+    int x;
+};
+struct E e = {1};
+enum(E *) {
+    First = &e,
+};
+
+int main() {
+    E * v = First;
+    sout | "v: " | e.x;
+}
Index: tests/enum_tests/qualifiedEnum.cfa
===================================================================
--- tests/enum_tests/qualifiedEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
+++ tests/enum_tests/qualifiedEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -0,0 +1,13 @@
+#include <fstream.hfa>
+
+enum Level {
+  LOW,
+  MEDIUM,
+  HIGH
+};
+
+int main() {
+    enum Level l = Level.LOW;
+    sout | "l :" | l;
+    return 0;
+}
Index: tests/enum_tests/structEnum.cfa
===================================================================
--- tests/enum_tests/structEnum.cfa	(revision d958834bbaca85420da00e8a912914e2702ecacb)
+++ tests/enum_tests/structEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -24,11 +24,10 @@
 struct Point apple = first;
 // Failed due to Qualified name is currently unimplemented.
-struct Point banana = PointEnum.first;
 
 int main() {
      PointEnum vals = second;
      PointEnum val2;
-     // P1
-     val2 = vals;
+     // The failing line: assignment
+     // val2 = vals;
 
      printf("%d %c\n", apple.x, apple.y);
Index: tests/enum_tests/voidEnum.cfa
===================================================================
--- tests/enum_tests/voidEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
+++ tests/enum_tests/voidEnum.cfa	(revision 12df6fe35a1d7d73a64293320db6c3a0b195af33)
@@ -0,0 +1,26 @@
+#include <fstream.hfa>
+
+enum() voidEnum {
+    a, b, c
+    /*** 
+    * ,d = 10 // Disable; 
+    * //error: Enumerator of enum(void) cannot have an explicit initial value.
+    */
+};
+
+// void foo (const enum voidEnum & t){}
+
+int main() {
+    enum voidEnum v_1 = a;
+    enum voidEnum v_2 = b;
+    // foo(b);
+    // enum voidEnum v_3 = 10;
+    // Error as int cannot convert to void enum
+    if ( v_1 == v_2 ) {
+        sout | "Equal" | nl;
+    } else {
+        sout | "Not Equal" | nl;
+    }
+    sout | a | nl;
+    sout | b | nl;
+}
