Exemplo n.º 1
0
        public override void VisitFlowCapture(IFlowCaptureOperation operation)
        {
            Assert.Equal(OperationKind.FlowCapture, operation.Kind);
            Assert.True(operation.IsImplicit);
            Assert.Same(operation.Value, operation.Children.Single());

            switch (operation.Value.Kind)
            {
            case OperationKind.Invalid:
            case OperationKind.None:
            case OperationKind.AnonymousFunction:
            case OperationKind.FlowCaptureReference:
            case OperationKind.DefaultValue:
            case OperationKind.FlowAnonymousFunction:     // must be an error case like in Microsoft.CodeAnalysis.CSharp.UnitTests.ConditionalOperatorTests.TestBothUntyped unit-test
                break;

            case OperationKind.OmittedArgument:
            case OperationKind.DeclarationExpression:
            case OperationKind.Discard:
                Assert.False(true, $"A {operation.Value.Kind} node should not be spilled or captured.");
                break;

            default:
                // Only values can be spilled/captured
                if (!operation.Value.ConstantValue.HasValue || operation.Value.ConstantValue.Value != null)
                {
                    Assert.NotNull(operation.Value.Type);
                }
                break;
            }
        }
Exemplo n.º 2
0
 public override IOperation VisitFlowCapture(
     IFlowCaptureOperation operation,
     object?argument
     )
 {
     throw ExceptionUtilities.Unreachable;
 }
Exemplo n.º 3
0
 public virtual void VisitFlowCapture(IFlowCaptureOperation operation)
 {
     DefaultVisit(operation);
 }