ANN Type typedef_base(Type) __attribute__((pure));
ANN Type array_base(Type) __attribute__((pure));
ANN m_bool type_ref(Type) __attribute__((pure));
-__attribute__((returns_nonnull))
-ANN Type template_parent(const Env, const Type type);
ANN Type actual_type(const struct Gwion_* gwion, const Type t);
ANN static inline m_uint env_push_type(const Env env, const Type type) { return env_push(env, type, type->nspc); }
ANN m_bool is_fptr(const struct Gwion_*, const Type t);
emit_ext_ctor(emit, type->nspc->pre_ctor);
}
-ANN static inline void tmpl_ctor(const Emitter emit, const Type type) {
- const Type t = template_parent(emit->env, type);
- maybe_ctor(emit, t);
-}
-
ANN static void emit_pre_ctor(const Emitter emit, const Type type) {
if(type->e->parent)
emit_pre_ctor(emit, type->e->parent);
return t;
}
-__attribute__((returns_nonnull))
-ANN Type template_parent(const Env env, const Type type) {
- const m_str name = get_type_name(env, type->name, 0);
- return nspc_lookup_type1(type->nspc->parent, insert_symbol(name));
-}
-
ANN m_bool type_ref(Type t) {
do {
if(GET_FLAG(t, empty))