summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2015-05-13 17:15:20 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2015-05-13 17:15:45 +0100
commite90e3af8b5cd9f54d8f2d4c5dee0f1142d3bce71 (patch)
tree5857fc34d23b78604705daf0906c876a774eaae3 /src/tests
parente6ed156e390919b8cd4fef4145cbc3abf075ebbf (diff)
downloadefl-e90e3af8b5cd9f54d8f2d4c5dee0f1142d3bce71.tar.gz
eolian: fix evaluation of "undefined" enum fields
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/eolian/data/enum.eo11
-rw-r--r--src/tests/eolian/eolian_parsing.c7
2 files changed, 18 insertions, 0 deletions
diff --git a/src/tests/eolian/data/enum.eo b/src/tests/eolian/data/enum.eo
index 49bc3697e1..3b16a2ac98 100644
--- a/src/tests/eolian/data/enum.eo
+++ b/src/tests/eolian/data/enum.eo
@@ -16,6 +16,17 @@ enum Baz {
flag3 = 1 << 2
}
+enum Value {
+ foo,
+ bar,
+ baz = 2,
+ bah,
+ bam,
+ pants
+}
+
+const Pants: int = Value.pants;
+
const Bah: int = Baz.flag1;
class Enum {
diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c
index c94248d1a3..5eefe74d3f 100644
--- a/src/tests/eolian/eolian_parsing.c
+++ b/src/tests/eolian/eolian_parsing.c
@@ -916,6 +916,13 @@ START_TEST(eolian_enum)
fail_if(v.type != EOLIAN_EXPR_INT);
fail_if(v.value.i != (1 << 0));
+ fail_if(!(var = eolian_variable_constant_get_by_name("Pants")));
+ fail_if(eolian_variable_type_get(var) != EOLIAN_VAR_CONSTANT);
+ fail_if(!(exp = eolian_variable_value_get(var)));
+ v = eolian_expression_eval(exp, EOLIAN_MASK_ALL);
+ fail_if(v.type != EOLIAN_EXPR_INT);
+ fail_if(v.value.i != 5);
+
eolian_shutdown();
}
END_TEST