Fix #77852
authorRaja R Harinath <harinath@hurrynot.org>
Mon, 20 Mar 2006 14:33:34 +0000 (14:33 -0000)
committerRaja R Harinath <harinath@hurrynot.org>
Mon, 20 Mar 2006 14:33:34 +0000 (14:33 -0000)
* generic.cs (Constraints.Resolve): Change argument to IResolveContext.
(TypeParameter.Resolve): Update to change.
(ConstraintChecker.CheckConstraints): Resolve type-argument
constraints before use.

svn path=/trunk/mcs/; revision=58187

mcs/gmcs/ChangeLog
mcs/gmcs/generic.cs

index 0efc7269d5e94a55fc59f400481d8ec5117ce421..cc6aa1cc686e630c4782ec787fd5784cc70d707a 100644 (file)
@@ -1,3 +1,11 @@
+2006-03-20  Raja R Harinath  <rharinath@novell.com>
+
+       Fix #77852
+       * generic.cs (Constraints.Resolve): Change argument to IResolveContext.
+       (TypeParameter.Resolve): Update to change.
+       (ConstraintChecker.CheckConstraints): Resolve type-argument
+       constraints before use.
+
 2006-03-16  Martin Baulig  <martin@ximian.com>
 
        * generic.cs
index 687168d3ccaeccca0af4e5de2f977244a472b5e2..27d9fdd5b714f82749955f7947d052cdd15d6dd8 100644 (file)
@@ -171,7 +171,7 @@ namespace Mono.CSharp {
                ///   Resolve the constraints - but only resolve things into Expression's, not
                ///   into actual types.
                /// </summary>
-               public bool Resolve (EmitContext ec)
+               public bool Resolve (IResolveContext ec)
                {
                        if (resolved)
                                return true;
@@ -630,7 +630,7 @@ namespace Mono.CSharp {
                public bool Resolve (DeclSpace ds)
                {
                        if (constraints != null) {
-                               if (!constraints.Resolve (ds.EmitContext)) {
+                               if (!constraints.Resolve (ds)) {
                                        constraints = null;
                                        return false;
                                }
@@ -1489,6 +1489,8 @@ namespace Mono.CSharp {
                        if (atype.IsGenericParameter) {
                                GenericConstraints agc = TypeManager.GetTypeParameterConstraints (atype);
                                if (agc != null) {
+                                       if (agc is Constraints)
+                                               ((Constraints) agc).Resolve (ec);
                                        is_class = agc.HasReferenceTypeConstraint;
                                        is_struct = agc.HasValueTypeConstraint;
                                } else {