aboutsummaryrefslogtreecommitdiff
path: root/src/checker/expr.cpp
diff options
context:
space:
mode:
authorGinger Bill <github@gingerbill.org>2016-10-26 12:00:40 +0100
committerGinger Bill <github@gingerbill.org>2016-10-26 12:00:40 +0100
commit6996df410456292b358b8deaabd5ba2aea7af069 (patch)
treed9876153288e8af0213a41a613b58af5f532f355 /src/checker/expr.cpp
parenta5c1e83ce401eb78ae8e5b7b6a36ec812b3dfbf0 (diff)
Fix double declarations with enum bug
Diffstat (limited to 'src/checker/expr.cpp')
-rw-r--r--src/checker/expr.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/checker/expr.cpp b/src/checker/expr.cpp
index 96b3832bd..dbddfd33e 100644
--- a/src/checker/expr.cpp
+++ b/src/checker/expr.cpp
@@ -753,10 +753,12 @@ void check_enum_type(Checker *c, Type *enum_type, Type *named_type, AstNode *nod
add_entity_use(c, f->field, e);
}
- gb_sort_array(fields, et->fields.count, cmp_enum_order);
+ GB_ASSERT(field_index <= et->fields.count);
+
+ gb_sort_array(fields, field_index, cmp_enum_order);
enum_type->Record.other_fields = fields;
- enum_type->Record.other_field_count = et->fields.count;
+ enum_type->Record.other_field_count = field_index;
enum_type->Record.enum_count = make_entity_constant(c->allocator, NULL,
make_token_ident(make_string("count")), t_int, make_exact_value_integer(enum_type->Record.other_field_count));