diff options
| author | gingerBill <ginger.bill.22@gmail.com> | 2016-08-16 20:08:40 +0100 |
|---|---|---|
| committer | gingerBill <ginger.bill.22@gmail.com> | 2016-08-16 20:08:40 +0100 |
| commit | e8530ca883edd79c188443ced54cea2c5d3ad4ed (patch) | |
| tree | 4e264d51cbbbe41f0dc7eed16bcdbb73f372c844 /src/checker | |
| parent | 2d49a615630eb27d95c7cde67722f419a1977996 (diff) | |
Win32 Demo: OpenGL Context
Diffstat (limited to 'src/checker')
| -rw-r--r-- | src/checker/checker.cpp | 8 | ||||
| -rw-r--r-- | src/checker/expr.cpp | 9 | ||||
| -rw-r--r-- | src/checker/stmt.cpp | 7 | ||||
| -rw-r--r-- | src/checker/type.cpp | 13 |
4 files changed, 16 insertions, 21 deletions
diff --git a/src/checker/checker.cpp b/src/checker/checker.cpp index 225e94a95..1bc50a890 100644 --- a/src/checker/checker.cpp +++ b/src/checker/checker.cpp @@ -633,14 +633,6 @@ void check_parsed_files(Checker *c) { add_file_entity(c, td->name, e, d); case_end; - case_ast_node(ad, AliasDecl, decl); - ast_node(n, Ident, ad->name); - Entity *e = make_entity_alias_name(c->allocator, c->global_scope, n->token, NULL); - DeclInfo *d = make_declaration_info(c->allocator, e->parent); - d->type_expr = ad->type; - add_file_entity(c, ad->name, e, d); - case_end; - case_ast_node(pd, ProcDecl, decl); ast_node(n, Ident, pd->name); Token token = n->token; diff --git a/src/checker/expr.cpp b/src/checker/expr.cpp index f5b3d2158..542afb853 100644 --- a/src/checker/expr.cpp +++ b/src/checker/expr.cpp @@ -600,10 +600,10 @@ void check_is_expressible(Checker *c, Operand *o, Type *type) { if (!is_type_integer(o->type) && is_type_integer(type)) { error(&c->error_collector, ast_node_token(o->expr), "`%s` truncated to `%s`", a, b); } else { - error(&c->error_collector, ast_node_token(o->expr), "`%s` overflows `%s`", a, b); + error(&c->error_collector, ast_node_token(o->expr), "`%s = %lld` overflows `%s`", a, o->value.value_integer, b); } } else { - error(&c->error_collector, ast_node_token(o->expr), "Cannot convert `%s` to `%s`", a, b); + error(&c->error_collector, ast_node_token(o->expr), "Cannot convert `%s` to `%s`", a, b); } o->mode = Addressing_Invalid; @@ -867,6 +867,11 @@ b32 check_castable_to(Checker *c, Operand *operand, Type *y) { return true; } + // proc <-> proc + if (is_type_proc(xb), is_type_proc(yb)) { + return true; + } + return false; } diff --git a/src/checker/stmt.cpp b/src/checker/stmt.cpp index 2fbe8e1d3..0ae500efc 100644 --- a/src/checker/stmt.cpp +++ b/src/checker/stmt.cpp @@ -878,12 +878,5 @@ void check_stmt(Checker *c, AstNode *node, u32 flags) { add_entity(c, c->context.scope, td->name, e); check_type_decl(c, e, td->type, NULL); case_end; - - case_ast_node(ad, AliasDecl, node); - ast_node(name, Ident, ad->name); - Entity *e = make_entity_alias_name(c->allocator, c->context.scope, name->token, NULL); - add_entity(c, c->context.scope, ad->name, e); - check_alias_decl(c, e, ad->type, NULL); - case_end; } } diff --git a/src/checker/type.cpp b/src/checker/type.cpp index e0ce88c03..0931774e5 100644 --- a/src/checker/type.cpp +++ b/src/checker/type.cpp @@ -382,6 +382,9 @@ b32 is_type_u8_slice(Type *t) { b32 is_type_vector(Type *t) { return t->kind == Type_Vector; } +b32 is_type_proc(Type *t) { + return t->kind == Type_Proc; +} Type *base_vector_type(Type *t) { if (is_type_vector(t)) { return t->vector.elem; @@ -747,10 +750,12 @@ gbString write_type_to_string(gbString str, Type *type) { if (type->tuple.variable_count > 0) { for (isize i = 0; i < type->tuple.variable_count; i++) { Entity *var = type->tuple.variables[i]; - GB_ASSERT(var->kind == Entity_Variable); - if (i > 0) - str = gb_string_appendc(str, ", "); - str = write_type_to_string(str, var->type); + if (var != NULL) { + GB_ASSERT(var->kind == Entity_Variable); + if (i > 0) + str = gb_string_appendc(str, ", "); + str = write_type_to_string(str, var->type); + } } } break; |