Merge branch 'master' into blub/bc3

This commit is contained in:
Wolfgang Bumiller 2012-07-27 13:40:34 +02:00
commit f103544c95
2 changed files with 14 additions and 0 deletions

13
ast.c
View file

@ -432,6 +432,19 @@ void ast_block_delete(ast_block *self)
mem_d(self);
}
bool ast_block_set_type(ast_block *self, ast_expression *from)
{
if (self->expression.next)
ast_delete(self->expression.next);
self->expression.vtype = from->expression.vtype;
if (from->expression.next) {
self->expression.next = ast_type_copy(self->expression.node.context, from->expression.next);
if (!self->expression.next)
return false;
}
return true;
}
ast_function* ast_function_new(lex_ctx ctx, const char *name, ast_value *vtype)
{
ast_instantiate(ast_function, ctx, ast_function_delete);

1
ast.h
View file

@ -361,6 +361,7 @@ struct ast_block_s
};
ast_block* ast_block_new(lex_ctx ctx);
void ast_block_delete(ast_block*);
bool ast_block_set_type(ast_block*, ast_expression *from);
MEM_VECTOR_PROTO(ast_block, ast_value*, locals);
MEM_VECTOR_PROTO(ast_block, ast_expression*, exprs);