25 references to EscapeLevel
Microsoft.CodeAnalysis.CSharp (25)
Binder\Binder.ValueChecks.cs (25)
360/// wider escape level. An destination that is <see cref="EscapeLevel.CallingMethod"/>
361/// can never be written to by an argument that has a level of <see cref="EscapeLevel.ReturnOnly"/>.
363internal EscapeLevel EscapeLevel { get; }
374internal MixableDestination(BoundExpression argument, EscapeLevel escapeLevel)
381internal bool IsAssignableFrom(EscapeLevel level) => EscapeLevel switch
383EscapeLevel.CallingMethod => level == EscapeLevel.CallingMethod,
384EscapeLevel.ReturnOnly => true,
446internal EscapeLevel EscapeLevel { get; }
450internal EscapeValue(ParameterSymbol? parameter, BoundExpression argument, EscapeLevel escapeLevel, bool isRefEscape)
458public void Deconstruct(out ParameterSymbol? parameter, out BoundExpression argument, out EscapeLevel escapeLevel, out bool isRefEscape)
1470private static EscapeLevel? EscapeLevelFromScope(SafeContext lifetime) => lifetime switch
1472{ IsReturnOnly: true } => EscapeLevel.ReturnOnly,
1473{ IsCallingMethod: true } => EscapeLevel.CallingMethod,
1487private static EscapeLevel? GetParameterValEscapeLevel(ParameterSymbol parameter) =>
1502private static EscapeLevel? GetParameterRefEscapeLevel(ParameterSymbol parameter) =>
2775mixableArguments.Add(new MixableDestination(argument, EscapeLevel.CallingMethod));
2893if (escapeLevel != EscapeLevel.CallingMethod)
2895Debug.Assert(escapeLevel == EscapeLevel.ReturnOnly);
2985escapeValues.Add(new EscapeValue(parameter: null, argument, EscapeLevel.ReturnOnly, isRefEscape: true));
2990escapeValues.Add(new EscapeValue(parameter: null, argument, EscapeLevel.CallingMethod, isRefEscape: false));
3050escapeValues.Add(new EscapeValue(parameter: null, argument, EscapeLevel.CallingMethod, isRefEscape: false));
3058escapeValues.Add(new EscapeValue(parameter, argument, EscapeLevel.CallingMethod, isRefEscape: false));
3069escapeValues.Add(new EscapeValue(parameter, argument, EscapeLevel.CallingMethod, isRefEscape: true));
4933if (escapeValue.IsRefEscape && escapeValue.EscapeLevel != EscapeLevel.CallingMethod)