Mono.Debugger.Backend.DwarfReader.DieSubprogram.DoResolve C# (CSharp) Method

DoResolve() private method

private DoResolve ( ) : void
return void
            void DoResolve()
            {
                if (abstract_origin != 0) {
                    DieSubprogram aorigin = comp_unit.GetSubprogram (abstract_origin);
                    if (aorigin == null)
                        throw new InternalError ();

                    DoResolveSpecification (aorigin);
                }

                if (specification != 0) {
                    DieSubprogram ssubprog = comp_unit.GetSubprogram (specification);
                    if (ssubprog == null)
                        throw new InternalError ();

                    DoResolveSpecification (ssubprog);
                }

                locals = resolve_variables (local_dies);
                parameters = resolve_variables (param_dies);

                if (param_dies != null) {
                    DieMethodVariable first_var = (DieMethodVariable) param_dies [0];
                    if ((first_var.IsArtificial != null) && (first_var.Name == "this"))
                        this_var = first_var.Variable;
                }

                debug ("{0} resolve: {1} {2} {3} {4}", Offset, param_dies != null, local_dies != null,
                       name != null, this_var != null);

                if ((param_dies != null) && (name != null)) {
                    StringBuilder sb = new StringBuilder ();
                    if (this_var != null) {
                        sb.Append (this_var.Type.Name);
                        sb.Append ("::");
                    }
                    sb.Append (name);
                    sb.Append ("(");
                    bool first = true;
                    for (int i = 0; i < param_dies.Count; i++) {
                        DieMethodVariable the_param = (DieMethodVariable) param_dies [i];
                        if (!first)
                            sb.Append (", ");
                        if (the_param.Type == null)
                            continue;
                        sb.Append (the_param.Type.Name);
                        if (the_param.Name != null) {
                            sb.Append (" ");
                            sb.Append (the_param.Name);
                        }
                        first = false;
                    }
                    sb.Append (")");
                    full_name = sb.ToString ();
                }
            }