+2005-02-23 Raja R Harinath <rharinath@novell.com>
+
+ * cs0122-10.cs, CS0122-10-lib.cs: New tests based on #57851.
+ * Makefile (all-local): Add CS0122-10-lib.dll.
+ * cs0122-11.cs: New test based on #72718.
+ * cs0112-2.cs: Remove erroneous test. Same as cs1501.cs.
+ * mcs-expect-wrong-error (cs1501.cs): Remove.
+
2005-02-22 Raja R Harinath <rharinath@novell.com>
* cs0115-3.c, cs0534-3.cs, cs0534-4.cs: New files based on #71134.
generics-expect-no-error generics-expect-wrong-error
#all-local: run-test-local test-multi-local
-all-local: CS0118-2-lib.dll CS0534-3-lib.dll CS0534-4-lib.dll CS0571-3-lib.dll CS0612-2-lib.dll CS0618-2-lib.dll \
- CS0619-8-lib.dll CS0619-17-lib.dll CS0619-32-lib.dll CS0619-33-lib.dll CS0619-36-lib.dll \
+all-local: CS0118-2-lib.dll CS0122-10-lib.dll CS0534-3-lib.dll CS0534-4-lib.dll CS0571-3-lib.dll \
+ CS0612-2-lib.dll CS0618-2-lib.dll CS0619-8-lib.dll CS0619-17-lib.dll CS0619-32-lib.dll CS0619-33-lib.dll CS0619-36-lib.dll \
CS3005-16-lib.dll CS3013-module.dll
test-local:
+2005-02-23 Raja R Harinath <rharinath@novell.com>
+ Abin Thomas <projectmonokochi@rediffmail.com>
+ Anoob V E <projectmonokochi@rediffmail.com>
+ Harilal P R <projectmonokochi@rediffmail.com>
+
+ 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 <projectmonokochi@rediffmail.com>
Anoob V E <projectmonokochi@rediffmail.com>
Harilal P R <projectmonokochi@rediffmail.com>
{
Expression base_constructor_group;
Type t;
+ bool error = false;
ec.CurrentBlock = new ToplevelBlock (Block.Flags.Implicit, parameters, loc);
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;
}