1 write to Expression
Microsoft.CodeAnalysis.CSharp (1)
Generated\BoundNodes.xml.Generated.cs (1)
3942this.Expression = expression;
51 references to Expression
Microsoft.CodeAnalysis.CSharp (23)
Binder\RefSafetyAnalysis.cs (1)
856uint collectionEscape = GetValEscape(node.Expression, _localScopeDepth);
FlowAnalysis\AbstractFlowPass.cs (1)
2696VisitRvalue(node.Expression);
FlowAnalysis\NullableWalker.cs (10)
9954if (node.Expression.Kind != BoundKind.Conversion) 9958VisitRvalue(node.Expression); 9962var (expr, conversion) = RemoveConversion(node.Expression, includeExplicitConversions: false); 9963SnapshotWalkerThroughConversionGroup(node.Expression, expr); 10027if (node.Expression.Type!.SpecialType == SpecialType.System_Collections_IEnumerable) 10030targetTypeWithAnnotations = TypeWithAnnotations.Create(node.Expression.Type); 10032else if (ForEachLoopBinder.IsIEnumerableT(node.Expression.Type.OriginalDefinition, isAsync, compilation)) 10055GetConversionIfApplicable(node.Expression, expr), 10069SetAnalyzedNullability(node.Expression, new VisitResult(convertedResult, convertedResult.ToTypeWithAnnotations(compilation))); 10099if (!reportedDiagnostic && !(node.Expression is BoundConversion { Operand: { IsSuppressed: true } }))
FlowAnalysis\NullableWalker.DebugVerifier.cs (1)
148Visit(node.Expression);
Generated\BoundNodes.xml.Generated.cs (5)
3964if (enumeratorInfoOpt != this.EnumeratorInfoOpt || elementPlaceholder != this.ElementPlaceholder || elementConversion != this.ElementConversion || iterationVariableType != this.IterationVariableType || iterationVariables != this.IterationVariables || iterationErrorExpressionOpt != this.IterationErrorExpressionOpt || expression != this.Expression || deconstructionOpt != this.DeconstructionOpt || awaitOpt != this.AwaitOpt || body != this.Body || !Symbols.SymbolEqualityComparer.ConsiderEverything.Equals(breakLabel, this.BreakLabel) || !Symbols.SymbolEqualityComparer.ConsiderEverything.Equals(continueLabel, this.ContinueLabel)) 9823this.Visit(node.Expression); 10998BoundExpression expression = (BoundExpression)this.Visit(node.Expression); 12969BoundExpression expression = (BoundExpression)this.Visit(node.Expression); 15318new TreeDumperNode("expression", null, new TreeDumperNode[] { Visit(node.Expression, null) }),
Lowering\Instrumentation\CodeCoverageInstrumenter.cs (1)
536syntaxForSpan = ((BoundForEachStatement)statement).Expression.Syntax;
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (1)
1002var boundConversion = (BoundConversion)node.Expression;
Operations\CSharpOperationFactory.cs (3)
1809getEnumeratorArguments: CreateArgumentOperations(enumeratorInfoOpt.GetEnumeratorInfo, boundForEachStatement.Expression.Syntax), 1810moveNextArguments: CreateArgumentOperations(enumeratorInfoOpt.MoveNextInfo, boundForEachStatement.Expression.Syntax), 1869IOperation collection = Create(boundForEachStatement.Expression);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (28)
Semantics\ForEachTests.cs (28)
1219Assert.Equal(SpecialType.System_Collections_IEnumerable, boundNode.Expression.Type.SpecialType); 1220Assert.Equal(SymbolKind.ArrayType, ((BoundConversion)boundNode.Expression).Operand.Type.Kind); 1225return ((BoundConversion)boundNode.Expression).Conversion; 1257Assert.Equal(SpecialType.System_String, boundNode.Expression.Type.SpecialType); 1258Assert.Equal(SpecialType.System_String, ((BoundConversion)boundNode.Expression).Operand.Type.SpecialType); 1301Assert.Equal("Enumerable", boundNode.Expression.Type.ToTestDisplayString()); 1302Assert.Equal("Enumerable", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 1345Assert.Equal("Enumerable", boundNode.Expression.Type.ToTestDisplayString()); 1346Assert.Equal("Enumerable", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 1378Assert.Equal("System.Collections.IEnumerable", boundNode.Expression.Type.ToTestDisplayString()); 1379Assert.Equal("System.Collections.IEnumerable", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 1418Assert.Equal("System.Collections.Generic.IEnumerable<System.Int32>", boundNode.Expression.Type.ToTestDisplayString()); 1419Assert.Equal("Enumerable", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 1460Assert.Equal(SpecialType.System_Collections_IEnumerable, boundNode.Expression.Type.SpecialType); 1461Assert.Equal("Enumerable", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 1499Assert.Equal(SpecialType.System_Collections_IEnumerable, boundNode.Expression.Type.SpecialType); 1500Assert.Equal("Enumerable", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 1680Assert.Equal(SpecialType.System_Collections_IEnumerable, boundNode.Expression.Type.SpecialType); 1681Assert.Equal(TypeKind.Dynamic, ((BoundConversion)boundNode.Expression).Operand.Type.TypeKind); 1713Assert.Equal(SpecialType.System_Collections_IEnumerable, boundNode.Expression.Type.SpecialType); 1714Assert.Equal(SymbolKind.DynamicType, ((BoundConversion)boundNode.Expression).Operand.Type.Kind); 1754Assert.Equal("Enumerable<T>", boundNode.Expression.Type.ToTestDisplayString()); 1755Assert.Equal("Enumerable<T>", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 1838Assert.Equal("Enumerable<T>", boundNode.Expression.Type.ToTestDisplayString()); 1839Assert.Equal("Enumerable<T>", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 1885Assert.Equal("Enumerable", boundNode.Expression.Type.ToTestDisplayString()); 1886Assert.Equal("Enumerable", ((BoundConversion)boundNode.Expression).Operand.Type.ToTestDisplayString()); 3247Assert.Equal("C", boundNode.Expression.Type.ToDisplayString());