Browse Source

Fix internal compiler error trigger for issue #212

gingerBill 7 years ago
parent
commit
e71a641379
2 changed files with 8 additions and 0 deletions
  1. 4 0
      src/check_expr.cpp
  2. 4 0
      src/types.cpp

+ 4 - 0
src/check_expr.cpp

@@ -5544,6 +5544,10 @@ ExprKind check_expr_base_internal(Checker *c, Operand *o, AstNode *node, Type *t
 				is_constant = false;
 			}
 
+			if (bet == t_invalid) {
+				break;
+			}
+
 			for (; index < cl->elems.count; index++) {
 				AstNode *e = cl->elems[index];
 				if (e == nullptr) {

+ 4 - 0
src/types.cpp

@@ -1201,6 +1201,10 @@ bool type_has_nil(Type *t) {
 }
 
 bool elem_type_can_be_constant(Type *t) {
+	t = base_type(t);
+	if (t == t_invalid) {
+		return false;
+	}
 	if (is_type_any(t) || is_type_union(t)) {
 		return false;
 	}