protected Block getExpandedBlock(Arguments arguments) { var region = new Region(); using var popper = new RegionPopper(region, "invoke expanded"); items.Must().HaveCountOfExactly(2).OrThrow(LOCATION, () => "There must be exactly two functions"); var item0 = items[0]; var item1 = items[1]; var lambda0 = item0.Lambda; var lambda1 = item1.Lambda; var parameters0 = lambda0.Parameters; var parameters1 = lambda1.Parameters; parameters0.AnyComparisands.Must().BeTrue().OrThrow(LOCATION, () => "The first function must have a comparisand"); var values = parameters1.GetArguments(arguments); popper.Push(); var(checkExpression, checkVariable) = firstComparisand(lambda0.Parameters); var expander = new Expander(functionName, item1.Lambda.Block, checkExpression, checkVariable, lambda0.Block, region); SetArguments(values); foreach (var parameter in parameters1.GetParameters()) { expander.AddParameter(parameter); } var block = expander.Expand(); return(block); }
Block getExpandedBlock(Arguments arguments) { var region = new Region(); using (var popper = new RegionPopper(region, "invoke expanded")) { Assert(items.Count == 2, LOCATION, "There must be exactly two functions"); var item0 = items[0]; var item1 = items[1]; var lambda0 = item0.Lambda; var lambda1 = item1.Lambda; var parameters0 = lambda0.Parameters; var parameters1 = lambda1.Parameters; Assert(parameters0.AnyComparisands, LOCATION, "The first function must have a comparisand"); var values = parameters1.GetArguments(arguments); popper.Push(); (var checkExpression, var checkVariable) = firstComparisand(lambda0.Parameters); var expander = new Expander(functionName, item1.Lambda.Block, checkExpression, checkVariable, lambda0.Block, region); SetArguments(values); foreach (var parameter in parameters1.GetParameters()) { expander.AddParameter(parameter); } var block = expander.Expand(); return(block); } }