// 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
{
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) {
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.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}'",
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));
// 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)) {