-Subproject commit d1459fb3a76e2a75731ab77055ae57dbabfe3cd7
+Subproject commit e04d8382825ddf63f52b834dee13d8b85902fb21
ERR_B(0, "during import: class '%s' already imported.", type->name)
if(gwi->templater.n) {
const ID_List types = templater_def(&gwi->templater);
- type->def = new_class_def(0, new_id_list(insert_symbol(type->name), 0), NULL, NULL);
+ type->def = new_class_def(0, insert_symbol(type->name), NULL, NULL);
type->def->tmpl = new_tmpl_class(types, -1);
type->def->type = type;
SET_FLAG(type, template);
SET_FLAG(t, empty);
} else {
const ae_flag flag = base->def ? base->def->flag : 0;
- const Class_Def def = new_class_def(flag, new_id_list(stmt->xid, stmt->td->xid->pos),
- stmt->td, NULL);
+ const Class_Def def = new_class_def(flag, stmt->xid, stmt->td, NULL);
CHECK_BB(scan0_class_def(env, def))
stmt->type = def->type;
}
vector_add(&env->scope->nspc_stack, (vtype)env->curr);
env->curr = env->global_nspc;
}
- CHECK_BB(scan0_defined(env, class_def->name->xid, class_def->name->pos)) // test for type ?
- CHECK_BB(isres(class_def->name->xid))
+// CHECK_BB(scan0_defined(env, class_def->xid, class_def->name->pos)) // test for type ?
+ CHECK_BB(scan0_defined(env, class_def->xid, 0)) // test for type ?
+ CHECK_BB(isres(class_def->xid))
return GW_OK;
}
ANN static Type scan0_class_def_init(const Env env, const Class_Def class_def) { GWDEBUG_EXE
- const Type t = new_type(++env->scope->type_xid, s_name(class_def->name->xid), t_object);
+ const Type t = new_type(++env->scope->type_xid, s_name(class_def->xid), t_object);
t->owner = env->curr;
t->nspc = new_nspc(t->name);
t->nspc->parent = GET_FLAG(class_def, global) ? env_nspc(env) : env->curr;
t->def = class_def;
t->flag = class_def->flag;
if(!strstr(t->name, "<"))
- nspc_add_type(env->curr, class_def->name->xid, t);
+ nspc_add_type(env->curr, class_def->xid, t);
if(class_def->tmpl) {
SET_FLAG(t, template);
SET_FLAG(class_def, template);
*str = '\0';
}
-ANEW ANN static ID_List template_id(const Env env, const Class_Def c, const Type_List call) {
+ANEW ANN static Symbol template_id(const Env env, const Class_Def c, const Type_List call) {
struct tmpl_info info = { .cdef=c, .call=call };
vector_init(&info.type);
vector_init(&info.size);
template_name(env, &info, name);
vector_release(&info.type);
vector_release(&info.size);
- return new_id_list(insert_symbol(name), call->td->xid->pos);
+ return insert_symbol(name);
}
ANN m_bool template_match(ID_List base, Type_List call) {
}
ANN static Class_Def template_class(const Env env, const Class_Def def, const Type_List call) {
- const ID_List name = template_id(env, def, call);
- const Type t = nspc_lookup_type1(env->curr, name->xid);
- if(t) {
- free_id_list(name);
- return t->def;
- }
- return new_class_def(def->flag, name, def->ext, def->body);
+ const Symbol name = template_id(env, def, call);
+ const Type t = nspc_lookup_type1(env->curr, name);
+ return t ? t->def : new_class_def(def->flag, name, def->ext, def->body);
}
ANN m_bool template_push_types(const Env env, ID_List base, Type_List tl) {