Fix #location for anonymous procedures

This commit is contained in:
Ginger Bill
2017-06-18 17:35:27 +01:00
parent 04501c93fe
commit 2957f007e3
2 changed files with 14 additions and 5 deletions

View File

@@ -200,9 +200,10 @@ proc make_source_code_location(file: string, line, column: i64, procedure: strin
const DEFAULT_ALIGNMENT = align_of([vector 4]f32);
proc __check_context() {
var c = &__context;
proc __init_context(c: ^Context) {
if c == nil {
return;
}
if c.allocator.procedure == nil {
c.allocator = default_allocator();
}
@@ -211,6 +212,11 @@ proc __check_context() {
}
}
proc __check_context() {
__init_context(&__context);
}
proc alloc(size: int, alignment: int = DEFAULT_ALIGNMENT) -> rawptr #inline {
__check_context();
var a = context.allocator;

View File

@@ -3677,7 +3677,7 @@ irValue *ir_build_builtin_proc(irProcedure *proc, AstNode *expr, TypeAndValue tv
Entity *e = entity_of_ident(proc->module->info, ident);
GB_ASSERT(e != NULL);
if (e->parent_proc_decl != NULL) {
if (e->parent_proc_decl != NULL && e->parent_proc_decl->entity_count > 0) {
procedure = e->parent_proc_decl->entities[0]->token.string;
} else {
procedure = str_lit("");
@@ -4665,7 +4665,10 @@ irValue *ir_build_expr(irProcedure *proc, AstNode *expr) {
TypeTuple *pt = &type->params->Tuple;
if (arg_count < type->param_count) {
String procedure = proc->entity->token.string;
String procedure = {};
if (proc->entity != NULL) {
procedure = proc->entity->token.string;
}
TokenPos pos = ast_node_token(ce->proc).pos;
isize end = type->param_count;