X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Fdoc.cs;h=38b500b6de907fc97e803cf9565619431d8c1d31;hb=f5a54864670ea45323abdcf2577bd752eeded8fc;hp=61576e9da66fd16bb2448a7d561a72428a21241d;hpb=6f94553690b1cd6487bcc206aec7f58c99f77adb;p=mono.git diff --git a/mcs/mcs/doc.cs b/mcs/mcs/doc.cs index 61576e9da66..38b500b6de9 100644 --- a/mcs/mcs/doc.cs +++ b/mcs/mcs/doc.cs @@ -4,9 +4,9 @@ // Author: // Atsushi Enomoto // -// Licensed under the terms of the GNU GPL +// Dual licensed under the terms of the MIT X11 or GNU GPL // -// (C) 2004 Novell, Inc. +// Copyright 2004 Novell, Inc. // // #if ! BOOTSTRAP_WITH_OLDLIB @@ -87,7 +87,7 @@ namespace Mono.CSharp { p.GenerateDocComment (t); if (t.Methods != null) - foreach (Method m in t.Methods) + foreach (MethodOrOperator m in t.Methods) m.GenerateDocComment (t); if (t.Operators != null) @@ -366,8 +366,8 @@ namespace Mono.CSharp { if (!MethodGroupExpr.IsAncestralType (base_prop.DeclaringType, deriv_prop.DeclaringType)) return false; - Type [] deriv_pd = TypeManager.GetArgumentTypes (deriv_prop); - Type [] base_pd = TypeManager.GetArgumentTypes (base_prop); + Type [] deriv_pd = TypeManager.GetParameterData (deriv_prop).Types; + Type [] base_pd = TypeManager.GetParameterData (base_prop).Types; if (deriv_pd.Length != base_pd.Length) return false; @@ -505,11 +505,11 @@ namespace Mono.CSharp { string oper = null; string return_type_name = null; if (member_name.StartsWith ("implicit operator ")) { - oper = "op_Implicit"; + Operator.GetMetadataName (Operator.OpType.Implicit); return_type_name = member_name.Substring (18).Trim (wsChars); } else if (member_name.StartsWith ("explicit operator ")) { - oper = "op_Explicit"; + oper = Operator.GetMetadataName (Operator.OpType.Explicit); return_type_name = member_name.Substring (18).Trim (wsChars); } else if (member_name.StartsWith ("operator ")) { @@ -518,58 +518,19 @@ namespace Mono.CSharp { // either unary or binary case "+": oper = param_list.Length == 2 ? - Binary.GetOperatorMetadataName (Binary.Operator.Addition) : - Unary.oper_names [(int) Unary.Operator.UnaryPlus]; + Operator.GetMetadataName (Operator.OpType.Addition) : + Operator.GetMetadataName (Operator.OpType.UnaryPlus); break; case "-": oper = param_list.Length == 2 ? - Binary.GetOperatorMetadataName (Binary.Operator.Subtraction) : - Unary.oper_names [(int) Unary.Operator.UnaryNegation]; + Operator.GetMetadataName (Operator.OpType.Subtraction) : + Operator.GetMetadataName (Operator.OpType.UnaryNegation); break; - // unary - case "!": - oper = Unary.oper_names [(int) Unary.Operator.LogicalNot]; break; - case "~": - oper = Unary.oper_names [(int) Unary.Operator.OnesComplement]; break; - - case "++": - oper = "op_Increment"; break; - case "--": - oper = "op_Decrement"; break; - case "true": - oper = "op_True"; break; - case "false": - oper = "op_False"; break; - // binary - case "*": - oper = Binary.GetOperatorMetadataName (Binary.Operator.Multiply); break; - case "/": - oper = Binary.GetOperatorMetadataName (Binary.Operator.Division); break; - case "%": - oper = Binary.GetOperatorMetadataName (Binary.Operator.Modulus); break; - case "&": - oper = Binary.GetOperatorMetadataName (Binary.Operator.BitwiseAnd); break; - case "|": - oper = Binary.GetOperatorMetadataName (Binary.Operator.BitwiseOr); break; - case "^": - oper = Binary.GetOperatorMetadataName (Binary.Operator.ExclusiveOr); break; - case "<<": - oper = Binary.GetOperatorMetadataName (Binary.Operator.LeftShift); break; - case ">>": - oper = Binary.GetOperatorMetadataName (Binary.Operator.RightShift); break; - case "==": - oper = Binary.GetOperatorMetadataName (Binary.Operator.Equality); break; - case "!=": - oper = Binary.GetOperatorMetadataName (Binary.Operator.Inequality); break; - case "<": - oper = Binary.GetOperatorMetadataName (Binary.Operator.LessThan); break; - case ">": - oper = Binary.GetOperatorMetadataName (Binary.Operator.GreaterThan); break; - case "<=": - oper = Binary.GetOperatorMetadataName (Binary.Operator.LessThanOrEqual); break; - case ">=": - oper = Binary.GetOperatorMetadataName (Binary.Operator.GreaterThanOrEqual); break; default: + oper = Operator.GetMetadataName (oper); + if (oper != null) + break; + warning_type = 1584; Report.Warning (1020, 1, mc.Location, "Overloadable {0} operator is expected", param_list.Length == 2 ? "binary" : "unary"); Report.Warning (1584, 1, mc.Location, "XML comment on `{0}' has syntactically incorrect cref attribute `{1}'", @@ -760,10 +721,10 @@ namespace Mono.CSharp { // It still might be part of namespace name. Namespace ns = ds.NamespaceEntry.NS.GetNamespace (name, false); if (ns != null) { - xref.SetAttribute ("cref", "N:" + ns.FullName); + xref.SetAttribute ("cref", "N:" + ns.GetSignatureForError ()); return; // a namespace } - if (RootNamespace.Global.IsNamespace (name)) { + if (GlobalRootNamespace.Instance.IsNamespace (name)) { xref.SetAttribute ("cref", "N:" + name); return; // a namespace } @@ -789,7 +750,7 @@ namespace Mono.CSharp { if (mb == null) return String.Empty; - ParameterData parameters = TypeManager.GetParameterData (mb); + AParametersCollection parameters = TypeManager.GetParameterData (mb); if (parameters == null || parameters.Count == 0) return String.Empty; @@ -800,7 +761,7 @@ namespace Mono.CSharp { break; // skip "value". if (i > 0) sb.Append (','); - Type t = parameters.ParameterType (i); + Type t = parameters.Types [i]; sb.Append (GetSignatureForDoc (t)); } sb.Append (')'); @@ -859,15 +820,16 @@ namespace Mono.CSharp { // Returns a string that represents the signature for this // member which should be used in XML documentation. // - public static string GetMethodDocCommentName (MemberCore mc, Parameters parameters, DeclSpace ds) + public static string GetMethodDocCommentName (MemberCore mc, ParametersCompiled parameters, DeclSpace ds) { - Parameter [] plist = parameters.FixedParameters; + IParameterData [] plist = parameters.FixedParameters; string paramSpec = String.Empty; if (plist != null) { StringBuilder psb = new StringBuilder (); + int i = 0; foreach (Parameter p in plist) { psb.Append (psb.Length != 0 ? "," : "("); - psb.Append (GetSignatureForDoc (p.ParameterType)); + psb.Append (GetSignatureForDoc (parameters.Types [i++])); if ((p.ModFlags & Parameter.Modifier.ISBYREF) != 0) psb.Append ('@'); } @@ -878,10 +840,9 @@ namespace Mono.CSharp { paramSpec += ")"; string name = mc is Constructor ? "#ctor" : mc.Name; -#if GMCS_SOURCE if (mc.MemberName.IsGeneric) name += "``" + mc.MemberName.CountTypeArguments; -#endif + string suffix = String.Empty; Operator op = mc as Operator; if (op != null) { @@ -931,11 +892,10 @@ namespace Mono.CSharp { { Hashtable paramTags = new Hashtable (); foreach (XmlElement pelem in el.SelectNodes ("param")) { - int i; string xname = pelem.GetAttribute ("name"); if (xname.Length == 0) continue; // really? but MS looks doing so - if (xname != "" && mc.Parameters.GetParameterByName (xname, out i) == null) + if (xname != "" && mc.Parameters.GetParameterIndexByName (xname) < 0) Report.Warning (1572, 2, mc.Location, "XML comment on `{0}' has a param tag for `{1}', but there is no parameter by that name", mc.GetSignatureForError (), xname); else if (paramTags [xname] != null) @@ -943,7 +903,7 @@ namespace Mono.CSharp { mc.GetSignatureForError (), xname); paramTags [xname] = xname; } - Parameter [] plist = mc.Parameters.FixedParameters; + IParameterData [] plist = mc.Parameters.FixedParameters; foreach (Parameter p in plist) { if (paramTags.Count > 0 && paramTags [p.Name] == null) Report.Warning (1573, 4, mc.Location, "Parameter `{0}' has no matching param tag in the XML comment for `{1}'",