1 instantiation of LocalFunctionSymbol
Microsoft.CodeAnalysis.CSharp (1)
Binder\LocalScopeBinder.cs (1)
301return new LocalFunctionSymbol(
169 references to LocalFunctionSymbol
Microsoft.CodeAnalysis.CSharp (133)
Binder\Binder.cs (1)
193internal virtual ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\Binder_Constraints.cs (1)
423LocalFunctionSymbol => null,
Binder\Binder_Statements.cs (4)
556var localSymbol = this.LookupLocalFunction(node.Identifier); 1844protected virtual LocalFunctionSymbol LookupLocalFunction(SyntaxToken nameToken) 3948internal virtual ImmutableArray<LocalFunctionSymbol> LocalFunctions 3952return ImmutableArray<LocalFunctionSymbol>.Empty;
Binder\BlockBinder.cs (2)
38protected override ImmutableArray<LocalFunctionSymbol> BuildLocalFunctions() 84internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\BuckStopsHereBinder.cs (2)
58protected override LocalFunctionSymbol? LookupLocalFunction(SyntaxToken nameToken) 181internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\CatchClauseBinder.cs (1)
55internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\EmbeddedStatementBinder.cs (4)
38protected override ImmutableArray<LocalFunctionSymbol> BuildLocalFunctions() 40ArrayBuilder<LocalFunctionSymbol> locals = null; 42return locals?.ToImmutableAndFree() ?? ImmutableArray<LocalFunctionSymbol>.Empty; 87internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\ExecutableCodeBinder.cs (1)
129if (((iterator as SourceMemberMethodSymbol)?.IsUnsafe == true || (iterator as LocalFunctionSymbol)?.IsUnsafe == true)
Binder\ExpressionListVariableBinder.cs (1)
51internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\ExpressionVariableBinder.cs (1)
44internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\FixedStatementBinder.cs (1)
70internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\ForEachLoopBinder.cs (1)
1690internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\ForLoopBinder.cs (1)
150internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\InContainerBinder.cs (1)
141protected override LocalFunctionSymbol LookupLocalFunction(SyntaxToken nameToken)
Binder\InMethodBinder.cs (1)
64protected override LocalFunctionSymbol LookupLocalFunction(SyntaxToken nameToken)
Binder\LocalBinderFactory.cs (4)
368LocalFunctionSymbol match = FindLocalFunction(node, _enclosing); 397private static LocalFunctionSymbol FindLocalFunction(LocalFunctionStatementSyntax node, Binder enclosing) 399LocalFunctionSymbol match = null; 411foreach (var candidate in possibleScopeBinder.LocalFunctions)
Binder\LocalScopeBinder.cs (20)
19private ImmutableArray<LocalFunctionSymbol> _localFunctions; 50internal sealed override ImmutableArray<LocalFunctionSymbol> LocalFunctions 56ImmutableInterlocked.InterlockedCompareExchange(ref _localFunctions, BuildLocalFunctions(), default(ImmutableArray<LocalFunctionSymbol>)); 63protected virtual ImmutableArray<LocalFunctionSymbol> BuildLocalFunctions() 65return ImmutableArray<LocalFunctionSymbol>.Empty; 100private SmallDictionary<string, LocalFunctionSymbol> _lazyLocalFunctionsMap; 101private SmallDictionary<string, LocalFunctionSymbol> LocalFunctionsMap 250protected ImmutableArray<LocalFunctionSymbol> BuildLocalFunctions(SyntaxList<StatementSyntax> statements) 252ArrayBuilder<LocalFunctionSymbol> locals = null; 258return locals?.ToImmutableAndFree() ?? ImmutableArray<LocalFunctionSymbol>.Empty; 261internal void BuildLocalFunctions(StatementSyntax statement, ref ArrayBuilder<LocalFunctionSymbol> locals) 277locals = ArrayBuilder<LocalFunctionSymbol>.GetInstance(); 280var localSymbol = MakeLocalFunction(decl); 299protected LocalFunctionSymbol MakeLocalFunction(LocalFunctionStatementSyntax declaration) 355protected override LocalFunctionSymbol LookupLocalFunction(SyntaxToken nameToken) 357LocalFunctionSymbol result = null; 363foreach (var local in this.LocalFunctions) 408LocalFunctionSymbol localSymbol; 465declaredInThisScope |= newSymbolKind == SymbolKind.Method && this.LocalFunctions.Contains((LocalFunctionSymbol)newSymbol); 498LocalFunctionSymbol existingLocalFunction = null;
Binder\RefSafetyAnalysis.cs (1)
263var localFunction = node.Symbol;
Binder\ScriptLocalScopeBinder.cs (1)
47internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\SimpleLocalScopeBinder.cs (1)
35internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\SimpleProgramBinder.cs (4)
41protected override ImmutableArray<LocalFunctionSymbol> BuildLocalFunctions() 43ArrayBuilder<LocalFunctionSymbol>? locals = null; 53return locals?.ToImmutableAndFree() ?? ImmutableArray<LocalFunctionSymbol>.Empty; 105internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\SimpleProgramUnitBinder.cs (2)
31protected override ImmutableArray<LocalFunctionSymbol> BuildLocalFunctions() 70internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\SwitchBinder.cs (3)
142protected override ImmutableArray<LocalFunctionSymbol> BuildLocalFunctions() 144var builder = ArrayBuilder<LocalFunctionSymbol>.GetInstance(); 334internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\SwitchBinder_Patterns.cs (1)
44ImmutableArray<LocalFunctionSymbol> functions = GetDeclaredLocalFunctionsForScope(node);
Binder\UsingStatementBinder.cs (1)
308internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\WhileBinder.cs (1)
79internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\WithExternAliasesBinder.cs (1)
67protected sealed override LocalFunctionSymbol? LookupLocalFunction(SyntaxToken nameToken)
Binder\WithLambdaParametersBinder.cs (1)
175internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Binder\WithUsingNamespacesAndTypesBinder.cs (1)
223protected override LocalFunctionSymbol? LookupLocalFunction(SyntaxToken nameToken)
BoundTree\Constructors.cs (1)
599: this(syntax, locals, ImmutableArray<LocalFunctionSymbol>.Empty, hasUnsafeModifier: false, instrumentation: null, statements, hasErrors)
Compilation\MemberSemanticModel.cs (5)
360LocalFunctionSymbol function = GetDeclaredLocalFunction(binder, ownerOfTypeParametersInScope.Identifier); 704internal LocalFunctionSymbol GetDeclaredLocalFunction(LocalFunctionStatementSyntax declarationSyntax) 706var originalSymbol = GetDeclaredLocalFunction(this.GetEnclosingBinder(GetAdjustedNodePosition(declarationSyntax)), declarationSyntax.Identifier); 725private static LocalFunctionSymbol GetDeclaredLocalFunction(Binder enclosingBinder, SyntaxToken declaredIdentifier) 729foreach (var localFunction in binder.LocalFunctions)
FlowAnalysis\AbstractFlowPass.cs (5)
1292if (node.Method?.OriginalDefinition is LocalFunctionSymbol localFunc) 1308protected void VisitLocalFunctionUse(LocalFunctionSymbol symbol, SyntaxNode syntax, bool isCall) 1315LocalFunctionSymbol symbol, 1520if (node.MethodOpt?.OriginalDefinition is LocalFunctionSymbol localFunc) 1643else if (node.SymbolOpt?.OriginalDefinition is LocalFunctionSymbol localFunc)
FlowAnalysis\AbstractFlowPass_LocalFunctions.cs (5)
43protected abstract TLocalFunctionState CreateLocalFunctionState(LocalFunctionSymbol symbol); 45private SmallDictionary<LocalFunctionSymbol, TLocalFunctionState>? _localFuncVarUsages = null; 47protected TLocalFunctionState GetOrCreateLocalFuncUsages(LocalFunctionSymbol localFunc) 49_localFuncVarUsages ??= new SmallDictionary<LocalFunctionSymbol, TLocalFunctionState>(); 68var localFuncSymbol = localFunc.Symbol;
FlowAnalysis\ControlFlowPass.cs (1)
77protected override LocalFunctionState CreateLocalFunctionState(LocalFunctionSymbol symbol) => new LocalFunctionState(UnreachableState());
FlowAnalysis\DefiniteAssignment.cs (9)
77private readonly PooledHashSet<LocalFunctionSymbol> _usedLocalFunctions = PooledHashSet<LocalFunctionSymbol>.GetInstance(); 743var localFunction = variable as LocalFunctionSymbol; 1764if (parameter is SourceComplexParameterSymbolBase { ContainingSymbol: LocalFunctionSymbol or LambdaSymbol } sourceComplexParam) 2168private void ReportUnusedVariables(ImmutableArray<LocalFunctionSymbol> locals) 2170foreach (var symbol in locals) 2176private void ReportIfUnused(LocalFunctionSymbol symbol) 2252_usedLocalFunctions.Add((LocalFunctionSymbol)method);
FlowAnalysis\DefiniteAssignment.LocalFunctions.cs (6)
26protected override LocalFunctionState CreateLocalFunctionState(LocalFunctionSymbol symbol) 36LocalFunctionSymbol localFunc, 95var localFunc = GetNearestLocalFunctionOpt(CurrentSymbol); 152var nearestLocalFunc = GetNearestLocalFunctionOpt(CurrentSymbol); 158private static LocalFunctionSymbol GetNearestLocalFunctionOpt(Symbol symbol) 165return (LocalFunctionSymbol)symbol;
FlowAnalysis\FlowAnalysisPass.cs (1)
156return body.Update(body.Locals, ImmutableArray<LocalFunctionSymbol>.Empty, body.HasUnsafeModifier, body.Instrumentation, builder.ToImmutableAndFree());
FlowAnalysis\NullableWalker.cs (7)
3019var localFunc = node.Symbol; 3149LocalFunctionSymbol symbol, 3158private void VisitLocalFunctionUse(LocalFunctionSymbol symbol) 6283if (node is BoundCall { Method: { OriginalDefinition: LocalFunctionSymbol localFunction } }) 7980if (method?.OriginalDefinition is LocalFunctionSymbol localFunc) 8697if (node.MethodOpt?.OriginalDefinition is LocalFunctionSymbol localFunc) 11719protected override LocalFunctionState CreateLocalFunctionState(LocalFunctionSymbol symbol)
Generated\BoundNodes.xml.Generated.cs (12)
3193public BoundBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements, bool hasErrors = false) 3208public ImmutableArray<LocalFunctionSymbol> LocalFunctions { get; } 3215public BoundBlock Update(ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements) 3395public BoundLocalFunctionStatement(SyntaxNode syntax, LocalFunctionSymbol symbol, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false) 3406public LocalFunctionSymbol Symbol { get; } 3413public BoundLocalFunctionStatement Update(LocalFunctionSymbol symbol, BoundBlock? blockBody, BoundBlock? expressionBody) 3659public BoundSwitchStatement(SyntaxNode syntax, BoundExpression expression, ImmutableArray<LocalSymbol> innerLocals, ImmutableArray<LocalFunctionSymbol> innerLocalFunctions, ImmutableArray<BoundSwitchSection> switchSections, BoundDecisionDag reachabilityDecisionDag, BoundSwitchLabel? defaultLabel, GeneratedLabelSymbol breakLabel, bool hasErrors = false) 3681public ImmutableArray<LocalFunctionSymbol> InnerLocalFunctions { get; } 3690public BoundSwitchStatement Update(BoundExpression expression, ImmutableArray<LocalSymbol> innerLocals, ImmutableArray<LocalFunctionSymbol> innerLocalFunctions, ImmutableArray<BoundSwitchSection> switchSections, BoundDecisionDag reachabilityDecisionDag, BoundSwitchLabel? defaultLabel, GeneratedLabelSymbol breakLabel) 12887ImmutableArray<LocalFunctionSymbol> localFunctions = GetUpdatedArray(node, node.LocalFunctions); 12918LocalFunctionSymbol symbol = GetUpdatedSymbol(node, node.Symbol); 12927ImmutableArray<LocalFunctionSymbol> innerLocalFunctions = GetUpdatedArray(node, node.InnerLocalFunctions);
Lowering\ClosureConversion\SynthesizedClosureMethod.cs (2)
39originalMethod is LocalFunctionSymbol 110Debug.Assert(!(originalMethod is LocalFunctionSymbol) || !originalMethod.IsStatic || IsStatic);
Lowering\DiagnosticsPass_ExpressionTrees.cs (2)
197Debug.Assert(symbol.Kind == SymbolKind.Local || symbol.Kind == SymbolKind.Parameter || symbol is LocalFunctionSymbol); 212if (method?.OriginalDefinition is LocalFunctionSymbol localFunction)
Lowering\LocalRewriter\LocalRewriter.cs (2)
322var localFunction = node.Symbol; 353static bool hasReturnTypeOrParameter(LocalFunctionSymbol localFunction, Func<TypeWithAnnotations, bool> predicate) =>
Lowering\LocalRewriter\LocalRewriter_ReturnStatement.cs (1)
49(method as LocalFunctionSymbol)?.IsExpressionBodied ?? false;
Lowering\SyntheticBoundNodeFactory.cs (2)
481public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, params BoundStatement[] statements) 486public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, ImmutableArray<BoundStatement> statements)
Symbols\MethodSymbol.cs (1)
87/// Returns true if this symbol requires an instance reference as the implicit receiver. This is false if the symbol is static, or a <see cref="LocalFunctionSymbol"/>
Symbols\Source\LocalFunctionSymbol.cs (2)
490var localFunction = symbol as LocalFunctionSymbol;
Symbols\Source\SourceParameterSymbol.cs (1)
150Debug.Assert(!(ContainingSymbol is LocalFunctionSymbol));
Symbols\Source\SourceTypeParameterSymbol.cs (2)
188binderOpt: (ContainingSymbol as LocalFunctionSymbol)?.WithTypeParametersBinder); 289case LocalFunctionSymbol _:
Symbols\Symbol.cs (1)
1580if (variable is LocalFunctionSymbol localFunction)
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (8)
CodeGen\CodeGenLocalFunctionTests.cs (8)
5748var localFunction = semanticModel 5750.GetSymbol<LocalFunctionSymbol>(); 5823var localFunction = semanticModel 5825.GetSymbol<LocalFunctionSymbol>(); 5907var localFunction = semanticModel.GetDeclaredSymbol(localFunctionStatement).GetSymbol<LocalFunctionSymbol>(); 6163var localFunction = model.GetDeclaredSymbol(localFunctionSyntax).GetSymbol<LocalFunctionSymbol>();
Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests (2)
Attributes\AttributeTests_WellKnownAttributes.cs (2)
5680var localFunctionSymbol = model.GetDeclaredSymbol(localFunctionSyntax).GetSymbol<LocalFunctionSymbol>();
Microsoft.CodeAnalysis.CSharp.ExpressionEvaluator.ExpressionCompiler (1)
Binders\PlaceholderLocalBinder.cs (1)
118internal override ImmutableArray<LocalFunctionSymbol> GetDeclaredLocalFunctionsForScope(CSharpSyntaxNode scopeDesignator)
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (23)
Semantics\InitOnlyMemberTests.cs (2)
4133var localFunctionSymbol = model.GetDeclaredSymbol(localFunctionSyntax).GetSymbol<LocalFunctionSymbol>();
Semantics\LocalFunctionTests.cs (6)
1721var localSymbol = model.GetDeclaredSymbol(x).ContainingSymbol.GetSymbol<LocalFunctionSymbol>(); 1926var localSymbol = Assert.IsType<LocalFunctionSymbol>(model.GetDeclaredSymbol(localDecl.AsNode()).GetSymbol()); 1976var localSymbol = Assert.IsType<LocalFunctionSymbol>(model.GetDeclaredSymbol(localDecl.AsNode()).GetSymbol());
Semantics\NullableReferenceTypesTests.cs (10)
94032var f1 = model.GetDeclaredSymbol(localSyntaxes[0]).GetSymbol<LocalFunctionSymbol>(); 94038var f2 = model.GetDeclaredSymbol(localSyntaxes[1]).GetSymbol<LocalFunctionSymbol>(); 95361var f2 = model.GetDeclaredSymbol(localSyntaxes[0]).GetSymbol<LocalFunctionSymbol>(); 108049var localSymbol = model.GetDeclaredSymbol(localSyntax).GetSymbol<LocalFunctionSymbol>(); 108102var localSymbol = model.GetDeclaredSymbol(localSyntax).GetSymbol<LocalFunctionSymbol>();
Semantics\RefFieldTests.cs (1)
10576var localFunctions = decls.Select(d => model.GetDeclaredSymbol(d).GetSymbol<LocalFunctionSymbol>()).ToArray();
Semantics\TopLevelStatementsTests.cs (4)
6084var localFunction = semanticModel.GetDeclaredSymbol(localFunctionStatement).GetSymbol<LocalFunctionSymbol>(); 6147var localFunction = semanticModel 6149.GetSymbol<LocalFunctionSymbol>();
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (2)
Symbols\SymbolEqualityTests.cs (2)
135Assert.IsType<LocalFunctionSymbol>(nonNullOriginal.GetSymbol()); 136Assert.IsType<LocalFunctionSymbol>(nullOriginal.GetSymbol());