From 68eb25d02112010bcc6ca07a487e7db012831eca Mon Sep 17 00:00:00 2001 From: Marek Safar Date: Thu, 8 Mar 2012 17:36:55 +0000 Subject: [PATCH] Check out parameter flag correctly --- mcs/mcs/anonymous.cs | 2 +- mcs/mcs/expression.cs | 2 +- mcs/mcs/method.cs | 4 ++-- mcs/mcs/parameter.cs | 2 +- mcs/mcs/statement.cs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mcs/mcs/anonymous.cs b/mcs/mcs/anonymous.cs index 1b169432e10..e8ff4ab8181 100644 --- a/mcs/mcs/anonymous.cs +++ b/mcs/mcs/anonymous.cs @@ -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", diff --git a/mcs/mcs/expression.cs b/mcs/mcs/expression.cs index 4f6fe131677..3d39b7e6441 100644 --- a/mcs/mcs/expression.cs +++ b/mcs/mcs/expression.cs @@ -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) diff --git a/mcs/mcs/method.cs b/mcs/mcs/method.cs index 291ab2fca13..3b608feaaaa 100644 --- a/mcs/mcs/method.cs +++ b/mcs/mcs/method.cs @@ -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; } diff --git a/mcs/mcs/parameter.cs b/mcs/mcs/parameter.cs index b9e9a2a97a6..e0292b6c5f4 100644 --- a/mcs/mcs/parameter.cs +++ b/mcs/mcs/parameter.cs @@ -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; } diff --git a/mcs/mcs/statement.cs b/mcs/mcs/statement.cs index b21b5532120..76e5c810a6e 100644 --- a/mcs/mcs/statement.cs +++ b/mcs/mcs/statement.cs @@ -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); -- 2.25.1