[prev in list] [next in list] [prev in thread] [next in thread]
List: mono-devel-list
Subject: [Mono-devel-list] [Patch] Covariance support.
From: Carlos Alberto Cortez <calberto.cortez () gmail ! com>
Date: 2004-11-27 2:43:29
Message-ID: 1101523409.2092.6.camel () localhost ! localdomain
[Download RAW message or body]
I've added the check for langversion (and show error for this feature is
langversion is ISO-1).
Carlos.
["cov.patch" (cov.patch)]
Index: delegate.cs
===================================================================
--- delegate.cs (revision 36439)
+++ delegate.cs (working copy)
@@ -429,18 +429,43 @@
for (int i = pd_count; i > 0; ) {
i--;
- if (invoke_pd.ParameterType (i) == pd.ParameterType (i) &&
- invoke_pd.ParameterModifier (i) == pd.ParameterModifier (i))
+ Type invoke_pd_param = invoke_pd.ParameterType (i);
+ Type pd_param = pd.ParameterType (i);
+ Parameter.Modifier invoke_pd_param_mod = invoke_pd.ParameterModifier (i);
+ Parameter.Modifier pd_param_mod = pd.ParameterModifier (i);
+
+ if (invoke_pd_param == pd_param &&
+ invoke_pd_param_mod == pd_param_mod)
continue;
- else {
+
+ if (invoke_pd_param.IsSubclassOf (pd_param) &&
+ invoke_pd_param_mod == pd_param_mod) {
+ if (RootContext.Version == LanguageVersion.ISO_1) {
+ Report.FeatureIsNotStandardized (loc, "contravariance");
+ Environment.Exit (1);
+ } else
+ continue;
+
+ } else {
return null;
}
}
- if (((MethodInfo) invoke_mb).ReturnType == ((MethodInfo) mb).ReturnType)
+ Type invoke_mb_retval = ((MethodInfo) invoke_mb).ReturnType;
+ Type mb_retval = ((MethodInfo) mb).ReturnType;
+ if (invoke_mb_retval == mb_retval)
return mb;
- else
- return null;
+
+ if (mb_retval.IsSubclassOf (invoke_mb_retval)) {
+ if (RootContext.Version == LanguageVersion.ISO_1) {
+ Report.FeatureIsNotStandardized (loc, "covariance");
+ Environment.Exit (1);
+ }
+ else
+ return mb;
+ }
+
+ return null;
}
// <summary>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic