Author: martin
Date: 2005-04-12 17:01:19 -0400 (Tue, 12 Apr 2005)
New Revision: 42878
Modified:
trunk/mcs/gmcs/ChangeLog
trunk/mcs/gmcs/class.cs
Log:
**** Merged r41087 ****
Modified: trunk/mcs/gmcs/ChangeLog
===================================================================
--- trunk/mcs/gmcs/ChangeLog 2005-04-12 21:00:24 UTC (rev 42877)
+++ trunk/mcs/gmcs/ChangeLog 2005-04-12 21:01:19 UTC (rev 42878)
@@ -1,3 +1,13 @@
+2005-02-23 Raja R Harinath <[EMAIL PROTECTED]>
+ Abin Thomas <[EMAIL PROTECTED]>
+ Anoob V E <[EMAIL PROTECTED]>
+ Harilal P R <[EMAIL PROTECTED]>
+
+ Fix #57851, #72718.
+ * class.cs (ConstructorBuilder.Resolve): Make sure that the second
+ MemberLookup (used for error reporting) actually returns a result.
+ Fix error report number (122, not 112).
+
2005-02-22 Abin Thomas <[EMAIL PROTECTED]>
Anoob V E <[EMAIL PROTECTED]>
Harilal P R <[EMAIL PROTECTED]>
Modified: trunk/mcs/gmcs/class.cs
===================================================================
--- trunk/mcs/gmcs/class.cs 2005-04-12 21:00:24 UTC (rev 42877)
+++ trunk/mcs/gmcs/class.cs 2005-04-12 21:01:19 UTC (rev 42878)
@@ -4310,6 +4310,7 @@
{
Expression base_constructor_group;
Type t;
+ bool error = false;
ec.CurrentBlock = new ToplevelBlock
(Block.Flags.Implicit, parameters, loc);
@@ -4340,34 +4341,34 @@
loc);
if (base_constructor_group == null){
+ error = true;
base_constructor_group =
Expression.MemberLookup (
- ec, t, ".ctor", MemberTypes.Constructor,
+ ec, t, null, t, ".ctor",
MemberTypes.Constructor,
BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.DeclaredOnly,
loc);
+ }
- if (base_constructor_group != null)
- Report.Error (
- 112, loc, "`{0}.{1}' is
inaccessible due to " +
- "its protection level",
t.FullName, t.Name);
- else
- Report.Error (
- 1501, loc, "Can not find a
constructor for " +
- "this argument list");
+ int errors = Report.Errors;
+ if (base_constructor_group != null)
+ base_constructor = (ConstructorInfo)
Invocation.OverloadResolve (
+ ec, (MethodGroupExpr)
base_constructor_group, argument_list,
+ false, loc);
+
+ if (base_constructor == null) {
+ if (errors == Report.Errors)
+ Report.Error (1501, loc, "Can not find
a constructor for this argument list");
return false;
}
-
- base_constructor = (ConstructorInfo)
Invocation.OverloadResolve (
- ec, (MethodGroupExpr) base_constructor_group,
argument_list,
- false, loc);
-
- if (base_constructor == null){
- Report.Error (1501, loc,
- "Can not find a constructor for this
argument list");
+
+ if (error) {
+ Report.Error (122, loc, "`{0}' is inaccessible
due to its protection level",
+ TypeManager.CSharpSignature
(base_constructor));
+ base_constructor = null;
return false;
}
if (base_constructor == caller_builder){
- Report.Error (516, String.Format ("Constructor
`{0}' can not call itself", TypeManager.CSharpSignature (caller_builder)));
+ Report.Error (516, loc, "Constructor `{0}' can
not call itself", TypeManager.CSharpSignature (caller_builder));
return false;
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches