From: fennecdjay Date: Tue, 1 Oct 2019 19:40:31 +0000 (+0200) Subject: :art: inline check_implicit in is_int X-Git-Tag: nightly~2198^2~205 X-Git-Url: http://10.10.0.4:5575/?a=commitdiff_plain;h=763226a8dc0a5003ebb4c70ec43970745c8cdc02;p=gwion.git :art: inline check_implicit in is_int --- diff --git a/src/parse/check.c b/src/parse/check.c index 0688d540..6bcd6278 100644 --- a/src/parse/check.c +++ b/src/parse/check.c @@ -402,10 +402,22 @@ ANN static Type at_depth(const Env env, const Array_Sub array) { } static inline m_bool index_is_int(const Env env, Exp e, m_uint *depth) { - do if(isa(e->type, env->gwion->type[et_int]) < 0) - ERR_B(e->pos, _("array index %i must be of type 'int', not '%s'"), - *depth, e->type->name) +// do if(isa(e->type, env->gwion->type[et_int]) < 0) +// ERR_B(e->pos, _("array index %i must be of type 'int', not '%s'"), +// *depth, e->type->name) + + // do CHECK_BB(check_implicit(env, "@access", e, env->gwion->type[et_int])) + + const m_str str = "@access"; + const Type t = env->gwion->type[et_int]; + do { + struct Implicit imp = { .e=e, .t=t, .pos=e->pos }; + struct Op_Import opi = { .op=insert_symbol(str), .lhs=e->type, + .rhs=t, .data=(uintptr_t)&imp, .pos=e->pos }; + CHECK_OB(op_check(env, &opi)) + e->nspc = env->curr; + } while(++(*depth) && (e = e->next)); return GW_OK; }