constants/array-type-invalid.test \
constants/glog.vala \
constants/member-access.vala \
+ constants/member-access-enum.vala \
constants/strings.vala \
namespace/unique.vala \
arrays/cast-silent-invalid.test \
control-semantic/variadic-argument-invalid.test \
enums/default-gtype.vala \
enums/enum_only.vala \
+ enums/enum-boxed.vala \
enums/enum-no-gtype.vala \
enums/enum-gtype-too-short.test \
enums/enums.vala \
--- /dev/null
+enum Foo {
+ MANAM = 23,
+ MINIM = 42
+}
+
+const Foo FOO = Foo.MANAM;
+const Foo FAZ = Foo.MINIM;
+
+class Bar {
+ public unowned Foo? foo;
+
+ public Bar (Foo _foo) {
+ foo = _foo;
+ }
+}
+
+void main () {
+ Bar bar;
+ {
+ bar = new Bar (FOO);
+ }
+ assert (bar.foo == 23);
+ {
+ bar.foo = FAZ;
+ }
+ assert (bar.foo == 42);
+}
--- /dev/null
+enum Foo {
+ BAR = 23
+}
+
+const Foo FOO = Foo.BAR;
+
+[Flags]
+enum Bar {
+ FOO = 42
+}
+
+const Bar BAR = Bar.FOO;
+
+void main () {
+ {
+ Foo? foo = Foo.BAR;
+ assert (foo == 23);
+ }
+ {
+ Foo? foo = FOO;
+ assert (foo == 23);
+ }
+ {
+ var foo = (Foo?) FOO;
+ assert (foo == 23);
+ }
+ {
+ Bar? bar = Bar.FOO;
+ assert (bar == 42);
+ }
+ {
+ Bar? bar = BAR;
+ assert (bar == 42);
+ }
+ {
+ var bar = (Bar?) BAR;
+ assert (bar == 42);
+ }
+}
if (s != null && s.is_simple_type ()) {
return !nullable;
}
+ if (type_symbol is Enum) {
+ return !nullable;
+ }
return false;
}