diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-01-26 17:39:44 +0000 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-01-26 17:39:44 +0000 |
| commit | f47f25f9420e094f9eafe68b0844b860033da7cc (patch) | |
| tree | e47e75c280984db06c03afbf6518921f962b15b2 /src/check_expr.c | |
| parent | e85458919ccdd6330a9e090c49343b00468e5b39 (diff) | |
Fix pointer differences (issue #11); remove #dll_import
Diffstat (limited to 'src/check_expr.c')
| -rw-r--r-- | src/check_expr.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/check_expr.c b/src/check_expr.c index dd92fc38e..65850a03b 100644 --- a/src/check_expr.c +++ b/src/check_expr.c @@ -3882,6 +3882,19 @@ ExprKind check__expr_base(Checker *c, Operand *o, AstNode *node, Type *type_hint o->value = make_exact_value_from_basic_literal(*bl); case_end; + case_ast_node(bd, BasicDirective, node); + if (str_eq(bd->name, str_lit("file"))) { + o->type = t_untyped_string; + o->value = make_exact_value_string(bd->token.pos.file); + } else if (str_eq(bd->name, str_lit("line"))) { + o->type = t_untyped_integer; + o->value = make_exact_value_integer(bd->token.pos.line); + } else { + GB_PANIC("Unknown basic basic directive"); + } + o->mode = Addressing_Constant; + case_end; + case_ast_node(pl, ProcLit, node); Type *type = check_type(c, pl->type); if (type == NULL || !is_type_proc(type)) { |