Check out parameter flag correctly
authorMarek Safar <marek.safar@gmail.com>
Thu, 8 Mar 2012 17:36:55 +0000 (17:36 +0000)
committerMarek Safar <marek.safar@gmail.com>
Fri, 9 Mar 2012 14:11:59 +0000 (14:11 +0000)
mcs/mcs/anonymous.cs
mcs/mcs/expression.cs
mcs/mcs/method.cs
mcs/mcs/parameter.cs
mcs/mcs/statement.cs

index 1b169432e103694cef43b9a82a7cbffd05624bc4..e8ff4ab8181047179477518e338513c4afdfe808 100644 (file)
@@ -1142,7 +1142,7 @@ namespace Mono.CSharp {
 
                                for (int i = 0; i < delegate_parameters.Count; i++) {
                                        Parameter.Modifier i_mod = delegate_parameters.FixedParameters [i].ModFlags;
-                                       if (i_mod == Parameter.Modifier.OUT) {
+                                       if ((i_mod & Parameter.Modifier.OUT) != 0) {
                                                if (!ec.IsInProbingMode) {
                                                        ec.Report.Error (1688, loc,
                                                                "Cannot convert anonymous method block without a parameter list to delegate type `{0}' because it has one or more `out' parameters",
index 4f6fe1316779374fb288f5a0b3e263a544d28d15..3d39b7e6441f94d3a8fb79f03200ef983c659a68 100644 (file)
@@ -5046,7 +5046,7 @@ namespace Mono.CSharp
                }
 
                bool HasOutModifier {
-                       get { return pi.Parameter.ModFlags == Parameter.Modifier.OUT; }
+                       get { return (pi.Parameter.ModFlags & Parameter.Modifier.OUT) != 0; }
                }
 
                public override HoistedVariable GetHoistedVariable (AnonymousExpression ae)
index 291ab2fca13f30b78258752a9d27fed5f7199ea5..3b608feaaaafc90814543c536d40d88bc418232e 100644 (file)
@@ -637,7 +637,7 @@ namespace Mono.CSharp {
                        if ((ModFlags & Modifiers.PARTIAL) != 0) {
                                for (int i = 0; i < parameters.Count; ++i) {
                                        IParameterData p = parameters.FixedParameters [i];
-                                       if (p.ModFlags == Parameter.Modifier.OUT) {
+                                       if ((p.ModFlags & Parameter.Modifier.OUT) != 0) {
                                                Report.Error (752, Location, "`{0}': A partial method parameters cannot use `out' modifier",
                                                        GetSignatureForError ());
                                        }
@@ -940,7 +940,7 @@ namespace Mono.CSharp {
                                }
 
                                for (int i = 0; i < parameters.Count; ++i) {
-                                       if (parameters.FixedParameters [i].ModFlags == Parameter.Modifier.OUT) {
+                                       if ((parameters.FixedParameters [i].ModFlags & Parameter.Modifier.OUT) != 0) {
                                                Report.Error (685, Location, "Conditional method `{0}' cannot have an out parameter", GetSignatureForError ());
                                                return;
                                        }
index b9e9a2a97a662dbfa6977765b6cc8284663d6a39..e0292b6c5f4627fd020537db7612b269caf81970 100644 (file)
@@ -817,7 +817,7 @@ namespace Mono.CSharp {
 
                public static ParameterAttributes GetParameterAttribute (Parameter.Modifier modFlags)
                {
-                       return (modFlags & Parameter.Modifier.OUT) == Parameter.Modifier.OUT ?
+                       return (modFlags & Parameter.Modifier.OUT) != 0 ?
                                ParameterAttributes.Out : ParameterAttributes.None;
                }
 
index b21b5532120a8e3ce2213b1f1b563f472c32e41b..76e5c810a6e9fe85b1c99af7399d33957f6f3ad5 100644 (file)
@@ -2946,7 +2946,7 @@ namespace Mono.CSharp {
                        for (int i = 0; i < orig_count; ++i) {
                                Parameter.Modifier mod = parameters.FixedParameters[i].ModFlags;
 
-                               if ((mod & Parameter.Modifier.OUT) != Parameter.Modifier.OUT)
+                               if ((mod & Parameter.Modifier.OUT) == 0)
                                        continue;
 
                                VariableInfo vi = new VariableInfo (parameters, i, ec.FlowOffset);