Exemplo n.º 1
0
 internal BranchWithInfo With(
     IOperation?branchValue,
     ControlFlowConditionKind controlFlowConditionKind)
 {
     return(new BranchWithInfo(Destination, EnteringRegions, LeavingRegions,
                               FinallyRegions, Kind, branchValue, controlFlowConditionKind,
                               LeavingRegionLocals, LeavingRegionFlowCaptures));
 }
Exemplo n.º 2
0
        public static ControlFlowConditionKind Negate(this ControlFlowConditionKind controlFlowConditionKind)
        {
            switch (controlFlowConditionKind)
            {
            case ControlFlowConditionKind.WhenFalse:
                return(ControlFlowConditionKind.WhenTrue);

            case ControlFlowConditionKind.WhenTrue:
                return(ControlFlowConditionKind.WhenFalse);

            default:
                Debug.Fail($"Unsupported conditional kind: '{controlFlowConditionKind}'");
                return(controlFlowConditionKind);
            }
        }
Exemplo n.º 3
0
 internal BasicBlock(
     BasicBlockKind kind,
     ImmutableArray <IOperation> operations,
     IOperation branchValue,
     ControlFlowConditionKind conditionKind,
     int ordinal,
     bool isReachable,
     ControlFlowRegion region)
 {
     Kind            = kind;
     Operations      = operations;
     BranchValue     = branchValue;
     ConditionKind   = conditionKind;
     Ordinal         = ordinal;
     IsReachable     = isReachable;
     EnclosingRegion = region;
 }
Exemplo n.º 4
0
 private BranchWithInfo(
     BasicBlock destination,
     ImmutableArray <ControlFlowRegion> enteringRegions,
     ImmutableArray <ControlFlowRegion> leavingRegions,
     ImmutableArray <ControlFlowRegion> finallyRegions,
     ControlFlowBranchSemantics kind,
     IOperation?branchValue,
     ControlFlowConditionKind controlFlowConditionKind,
     IEnumerable <ILocalSymbol> leavingRegionLocals,
     IEnumerable <CaptureId> leavingRegionFlowCaptures)
 {
     Destination               = destination;
     Kind                      = kind;
     EnteringRegions           = enteringRegions;
     LeavingRegions            = leavingRegions;
     FinallyRegions            = finallyRegions;
     BranchValue               = branchValue;
     ControlFlowConditionKind  = controlFlowConditionKind;
     LeavingRegionLocals       = leavingRegionLocals;
     LeavingRegionFlowCaptures = leavingRegionFlowCaptures;
 }