From a87b0ddaa9a6a2bde9330c4f56f7914c7140c1d0 Mon Sep 17 00:00:00 2001 From: vsadov Date: Fri, 29 Sep 2017 16:28:05 -0700 Subject: [PATCH] CR feedback --- .../Lowering/AsyncRewriter/AwaitExpressionSpiller.cs | 4 ++-- .../Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs | 2 +- src/Compilers/Core/Portable/Symbols/RefKind.cs | 8 ++++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Compilers/CSharp/Portable/Lowering/AsyncRewriter/AwaitExpressionSpiller.cs b/src/Compilers/CSharp/Portable/Lowering/AsyncRewriter/AwaitExpressionSpiller.cs index a2a68c64b33..66b63983c79 100644 --- a/src/Compilers/CSharp/Portable/Lowering/AsyncRewriter/AwaitExpressionSpiller.cs +++ b/src/Compilers/CSharp/Portable/Lowering/AsyncRewriter/AwaitExpressionSpiller.cs @@ -384,7 +384,7 @@ private BoundStatement UpdateStatement(BoundSpillSequenceBuilder builder, BoundS // - `RefKind.In` (specified with no modifiers and matched an 'In' parameter) // // It is allowed to spill ordinary `In` arguments by value if reference-preserving spilling is not possible. - // The "strct" ones do not permit implicit copying, so the same situation should result in an error. + // The "strict" ones do not permit implicit copying, so the same situation should result in an error. if (refKind != RefKind.None && refKind != RefKind.In) { Debug.Assert(call.Method.RefKind != RefKind.None); @@ -401,7 +401,7 @@ private BoundStatement UpdateStatement(BoundSpillSequenceBuilder builder, BoundS // - `RefKind.In` (specified with no modifiers and matched an 'In' parameter) // // It is allowed to spill ordinary `In` arguments by value if reference-preserving spilling is not possible. - // The "strct" ones do not permit implicit copying, so the same situation should result in an error. + // The "strict" ones do not permit implicit copying, so the same situation should result in an error. if (refKind != RefKind.None && refKind != RefKind.RefReadOnly) { Debug.Assert(conditional.IsByRef); diff --git a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs index 3ea2d24b893..eeed1530d9d 100644 --- a/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs +++ b/src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Call.cs @@ -526,7 +526,7 @@ private static ImmutableArray GetEffectiveArgumentRefKinds(ImmutableArr } } - refKindsBuilder[i] = argRefKind == RefKind.None? paramRefKind: RefKindExtensions.StrictIn; + refKindsBuilder[i] = argRefKind == RefKind.None ? paramRefKind : RefKindExtensions.StrictIn; } } diff --git a/src/Compilers/Core/Portable/Symbols/RefKind.cs b/src/Compilers/Core/Portable/Symbols/RefKind.cs index c2121eb2998..8deb463cff7 100644 --- a/src/Compilers/Core/Portable/Symbols/RefKind.cs +++ b/src/Compilers/Core/Portable/Symbols/RefKind.cs @@ -34,6 +34,10 @@ public enum RefKind : byte /// Indicates a "ref readonly" return type. /// RefReadOnly = 3, + + // NOTE: There is an additional value of this enum type - RefKindExtensions.StrictIn == RefKind.In + 1 + // It is used internally during lowering. + // Consider that when adding values or changing this enum in some other way. } internal static class RefKindExtensions @@ -55,7 +59,7 @@ internal static string ToArgumentDisplayString(this RefKind kind) { case RefKind.Out: return "out"; case RefKind.Ref: return "ref"; - case RefKind.RefReadOnly: return "in"; + case RefKind.In: return "in"; default: throw ExceptionUtilities.UnexpectedValue(kind); } } @@ -75,6 +79,6 @@ internal static string ToParameterPrefix(this RefKind kind) // used internally to track `In` arguments that were specified with `In` modifier // as opposed to those that were specified with no modifiers and matched `In` parameter // There is at least one kind of anlysis that cares about this distinction - async stack spilling - internal const RefKind StrictIn = (RefKind)(RefKind.In + 1); + internal const RefKind StrictIn = RefKind.In + 1; } } -- GitLab