diff options
| author | gingerBill <bill@gingerbill.org> | 2018-04-10 20:46:32 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2018-04-10 20:46:32 +0100 |
| commit | e71a6413799577b2e422026003cfcd0fac72c7c7 (patch) | |
| tree | c242edc3d1c1cd7d12c1687b8b3f82f32b813527 /src | |
| parent | e2eca45188bc05cc11fe7934e55fe63e27165974 (diff) | |
Fix internal compiler error trigger for issue #212
Diffstat (limited to 'src')
| -rw-r--r-- | src/check_expr.cpp | 4 | ||||
| -rw-r--r-- | src/types.cpp | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index d2da4d02e..c2ca5471a 100644 --- a/src/check_expr.cpp +++ b/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) { diff --git a/src/types.cpp b/src/types.cpp index d3029cd6c..e74aa88af 100644 --- a/src/types.cpp +++ b/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; } |