Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ MergeScopes()

ReadOnlyCollection< Expression > System.Linq.Expressions.Compiler.VariableBinder.MergeScopes ( Expression node)
inlineprivate

Definition at line 152 of file VariableBinder.cs.

153 {
154 ReadOnlyCollection<Expression> readOnlyCollection = ((!(node is LambdaExpression lambdaExpression)) ? ((BlockExpression)node).Expressions : new ReadOnlyCollection<Expression>(new Expression[1] { lambdaExpression.Body }));
155 CompilerScope compilerScope = _scopes.Peek();
156 while (readOnlyCollection.Count == 1 && readOnlyCollection[0].NodeType == ExpressionType.Block)
157 {
158 BlockExpression blockExpression = (BlockExpression)readOnlyCollection[0];
159 if (blockExpression.Variables.Count > 0)
160 {
161 foreach (ParameterExpression variable in blockExpression.Variables)
162 {
163 if (compilerScope.Definitions.ContainsKey(variable))
164 {
165 return readOnlyCollection;
166 }
167 }
168 if (compilerScope.MergedScopes == null)
169 {
170 compilerScope.MergedScopes = new HashSet<BlockExpression>(ReferenceEqualityComparer.Instance);
171 }
172 compilerScope.MergedScopes.Add(blockExpression);
173 foreach (ParameterExpression variable2 in blockExpression.Variables)
174 {
176 }
177 }
179 }
180 return readOnlyCollection;
181 }
void Add(TKey key, TValue value)
readonly Stack< CompilerScope > _scopes

References System.Linq.Expressions.Compiler.VariableBinder._scopes, System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Collections.Generic.Dictionary< TKey, TValue >.ContainsKey(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, and System.Collections.Generic.ReferenceEqualityComparer.Instance.

Referenced by System.Linq.Expressions.Compiler.VariableBinder.VisitBlock(), System.Linq.Expressions.Compiler.VariableBinder.VisitInvocation(), and System.Linq.Expressions.Compiler.VariableBinder.VisitLambda< T >().