using System.Collections.Immutable; using Microsoft.CodeAnalysis.CSharp.Symbols; using Microsoft.CodeAnalysis.PooledObjects; using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.CSharp; internal sealed class ExpressionVariableBinder : LocalScopeBinder { internal override SyntaxNode ScopeDesignator { get; } internal ExpressionVariableBinder(SyntaxNode scopeDesignator, Binder next) : base(next) { ScopeDesignator = scopeDesignator; } protected override ImmutableArray BuildLocals() { ArrayBuilder instance = ArrayBuilder.GetInstance(); ExpressionVariableFinder.FindExpressionVariables(this, instance, (CSharpSyntaxNode)(object)ScopeDesignator, GetBinder((SyntaxNode)(object)(CSharpSyntaxNode)(object)ScopeDesignator)); return instance.ToImmutableAndFree(); } internal override ImmutableArray GetDeclaredLocalsForScope(SyntaxNode scopeDesignator) { if (ScopeDesignator == scopeDesignator) { return Locals; } throw ExceptionUtilities.Unreachable("/_/src/Compilers/CSharp/Portable/Binder/ExpressionVariableBinder.cs", 41); } internal override ImmutableArray GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator) { throw ExceptionUtilities.Unreachable("/_/src/Compilers/CSharp/Portable/Binder/ExpressionVariableBinder.cs", 46); } }