public ControlFlowGraph(List <Block> reversedBlocks, Block entryBlock, ExitBlock exitBlock) { ExitBlock = exitBlock; EntryBlock = RemoveEmptyBlocks(reversedBlocks, entryBlock); Blocks = reversedBlocks.Reverse <Block>().ToImmutableArray(); if (Blocks.OfType <TemporaryBlock>().Any()) { throw new InvalidOperationException("Could not construct valid control flow graph"); } ComputePredecessors(); }
protected ControlFlowGraphBuilder(SyntaxNode node, SemanticModel semanticModel) { if (node == null) { throw new ArgumentNullException(nameof(node)); } if (semanticModel == null) { throw new ArgumentNullException(nameof(semanticModel)); } this.node = node; this.semanticModel = semanticModel; ExitBlock = CreateExitBlock(); }