public common_type_node advanced_create_type(string name,location def_loc, bool type_is_interface, bool is_partial=false) { //check_name_free(name,def_loc); common_type_node partial_class = null; common_type_node rez = check_type_name_free_and_predop(name, def_loc, ref partial_class, is_partial); if (rez != null) { _ctn = rez; _types_predefined.Remove(_ctn); return rez; } if (converting_block() != block_type.namespace_block) { AddError(new ClassCanNotBeDefinedInTypeOrFunction(name, def_loc)); } SymbolTable.ClassScope scope; //(ssyy) Если создаётся интерфейс, то создаём ему специальный вид области видимости if (type_is_interface) { scope = convertion_data_and_alghoritms.symbol_table.CreateInterfaceScope(_cmn.scope, null); } else { scope = convertion_data_and_alghoritms.symbol_table.CreateClassScope(_cmn.scope, null); } common_type_node tctn=new common_type_node(name,SemanticTree.type_access_level.tal_public,_cmn, scope,def_loc); tctn.IsPartial = is_partial; if (partial_class != null) { tctn.scope.PartialScope = partial_class.scope; tctn.Merge(partial_class); } set_field_access_level(SemanticTree.field_access_level.fal_public); _cmn.scope.AddSymbol(name,new SymbolInfo(tctn)); tctn.IsInterface = type_is_interface; //_cmn.types.AddElement(tctn); _ctn=tctn; SystemLibrary.SystemLibrary.init_reference_type(tctn); return tctn; }