78 references to ExprContext
Microsoft.CodeAnalysis.CSharp (78)
CodeGen\Optimizer.cs (78)
397private readonly ArrayBuilder<(BoundExpression, ExprContext)> _evalStack;
400private ExprContext _context;
418ArrayBuilder<ValueTuple<BoundExpression, ExprContext>> evalStack,
435var evalStack = ArrayBuilder<ValueTuple<BoundExpression, ExprContext>>.GetInstance();
451result = VisitExpression(expr, ExprContext.Value);
461private BoundExpression VisitExpressionCore(BoundExpression node, ExprContext context)
463var prevContext = _context;
477case ExprContext.Sideeffects:
481case ExprContext.AssignmentTarget:
484case ExprContext.Value:
485case ExprContext.Address:
486case ExprContext.Box:
498private BoundExpression VisitExpression(BoundExpression node, ExprContext context)
518private BoundExpression VisitExpressionCoreWithStackGuard(BoundExpression node, ExprContext context)
539private void PushEvalStack(BoundExpression result, ExprContext context)
541Debug.Assert(result != null || context == ExprContext.None);
574var prevContext = _context;
594var context = _context == ExprContext.Sideeffects && !node.ConversionHasSideEffects() ?
595ExprContext.Sideeffects :
596ExprContext.Value;
603var context = _context == ExprContext.Sideeffects ?
604ExprContext.Sideeffects :
605ExprContext.Value;
694if (_context == ExprContext.Sideeffects)
717var origContext = _context;
726var rewrittenSideeffect = this.VisitExpression(sideeffect, ExprContext.Sideeffects);
847this.VisitExpression(node.Expression, ExprContext.Sideeffects));
856case ExprContext.Address:
867case ExprContext.AssignmentTarget:
876case ExprContext.Sideeffects:
885case ExprContext.Value:
886case ExprContext.Box:
921ExprContext.Address :
922ExprContext.AssignmentTarget);
928Debug.Assert(_context != ExprContext.AssignmentTarget, "assignment expression cannot be a target of another assignment");
930ExprContext rhsContext;
931if (node.IsRef || _context == ExprContext.Address)
934rhsContext = ExprContext.Address;
938Debug.Assert(_context == ExprContext.Value ||
939_context == ExprContext.Box ||
940_context == ExprContext.Sideeffects, "assignment expression cannot be a target of another assignment");
942rhsContext = ExprContext.Value;
956PushEvalStack(null, ExprContext.None);
986(_context == ExprContext.Address || _context == ExprContext.Value))
1201ExprContext context = GetReceiverContext(receiver);
1227private static ExprContext GetReceiverContext(BoundExpression receiver)
1230ExprContext context;
1237context = ExprContext.Box;
1242context = ExprContext.Value;
1248context = ExprContext.Address;
1273ExprContext context = (argRefKind == RefKind.None) ? ExprContext.Value : ExprContext.Address;
1311var rewrittenOperand = VisitExpression(node.Operand, ExprContext.Address);
1329var oldContext = _context;
1330_context = ExprContext.Value;
1350receiver = VisitExpression(receiver, ExprContext.Box);
1357_context == ExprContext.AssignmentTarget ||
1358_context == ExprContext.Address ||
1361receiver = VisitExpression(receiver, ExprContext.Address);
1365receiver = VisitExpression(receiver, ExprContext.Value);
1453BoundExpression condition = this.VisitExpression(node.Condition, ExprContext.Value);
1457var context = node.IsRef ? ExprContext.Address : ExprContext.Value;
1500var prevContext = _context;
1536PushEvalStack(binary, ExprContext.Value);
1621PushEvalStack(null, ExprContext.None);
1657PushEvalStack(new BoundDefaultExpression(node.Syntax, node.Operand.Type), ExprContext.Value);
1692PushEvalStack(null, ExprContext.None);
1703exceptionSourceOpt = VisitExpression(exceptionSourceOpt, ExprContext.AssignmentTarget);
1768var rewrittenInitializer = this.VisitExpression(initializer, ExprContext.Value);
1790BoundExpression visitedOperand = this.VisitExpression(node.Operand, ExprContext.Address);
1934return top.Item2 == (local.RefKind == RefKind.None ? ExprContext.Value : ExprContext.Address) &&