2008-06-25 Marek Safar <marek.safar@gmail.com>
[mono.git] / mcs / mcs / doc.cs
index 2f786e54bf054fdea8e171d1a183ad1e39d46d61..efe1e701c725f5f26ba492f811cd4518b56612ad 100644 (file)
@@ -4,9 +4,9 @@
 // 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
@@ -292,37 +292,37 @@ namespace Mono.CSharp {
                {
                        switch (identifier) {
                        case "int":
-                               return typeof (int);
+                               return TypeManager.int32_type;
                        case "uint":
-                               return typeof (uint);
+                               return TypeManager.uint32_type;
                        case "short":
-                               return typeof (short);
+                               return TypeManager.short_type;;
                        case "ushort":
-                               return typeof (ushort);
+                               return TypeManager.ushort_type;
                        case "long":
-                               return typeof (long);
+                               return TypeManager.int64_type;
                        case "ulong":
-                               return typeof (ulong);
+                               return TypeManager.uint64_type;;
                        case "float":
-                               return typeof (float);
+                               return TypeManager.float_type;;
                        case "double":
-                               return typeof (double);
+                               return TypeManager.double_type;
                        case "char":
-                               return typeof (char);
+                               return TypeManager.char_type;;
                        case "decimal":
-                               return typeof (decimal);
+                               return TypeManager.decimal_type;;
                        case "byte":
-                               return typeof (byte);
+                               return TypeManager.byte_type;;
                        case "sbyte":
-                               return typeof (sbyte);
+                               return TypeManager.sbyte_type;;
                        case "object":
-                               return typeof (object);
+                               return TypeManager.object_type;;
                        case "bool":
-                               return typeof (bool);
+                               return TypeManager.bool_type;;
                        case "string":
-                               return typeof (string);
+                               return TypeManager.string_type;;
                        case "void":
-                               return typeof (void);
+                               return TypeManager.void_type;;
                        }
                        FullNamedExpression e = ds.LookupNamespaceOrType (identifier, mc.Location, false);
                        if (e != null) {
@@ -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.oper_names [(int) 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.oper_names [(int) 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.oper_names [(int) Binary.Operator.Multiply]; break;
-                               case "/":
-                                       oper = Binary.oper_names [(int) Binary.Operator.Division]; break;
-                               case "%":
-                                       oper = Binary.oper_names [(int) Binary.Operator.Modulus]; break;
-                               case "&":
-                                       oper = Binary.oper_names [(int) Binary.Operator.BitwiseAnd]; break;
-                               case "|":
-                                       oper = Binary.oper_names [(int) Binary.Operator.BitwiseOr]; break;
-                               case "^":
-                                       oper = Binary.oper_names [(int) Binary.Operator.ExclusiveOr]; break;
-                               case "<<":
-                                       oper = Binary.oper_names [(int) Binary.Operator.LeftShift]; break;
-                               case ">>":
-                                       oper = Binary.oper_names [(int) Binary.Operator.RightShift]; break;
-                               case "==":
-                                       oper = Binary.oper_names [(int) Binary.Operator.Equality]; break;
-                               case "!=":
-                                       oper = Binary.oper_names [(int) Binary.Operator.Inequality]; break;
-                               case "<":
-                                       oper = Binary.oper_names [(int) Binary.Operator.LessThan]; break;
-                               case ">":
-                                       oper = Binary.oper_names [(int) Binary.Operator.GreaterThan]; break;
-                               case "<=":
-                                       oper = Binary.oper_names [(int) Binary.Operator.LessThanOrEqual]; break;
-                               case ">=":
-                                       oper = Binary.oper_names [(int) 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}'",
@@ -711,7 +672,7 @@ namespace Mono.CSharp {
                        Type type = FindDocumentedType (mc, name, ds, cref);
                        if (type != null
                                // delegate must not be referenced with args
-                               && (!type.IsSubclassOf (typeof (System.Delegate))
+                               && (!TypeManager.IsDelegateType (type)
                                || parameter_types == null)) {
                                string result = GetSignatureForDoc (type)
                                        + (brace_pos < 0 ? String.Empty : signature.Substring (brace_pos));
@@ -760,7 +721,7 @@ 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)) {