internal EnterFlowNode(FlowGraph graph, FlowNodeId id, FlowNodeFlags flags, IEnumerable <FlowVariable> parameters)
            : base(graph, id, flags)
        {
            Contract.Requires(parameters != null);

            this.Parameters = parameters.ToImmutableArray();
        }
        internal InnerFlowNode(FlowGraph graph, FlowNodeId id, FlowNodeFlags flags, IEnumerable <Operation> operations)
            : base(graph, id, flags)
        {
            Contract.Requires(operations != null);

            this.Operations = operations.ToImmutableArray();
        }
        internal ReturnFlowNode(FlowGraph graph, FlowNodeId id, FlowNodeFlags flags, IEnumerable <Expression> returnValues)
            : base(graph, id, flags)
        {
            Contract.Requires(returnValues != null);

            this.ReturnValues = returnValues.ToImmutableArray();
        }
        internal ThrowExceptionFlowNode(
            FlowGraph graph,
            FlowNodeId id,
            FlowNodeFlags flags,
            IRoutineLocation constructorLocation,
            IEnumerable <Expression> arguments)
            : base(graph, id, flags)
        {
            Contract.Requires(constructorLocation != null);
            Contract.Requires(arguments != null);

            this.ConstructorLocation = constructorLocation;
            this.Arguments           = arguments.ToImmutableArray();
        }
        internal CallFlowNode(
            FlowGraph graph,
            FlowNodeId id,
            FlowNodeFlags flags,
            IRoutineLocation location,
            IEnumerable <Expression> arguments,
            IEnumerable <FlowVariable> returnAssignments,
            CallKind kind)
            : base(graph, id, flags)
        {
            Contract.Requires(location != null);
            Contract.Requires(arguments != null);
            Contract.Requires(returnAssignments != null);
            Contract.Requires(
                kind != CallKind.ObjectCreation || VerifyConstructorUsage(location, returnAssignments),
                nameof(kind));

            this.Location          = location;
            this.Arguments         = arguments.ToImmutableArray();
            this.ReturnAssignments = returnAssignments.ToImmutableArray();
            this.Kind = kind;
        }
Exemple #6
0
 public FlowNode this[FlowNodeId nodeId]
 {
     get { return(this.Nodes[nodeId.Value]); }
 }