コード例 #1
0
 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);
 }
コード例 #2
0
 private void VisitNestedFunction(common_in_function_function_node cnfn)
 {
     if (extended_mode)
     {
         VisitVariables(cnfn.var_definition_nodes_list);
     }
     foreach (var_definition_node vdn in cnfn.var_definition_nodes_list)
     {
         helper.AddVariable(vdn);
     }
     foreach (common_parameter prm in cnfn.parameters)
     {
         helper.AddParameter(prm);
     }
     foreach (common_in_function_function_node nested in cnfn.functions_nodes_list)
     {
         VisitNestedFunction(nested);
     }
     cur_func = cnfn;
     VisitStatement(cnfn.function_code);
     foreach (var_definition_node vdn2 in cnfn.var_definition_nodes_list)
     {
         if (vdn2 is local_variable)
         {
             local_variable vdn = vdn2 as local_variable;
             VarInfo        vi  = helper.GetVariable(vdn);
             if (vi.num_use == 0 && !vdn.is_special_name)
             {
                 warns.Add(new UnusedVariable(vdn.name, vdn.loc));
             }
             else if (vi.num_ass == 0 &&
                      vdn.is_ret_value &&
                      !cnfn.name.StartsWith("<") &&
                      cnfn.return_value_type.type_special_kind != SemanticTree.type_special_kind.record &&
                      !cnfn.return_value_type.IsPointer &&
                      cnfn.return_value_type.type_special_kind != SemanticTree.type_special_kind.array_wrapper &&
                      !helper.IsExternal(cnfn))
             {
                 warns.Add(new UndefinedReturnValue(cnfn.name, cnfn.function_code.location));
             }
             if (vi.num_ass > 0 && vi.act_num_use == 0 && !vdn.is_special_name)
             {
                 warns.Add(new AssignWithoutUsing(vdn.name, vi.last_ass_loc));
             }
         }
         else if (vdn2 is local_block_variable)
         {
             local_block_variable vdn = vdn2 as local_block_variable;
             VarInfo vi = helper.GetVariable(vdn);
             if (vi.num_use == 0 && !vdn.is_special_name)
             {
                 warns.Add(new UnusedVariable(vdn.name, vdn.loc));
             }
             else if (vi.num_ass == 0 &&
                      vdn.is_ret_value &&
                      !cnfn.name.StartsWith("<") &&
                      cnfn.return_value_type.type_special_kind != SemanticTree.type_special_kind.record &&
                      !cnfn.return_value_type.IsPointer &&
                      cnfn.return_value_type.type_special_kind != SemanticTree.type_special_kind.array_wrapper &&
                      !helper.IsExternal(cnfn))
             {
                 warns.Add(new UndefinedReturnValue(cnfn.name, cnfn.function_code.location));
             }
             if (vi.num_ass > 0 && vi.act_num_use == 0 && !vdn.is_special_name)
             {
                 warns.Add(new AssignWithoutUsing(vdn.name, vi.last_ass_loc));
             }
         }
         if (vdn2.inital_value != null)
         {
             VisitExpression(vdn2.inital_value);
         }
     }
     foreach (common_parameter prm in cnfn.parameters)
     {
         ParamInfo vi = helper.GetParameter(prm);
         if (prm.inital_value != null)
         {
             VisitExpression(prm.inital_value);
         }
         //if (vi.num_use == 0 && !prm.name.Contains("$")) warns.Add(new UnusedParameter(prm.name, prm.loc));
     }
     foreach (var_definition_node vdn in cnfn.var_definition_nodes_list)
     {
         VarInfo vi = helper.GetVariable(vdn);
         if (vdn.inital_value != null)
         {
             VisitExpression(vdn.inital_value);
         }
     }
 }