@@ -86,21 +86,17 @@ public bool IsPartOfMethodCallChain(Expression methodCall)
8686 private class ExpressionAnalysisVisitor : ExpressionVisitor
8787 {
8888 private readonly List < ParameterExpression > _accessedVariables ;
89- private readonly List < ParameterExpression > _assignedVariables ;
9089 private readonly List < Expression > _assignedAssignments ;
91- private readonly List < BinaryExpression > _joinedAssignments ;
92- private readonly List < LabelTarget > _namedLabelTargets ;
93- private readonly List < MethodCallExpression > _chainedMethodCalls ;
9490 private BlockExpression _currentBlock ;
9591
9692 private ExpressionAnalysisVisitor ( )
9793 {
9894 _accessedVariables = new List < ParameterExpression > ( ) ;
99- _assignedVariables = new List < ParameterExpression > ( ) ;
95+ AssignedVariables = new List < ParameterExpression > ( ) ;
10096 _assignedAssignments = new List < Expression > ( ) ;
101- _joinedAssignments = new List < BinaryExpression > ( ) ;
102- _namedLabelTargets = new List < LabelTarget > ( ) ;
103- _chainedMethodCalls = new List < MethodCallExpression > ( ) ;
97+ JoinedAssignments = new List < BinaryExpression > ( ) ;
98+ NamedLabelTargets = new List < LabelTarget > ( ) ;
99+ ChainedMethodCalls = new List < MethodCallExpression > ( ) ;
104100 }
105101
106102 #region Factory Method
@@ -142,13 +138,13 @@ private static Expression GetCoreExpression(Expression expression)
142138
143139 #endregion
144140
145- public IEnumerable < ParameterExpression > AssignedVariables => _assignedVariables ;
141+ public ICollection < ParameterExpression > AssignedVariables { get ; }
146142
147- public IEnumerable < BinaryExpression > JoinedAssignments => _joinedAssignments ;
143+ public ICollection < BinaryExpression > JoinedAssignments { get ; }
148144
149- public IEnumerable < LabelTarget > NamedLabelTargets => _namedLabelTargets ;
145+ public ICollection < LabelTarget > NamedLabelTargets { get ; }
150146
151- public IEnumerable < MethodCallExpression > ChainedMethodCalls => _chainedMethodCalls ;
147+ public List < MethodCallExpression > ChainedMethodCalls { get ; }
152148
153149 protected override Expression VisitBlock ( BlockExpression block )
154150 {
@@ -172,16 +168,16 @@ protected override Expression VisitBinary(BinaryExpression binaryExpression)
172168 if ( ( binaryExpression . NodeType == ExpressionType . Assign ) &&
173169 ( binaryExpression . Left . NodeType == ExpressionType . Parameter ) &&
174170 ( ( _currentBlock == null ) || _currentBlock . Expressions . Contains ( binaryExpression ) ) &&
175- ! _assignedVariables . Contains ( binaryExpression . Left ) &&
171+ ! AssignedVariables . Contains ( binaryExpression . Left ) &&
176172 ! _assignedAssignments . Contains ( binaryExpression ) )
177173 {
178174 var variable = ( ParameterExpression ) binaryExpression . Left ;
179175
180176 if ( VariableHasNotYetBeenAccessed ( variable ) )
181177 {
182- _joinedAssignments . Add ( binaryExpression ) ;
178+ JoinedAssignments . Add ( binaryExpression ) ;
183179 _accessedVariables . Add ( variable ) ;
184- _assignedVariables . Add ( variable ) ;
180+ AssignedVariables . Add ( variable ) ;
185181 }
186182
187183 AddAssignmentIfAppropriate ( binaryExpression . Right ) ;
@@ -222,21 +218,21 @@ protected override Expression VisitGoto(GotoExpression @goto)
222218 {
223219 if ( @goto . Kind == GotoExpressionKind . Goto )
224220 {
225- _namedLabelTargets . Add ( @goto . Target ) ;
221+ NamedLabelTargets . Add ( @goto . Target ) ;
226222 }
227223
228224 return base . VisitGoto ( @goto ) ;
229225 }
230226
231227 protected override Expression VisitMethodCall ( MethodCallExpression methodCall )
232228 {
233- if ( ! _chainedMethodCalls . Contains ( methodCall ) )
229+ if ( ! ChainedMethodCalls . Contains ( methodCall ) )
234230 {
235231 var methodCallChain = GetChainedMethodCalls ( methodCall ) . ToArray ( ) ;
236232
237233 if ( methodCallChain . Length > 2 )
238234 {
239- _chainedMethodCalls . AddRange ( methodCallChain ) ;
235+ ChainedMethodCalls . AddRange ( methodCallChain ) ;
240236 }
241237 }
242238
0 commit comments