+2003-07-14 Ravi Pratap M <ravi@ximian.com>
+
+ * attribute.cs (Attribute.Resolve): While doing a Member lookup
+ for .ctors, ensure that we only ask for members declared in the
+ attribute type (BindingFlags.DeclaredOnly).
+
+ Fixes bug #43632.
+
+ * expression.cs (Error_WrongNumArguments): Report error 1501
+ correctly the way CSC does.
+
2003-07-13 Martin Baulig <martin@ximian.com>
* expression.cs (MemberAccess.ResolveAsTypeStep): Try to do a type
\r
static void Error_AttributeConstructorMismatch (Location loc)\r
{\r
- Report.Error (\r
- -6, loc,\r
- "Could not find a constructor for this argument list.");\r
+ Report.Error (-6, loc,\r
+ "Could not find a constructor for this argument list.");\r
}\r
\r
private Type CheckAttributeType (EmitContext ec) {\r
\r
Expression mg = Expression.MemberLookup (\r
ec, Type, ".ctor", MemberTypes.Constructor,\r
- BindingFlags.Public | BindingFlags.Instance, Location);\r
+ BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly,\r
+ Location);\r
\r
if (mg == null) {\r
Error_AttributeConstructorMismatch (Location);\r
else
arg_count = arguments.Count;
+
ParameterData pd = GetParameterData (candidate);
int pd_count = pd.Count;
VerifyArgumentsCompat (ec, Arguments, argument_count, c, false,
null, loc);
}
-
+
+ string report_name = me.Name;
+ if (report_name == ".ctor")
+ report_name = me.DeclaringType.ToString ();
+
+ Error_WrongNumArguments (loc, report_name, argument_count);
+
return null;
}
return method;
}
+ static void Error_WrongNumArguments (Location loc, String name, int arg_count)
+ {
+ Report.Error (1501, loc,
+ "No overload for method `" + name + "' takes `" +
+ arg_count + "' arguments");
+ }
+
static void Error_InvalidArguments (Location loc, int idx, MethodBase method,
Type delegate_type, string arg_sig, string par_desc)
{