// Author:
// Atsushi Enomoto <atsushi@ximian.com>
//
-// 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
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)
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;
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 ")) {
// 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}'",
// 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
}
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;
break; // skip "value".
if (i > 0)
sb.Append (',');
- Type t = parameters.ParameterType (i);
+ Type t = parameters.Types [i];
sb.Append (GetSignatureForDoc (t));
}
sb.Append (')');
// 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 ('@');
}
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) {
{
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)
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}'",