Binder\Binder_Statements.cs (20)
150BoundBlock block;
153(block = (BoundBlock)result).Statements.Length == 1 &&
566BoundBlock blockBody = null;
567BoundBlock expressionBody = null;
610BoundBlock runAnalysis(BoundBlock block, BindingDiagnosticBag blockDiagnostics)
1904internal virtual BoundBlock BindEmbeddedBlock(BlockSyntax node, BindingDiagnosticBag diagnostics)
1909private BoundBlock BindBlock(BlockSyntax node, BindingDiagnosticBag diagnostics)
1922private BoundBlock BindBlockParts(BlockSyntax node, BindingDiagnosticBag diagnostics)
1938private BoundBlock FinishBindBlockParts(CSharpSyntaxNode node, ImmutableArray<BoundStatement> boundStatements)
3294var tryBlock = BindEmbeddedBlock(node.Block, diagnostics);
3296var finallyBlockOpt = (node.Finally != null) ? BindEmbeddedBlock(node.Finally.Block, diagnostics) : null;
3437var block = BindEmbeddedBlock(node.Block, diagnostics);
3538internal BoundBlock CreateBlockFromExpression(CSharpSyntaxNode node, ImmutableArray<LocalSymbol> locals, RefKind refKind, BoundExpression expression, ExpressionSyntax expressionSyntax, BindingDiagnosticBag diagnostics)
3635internal virtual BoundBlock BindExpressionBodyAsBlock(
3663static BoundBlock bindExpressionBodyAsBlockInternal(ArrowExpressionClauseSyntax expressionBody, Binder bodyBinder, BindingDiagnosticBag diagnostics)
3676public BoundBlock BindLambdaExpressionAsBlock(ExpressionSyntax body, BindingDiagnosticBag diagnostics)
3688public BoundBlock CreateBlockFromExpression(ExpressionSyntax body, BoundExpression expression, BindingDiagnosticBag diagnostics)
3853constructor.Body == null ? null : (BoundBlock)bodyBinder.BindStatement(constructor.Body, diagnostics),
4144blockBody == null ? null : (BoundBlock)BindStatement(blockBody, diagnostics),
BoundTree\UnboundLambda.cs (17)
25BoundBlock? Body { get; }
35BoundBlock? IBoundLambdaOrFunction.Body { get => this.Body; }
85public BoundLambda(SyntaxNode syntax, UnboundLambda unboundLambda, BoundBlock body, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? delegateType, InferredLambdaReturnType inferredReturnType)
362public static void GetReturnTypes(ArrayBuilder<(BoundReturnStatement, TypeWithAnnotations)> builder, BoundBlock block)
606protected BoundBlock BindLambdaBody(LambdaSymbol lambdaSymbol, Binder lambdaBodyBinder, BindingDiagnosticBag diagnostics)
617protected abstract BoundBlock BindLambdaBodyCore(LambdaSymbol lambdaSymbol, Binder lambdaBodyBinder, BindingDiagnosticBag diagnostics);
623protected abstract BoundExpression? GetLambdaExpressionBody(BoundBlock body);
628protected abstract BoundBlock CreateBlockFromLambdaExpressionBody(Binder lambdaBodyBinder, BoundExpression expression, BindingDiagnosticBag diagnostics);
760var block = BindLambdaBody(lambdaSymbol, lambdaBodyBinder, BindingDiagnosticBag.Discarded);
827BoundBlock block;
989(var lambdaSymbol, var block, var lambdaBodyBinder, var diagnostics) = BindWithParameterAndReturnType(parameterTypes, parameterRefKinds, returnType, refKind, refCustomModifiers);
1050private (LambdaSymbol lambdaSymbol, BoundBlock block, ExecutableCodeBinder lambdaBodyBinder, BindingDiagnosticBag diagnostics) BindWithParameterAndReturnType(
1066var block = BindLambdaBody(lambdaSymbol, lambdaBodyBinder, diagnostics);
1286(var lambdaSymbol, var block, var lambdaBodyBinder, var diagnostics) = BindWithParameterAndReturnType(parameterTypes, parameterRefKinds, returnType, refKind, refCustomModifiers);
1636protected override BoundExpression? GetLambdaExpressionBody(BoundBlock body)
1651protected override BoundBlock CreateBlockFromLambdaExpressionBody(Binder lambdaBodyBinder, BoundExpression expression, BindingDiagnosticBag diagnostics)
1656protected override BoundBlock BindLambdaBodyCore(LambdaSymbol lambdaSymbol, Binder lambdaBodyBinder, BindingDiagnosticBag diagnostics)
Compiler\MethodBodySynthesizer.cs (11)
176internal static BoundBlock ConstructAutoPropertyAccessorBody(SourceMemberMethodSymbol accessor)
211return BoundBlock.SynthesizedNoLocals(syntax, statement);
217internal static BoundBlock ConstructFieldLikeEventAccessorBody(SourceEventSymbol eventSymbol, bool isAddMethod, CSharpCompilation compilation, BindingDiagnosticBag diagnostics)
234internal static BoundBlock ConstructFieldLikeEventAccessorBody_WinRT(SourceEventSymbol eventSymbol, bool isAddMethod, CSharpCompilation compilation, BindingDiagnosticBag diagnostics)
314return BoundBlock.SynthesizedNoLocals(syntax, returnStatement);
324return BoundBlock.SynthesizedNoLocals(syntax, callStatement, returnStatement);
346internal static BoundBlock ConstructFieldLikeEventAccessorBody_Regular(SourceEventSymbol eventSymbol, bool isAddMethod, CSharpCompilation compilation, BindingDiagnosticBag diagnostics)
373return BoundBlock.SynthesizedNoLocals(syntax, @return);
417return BoundBlock.SynthesizedNoLocals(syntax,
530internal static BoundBlock ConstructDestructorBody(MethodSymbol method, BoundBlock block)
FlowAnalysis\FlowAnalysisPass.cs (10)
31public static BoundBlock Rewrite(
33BoundBlock block,
113private static BoundBlock PrependImplicitInitializations(BoundBlock body, MethodSymbol method, ImmutableArray<FieldSymbol> implicitlyInitializedFields, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics)
168private static BoundBlock AppendImplicitReturn(BoundBlock body, MethodSymbol method, bool originalBodyNested)
177builder.Add(AppendImplicitReturn((BoundBlock)statements[n - 1], method));
190internal static BoundBlock AppendImplicitReturn(BoundBlock body, MethodSymbol method)
213BoundBlock block,
Generated\BoundNodes.xml.Generated.cs (76)
1051public BoundExtractedFinallyBlock(SyntaxNode syntax, BoundBlock finallyBlock, bool hasErrors = false)
1060public BoundBlock FinallyBlock { get; }
1065public BoundExtractedFinallyBlock Update(BoundBlock finallyBlock)
3376public BoundBlock Update(ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements)
3380var result = new BoundBlock(this.Syntax, locals, localFunctions, hasUnsafeModifier, instrumentation, statements, this.HasErrors);
3556public BoundLocalFunctionStatement(SyntaxNode syntax, MethodSymbol symbol, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
3568public BoundBlock? BlockBody { get; }
3569public BoundBlock? ExpressionBody { get; }
3574public BoundLocalFunctionStatement Update(MethodSymbol symbol, BoundBlock? blockBody, BoundBlock? expressionBody)
4260public BoundTryStatement(SyntaxNode syntax, BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt, bool preferFaultHandler, bool hasErrors = false)
4274public BoundBlock TryBlock { get; }
4276public BoundBlock? FinallyBlockOpt { get; }
4283public BoundTryStatement Update(BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt, bool preferFaultHandler)
4297public BoundCatchBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression? exceptionSourceOpt, TypeSymbol? exceptionTypeOpt, BoundStatementList? exceptionFilterPrologueOpt, BoundExpression? exceptionFilterOpt, BoundBlock body, bool isSynthesizedAsyncCatchAll, bool hasErrors = false)
4318public BoundBlock Body { get; }
4324public BoundCatchBlock Update(ImmutableArray<LocalSymbol> locals, BoundExpression? exceptionSourceOpt, TypeSymbol? exceptionTypeOpt, BoundStatementList? exceptionFilterPrologueOpt, BoundExpression? exceptionFilterOpt, BoundBlock body, bool isSynthesizedAsyncCatchAll)
7708public BoundLambda(SyntaxNode syntax, UnboundLambda unboundLambda, MethodSymbol symbol, BoundBlock body, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? type, bool hasErrors = false)
7727public BoundBlock Body { get; }
7734public BoundLambda Update(UnboundLambda unboundLambda, MethodSymbol symbol, BoundBlock body, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? type)
8912protected BoundMethodBodyBase(BoundKind kind, SyntaxNode syntax, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8919public BoundBlock? BlockBody { get; }
8920public BoundBlock? ExpressionBody { get; }
8925public BoundNonConstructorMethodBody(SyntaxNode syntax, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8934public BoundNonConstructorMethodBody Update(BoundBlock? blockBody, BoundBlock? expressionBody)
8948public BoundConstructorMethodBody(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundStatement? initializer, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8964public BoundConstructorMethodBody Update(ImmutableArray<LocalSymbol> locals, BoundStatement? initializer, BoundBlock? blockBody, BoundBlock? expressionBody)
9244return VisitBlock((BoundBlock)node, arg);
9641public virtual R VisitBlock(BoundBlock node, A arg) => this.DefaultVisit(node, arg);
9882public virtual BoundNode? VisitBlock(BoundBlock node) => this.DefaultVisit(node);
10343public override BoundNode? VisitBlock(BoundBlock node)
11224BoundBlock finallyBlock = (BoundBlock)this.Visit(node.FinallyBlock);
11634public override BoundNode? VisitBlock(BoundBlock node)
11676BoundBlock? blockBody = (BoundBlock?)this.Visit(node.BlockBody);
11677BoundBlock? expressionBody = (BoundBlock?)this.Visit(node.ExpressionBody);
11813BoundBlock tryBlock = (BoundBlock)this.Visit(node.TryBlock);
11815BoundBlock? finallyBlockOpt = (BoundBlock?)this.Visit(node.FinallyBlockOpt);
11824BoundBlock body = (BoundBlock)this.Visit(node.Body);
12439BoundBlock body = (BoundBlock)this.Visit(node.Body);
12667BoundBlock? blockBody = (BoundBlock?)this.Visit(node.BlockBody);
12668BoundBlock? expressionBody = (BoundBlock?)this.Visit(node.ExpressionBody);
12675BoundBlock? blockBody = (BoundBlock?)this.Visit(node.BlockBody);
12676BoundBlock? expressionBody = (BoundBlock?)this.Visit(node.ExpressionBody);
13845public override BoundNode? VisitBlock(BoundBlock node)
13880BoundBlock? blockBody = (BoundBlock?)this.Visit(node.BlockBody);
13881BoundBlock? expressionBody = (BoundBlock?)this.Visit(node.ExpressionBody);
13961BoundBlock body = (BoundBlock)this.Visit(node.Body);
15037BoundBlock body = (BoundBlock)this.Visit(node.Body);
15411BoundBlock? blockBody = (BoundBlock?)this.Visit(node.BlockBody);
15412BoundBlock? expressionBody = (BoundBlock?)this.Visit(node.ExpressionBody);
16230public override TreeDumperNode VisitBlock(BoundBlock node, object? arg) => new TreeDumperNode("block", null, new TreeDumperNode[]
Lowering\LocalRewriter\LocalRewriter_UsingStatement.cs (14)
40BoundBlock tryBlock = rewrittenBody.Kind == BoundKind.Block
41? (BoundBlock)rewrittenBody
42: BoundBlock.SynthesizedNoLocals(node.Syntax, rewrittenBody);
63BoundBlock body,
72BoundBlock result = body;
92BoundBlock body = new BoundBlock(syntax, ImmutableArray<LocalSymbol>.Empty, statements);
108private BoundBlock MakeExpressionUsingStatement(BoundUsingStatement node, BoundBlock tryBlock)
206private BoundBlock RewriteDeclarationUsingStatement(
209BoundBlock tryBlock,
233return BoundBlock.SynthesizedNoLocals(declarationSyntax, rewrittenDeclaration, tryBlock);
269return BoundBlock.SynthesizedNoLocals(declarationSyntax, rewrittenDeclaration, tryFinally);
282BoundBlock tryBlock,
423finallyBlockOpt: BoundBlock.SynthesizedNoLocals(resourceSyntax, finallyStatement));
Lowering\SyntheticBoundNodeFactory.cs (17)
456public BoundBlock Block()
461public BoundBlock Block(ImmutableArray<BoundStatement> statements)
466public BoundBlock Block(params BoundStatement[] statements)
471public BoundBlock Block(ImmutableArray<LocalSymbol> locals, params BoundStatement[] statements)
476public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements)
481public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, params BoundStatement[] statements)
486public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, ImmutableArray<BoundStatement> statements)
491public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, ImmutableArray<BoundStatement> statements)
496public BoundExtractedFinallyBlock ExtractedFinallyBlock(BoundBlock finallyBlock)
990var firstPart = this.Block(locals, statements.ToImmutable());
1004var firstPart = this.Block(locals, statements.ToImmutable());
1595BoundBlock tryBlock,
1597BoundBlock? finallyBlock = null,
1611BoundBlock block)
1619BoundBlock block)
1624internal BoundTryStatement Fault(BoundBlock tryBlock, BoundBlock faultBlock)
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListEnumeratorConstructor.cs (1)
33var block = f.Block(