Browse Source

All enums in array indices

gingerBill 7 years ago
parent
commit
ffc4f01470
2 changed files with 3 additions and 3 deletions
  1. 2 2
      core/runtime/core.odin
  2. 1 1
      src/check_expr.cpp

+ 2 - 2
core/runtime/core.odin

@@ -429,11 +429,11 @@ reserve_dynamic_array :: proc(array: ^$T/[dynamic]$E, capacity: int, loc := #cal
 }
 }
 
 
 @(builtin)
 @(builtin)
-incl :: proc(s: ^$B/bit_set[$T], elem: T) {
+incl :: inline proc(s: ^$B/bit_set[$T], elem: T) {
 	s^ |= {elem};
 	s^ |= {elem};
 }
 }
 @(builtin)
 @(builtin)
-excl :: proc(s: ^$B/bit_set[$T], elem: T) {
+excl :: inline proc(s: ^$B/bit_set[$T], elem: T) {
 	s^ &~= {elem};
 	s^ &~= {elem};
 }
 }
 
 

+ 1 - 1
src/check_expr.cpp

@@ -2579,7 +2579,7 @@ bool check_index_value(CheckerContext *c, bool open_range, Ast *index_value, i64
 		return false;
 		return false;
 	}
 	}
 
 
-	if (!is_type_integer(operand.type)) {
+	if (!is_type_integer(operand.type) && !is_type_enum(operand.type)) {
 		gbString expr_str = expr_to_string(operand.expr);
 		gbString expr_str = expr_to_string(operand.expr);
 		error(operand.expr, "Index '%s' must be an integer", expr_str);
 		error(operand.expr, "Index '%s' must be an integer", expr_str);
 		gb_string_free(expr_str);
 		gb_string_free(expr_str);