public SymbolInfo(function_node value) { //reference = new SymbolInfo(value); _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(common_event value) { //reference = new SymbolInfo(value); _sym_info = value; _access_level = get_class_member_access_level(value); _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(common_namespace_event value) { //reference = new SymbolInfo(value); _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(compiled_event ce) { //reference = new SymbolInfo(ce); _sym_info = ce; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(label_node lab) { //reference = new SymbolInfo(lab); _sym_info = lab; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(template_class tc) { //reference = new SymbolInfo(tc); _sym_info = tc; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(compiled_class_constant_definition value) { //reference = new SymbolInfo(value); _sym_info = value; _access_level = get_class_member_access_level(value); _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(namespace_variable value) { //_name_information_type=name_information_type.nit_namespace_variable; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(compiled_constructor_node value) { //_name_information_type=name_information_type.nit_compiled_function; _sym_info = value; _access_level = get_class_member_access_level(value); _symbol_kind = get_function_kind(value); }
public SymbolInfo(unit_node value) { //_name_information_type=name_information_type.nit_unit; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(common_in_function_function_node value) { //_name_information_type=name_information_type.nit_common_in_function_function; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = get_function_kind(value); }
public SymbolInfo(common_method_node value) { //_name_information_type=name_information_type.nit_common_method; _sym_info = value; _access_level = get_class_member_access_level(value); _symbol_kind = get_function_kind(value); }
public SymbolInfo(compiled_variable_definition value) { //_name_information_type=name_information_type.nit_compiled_variable; _sym_info = value; _access_level = get_class_member_access_level(value); _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(compiled_namespace_node value) { //_name_information_type=name_information_type.nit_compiled_namespace; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(basic_parameter value) { //_name_information_type=name_information_type.nit_basic_parameter; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(definition_node value, access_level alevel, symbol_kind skind) { //reference = new SymbolInfo(value, alevel, skind); _sym_info = value; _access_level = alevel; _symbol_kind = skind; }
public SymbolInfo(constant_definition_node value) { //_name_information_type=name_information_type.nit_constant_defnition; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(common_property_node value) { //_name_information_type=name_information_type.nit_common_property; _sym_info = value; _access_level = get_class_member_access_level(value); _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(class_field value) { //_name_information_type=name_information_type.nit_class_field; _sym_info = value; _access_level = get_class_member_access_level(value); _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(local_variable value) { //reference = new SymbolInfo(value); //_name_information_type=name_information_type.nit_local_variable; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(common_namespace_node value) { //reference = new SymbolInfo(value); //_name_information_type=name_information_type.nit_common_namespace; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(basic_function_node value) { //reference = new SymbolInfo(value); //_name_information_type=name_information_type.nit_basic_function; _sym_info = value; _access_level = access_level.al_public; _symbol_kind = get_function_kind(value); }
private var_definition_node FindForeachVariable(foreach_stmt _foreach_stmt, type_node elem_type, bool sys_coll_ienum) { var_definition_node foreachVariable = null; if (_foreach_stmt.type_name == null) // значит, переменная определена в другом месте { location loc1 = get_location(_foreach_stmt.identifier); definition_node dn = context.check_name_node_type(_foreach_stmt.identifier.name, loc1, general_node_type.variable_node); foreachVariable = (var_definition_node)dn; if (!check_name_in_current_scope(_foreach_stmt.identifier.name)) { AddError(loc1, "FOREACH_LOOP_CONTROL_MUST_BE_SIMPLE_LOCAL_VARIABLE"); } } else { foreachVariable = context.add_var_definition(_foreach_stmt.identifier.name, get_location(_foreach_stmt.identifier)); type_node tn; if (_foreach_stmt.type_name is no_type_foreach) // значит, это for var x in a { tn = elem_type; } else // значит, это for var x: T in a { tn = convert_strong(_foreach_stmt.type_name); check_for_type_allowed(tn, get_location(_foreach_stmt.type_name)); check_using_static_class(tn, get_location(_foreach_stmt.type_name)); } if (tn.is_value_type && !tn.is_standard_type) { context.close_var_definition_list(tn, new default_operator_node(tn, foreachVariable.location)); } else { context.close_var_definition_list(tn, null); } } if (/*!(foreachVariable.type is compiled_generic_instance_type_node) &&*/ !sys_coll_ienum) // SSM 16.09.18 - закомментировал это ограничение для фиксации бага #1184 { convertion_data_and_alghoritms.check_convert_type_with_inheritance(elem_type, foreachVariable.type, get_location(_foreach_stmt.identifier)); } return(foreachVariable); }
private var_definition_node FindForeachVariable(foreach_stmt _foreach_stmt, type_node elem_type, bool sys_coll_ienum) { var_definition_node foreachVariable = null; if (_foreach_stmt.type_name == null) // значит, переменная определена в другом месте { location loc1 = get_location(_foreach_stmt.identifier); definition_node dn = context.check_name_node_type(_foreach_stmt.identifier.name, loc1, general_node_type.variable_node); foreachVariable = (var_definition_node)dn; if (!check_name_in_current_scope(_foreach_stmt.identifier.name)) { AddError(loc1, "FOREACH_LOOP_CONTROL_MUST_BE_SIMPLE_LOCAL_VARIABLE"); } } else { foreachVariable = context.add_var_definition(_foreach_stmt.identifier.name, get_location(_foreach_stmt.identifier)); type_node tn; if (_foreach_stmt.type_name is no_type_foreach) // значит, это for var x in a { tn = elem_type; } else // значит, это for var x: T in a { tn = convert_strong(_foreach_stmt.type_name); check_for_type_allowed(tn, get_location(_foreach_stmt.type_name)); } context.close_var_definition_list(tn, null); } if (!(foreachVariable.type is compiled_generic_instance_type_node) && !sys_coll_ienum) { convertion_data_and_alghoritms.check_convert_type_with_inheritance(elem_type, foreachVariable.type, get_location(_foreach_stmt.identifier)); } return(foreachVariable); }
public override void visit(foreach_stmt _foreach_stmt) { var loopIdentName = _foreach_stmt.identifier.name.ToLower(); definition_node dn = null; var_definition_node vdn = null; var sl2 = new statements_list(_visitor.get_location(_foreach_stmt)); _visitor.convertion_data_and_alghoritms.statement_list_stack_push(sl2); var newTreeNode = new CapturedVariablesTreeNodeForEachScope(_currentTreeNode, sl2.Scope.ScopeNum, _foreach_stmt); if (_currentTreeNode != null) { _currentTreeNode.ChildNodes.Add(newTreeNode); } _currentTreeNode = newTreeNode; _scopesCapturedVarsNodesDictionary.Add(sl2.Scope.ScopeNum, _currentTreeNode); var inWhat = _visitor.convert_strong(_foreach_stmt.in_what); var tmp = inWhat; if (inWhat is typed_expression) { inWhat = _visitor.convert_typed_expression_to_function_call(inWhat as typed_expression); } type_node elemType = null; if (inWhat.type == null) { inWhat = tmp; } _visitor.FindIEnumerableElementType(/*_foreach_stmt, */ inWhat.type, ref elemType); if (_foreach_stmt.type_name == null) { var loc1 = _visitor.get_location(_foreach_stmt.identifier); dn = _visitor.context.check_name_node_type(loopIdentName, loc1, general_node_type.variable_node); vdn = (var_definition_node)dn; } else { vdn = _visitor.context.add_var_definition(loopIdentName, _visitor.get_location(_foreach_stmt.identifier)); type_node tn; if (_foreach_stmt.type_name is no_type_foreach) { tn = elemType; } else { tn = _visitor.convert_strong(_foreach_stmt.type_name); _visitor.check_for_type_allowed(tn, _visitor.get_location(_foreach_stmt.type_name)); } _visitor.context.close_var_definition_list(tn, null); _currentTreeNode.VariablesDefinedInScope.Add(new CapturedVariablesTreeNode.CapturedSymbolInfo(_foreach_stmt, _visitor.context.find(loopIdentName))); } newTreeNode.SymbolInfoLoopVar = _visitor.context.find(loopIdentName); if (!(vdn.type is compiled_generic_instance_type_node)) { _visitor.convertion_data_and_alghoritms.check_convert_type_with_inheritance(vdn.type, elemType, _visitor.get_location(_foreach_stmt.identifier)); } var fn = new foreach_node(vdn, inWhat, null, _visitor.get_location(_foreach_stmt)); _visitor.context.cycle_stack.push(fn); _visitor.context.loop_var_stack.Push(vdn); ProcessNode(_foreach_stmt.in_what); if (!(_foreach_stmt.stmt is statement_list)) { var stmtList = new statement_list(_foreach_stmt.stmt, _foreach_stmt.stmt.source_context); _foreach_stmt.stmt = stmtList; } ProcessNode(_foreach_stmt.stmt); _visitor.context.loop_var_stack.Pop(); _visitor.convertion_data_and_alghoritms.statement_list_stack.pop(); _visitor.context.cycle_stack.pop(); _currentTreeNode = _currentTreeNode.ParentNode; }
public SymbolInfo(definition_node value, access_level alevel, symbol_kind skind) { _sym_info = value; _access_level = alevel; _symbol_kind = skind; }
public SymbolInfo(type_node value) { _sym_info = value; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(template_class tc) { _sym_info = tc; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(label_node lab) { _sym_info = lab; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }
public SymbolInfo(compiled_event ce) { _sym_info = ce; _access_level = access_level.al_public; _symbol_kind = symbol_kind.sk_none; }