Exemplo n.º 1
0
            public override void VisitIsPattern([NotNull] IIsPatternOperation operation)
            {
                NullCheckScanResult?scanResult = scanner.ScanIsPattern(operation);

                SetScanResult(scanResult);

                base.VisitIsPattern(operation);
            }
    public override void VisitIsPattern(IIsPatternOperation operation)
    {
        var visitor = new NotNullPatternVisitor();

        visitor.Visit(operation.Pattern);
        if (visitor.Matched)
        {
            Visit(operation.Value);
        }
    }
Exemplo n.º 3
0
        public NullCheckScanResult?ScanIsPattern([NotNull] IIsPatternOperation isPattern)
        {
            Guard.NotNull(isPattern, nameof(isPattern));

            if (isPattern.Pattern is IConstantPatternOperation constantPattern)
            {
                if (IsConstantNullOrDefault(constantPattern.Value) && IsNullableValueType(isPattern.Value))
                {
                    NullCheckOperand nullCheckOperand = GetParentNullCheckOperand(isPattern);

                    return(new NullCheckScanResult(isPattern.Value, NullCheckMethod.IsPattern, nullCheckOperand));
                }
            }

            return(null);
        }
Exemplo n.º 4
0
 public override PointsToAbstractValue VisitIsPattern(IIsPatternOperation operation, object argument)
 {
     // TODO: Handle patterns
     // https://github.com/dotnet/roslyn-analyzers/issues/1571
     return(base.VisitIsPattern(operation, argument));
 }
            public override NullAbstractValue VisitIsPattern(IIsPatternOperation operation, object argument)
            {
                var _ = base.VisitIsPattern(operation, argument);

                return(NullAbstractValue.NotNull);
            }
Exemplo n.º 6
0
 public override IOperation VisitIsPattern(IIsPatternOperation operation, object argument)
 {
     return(new IsPatternExpression(Visit(operation.Value), Visit(operation.Pattern), ((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit));
 }
Exemplo n.º 7
0
 public override void VisitIsPattern(IIsPatternOperation operation)
 {
     Assert.Equal(OperationKind.IsPattern, operation.Kind);
     AssertEx.Equal(new[] { operation.Value, operation.Pattern }, operation.Children);
 }
Exemplo n.º 8
0
 public static ConversionInference Create(IIsPatternOperation operation)
 => Create(
     targetType: operation.Pattern.GetPatternType(),
     sourceType: operation.Value.Type,
     isTryCast: true);
Exemplo n.º 9
0
 public virtual void VisitIsPattern(IIsPatternOperation operation)
 {
     DefaultVisit(operation);
 }
Exemplo n.º 10
0
 public override void VisitIsPattern([NotNull] IIsPatternOperation operation)
 {
     base.VisitIsPattern(operation);
 }
Exemplo n.º 11
0
 /// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="operation">IOperationインスタンス</param>
 /// <param name="container">イベントコンテナ</param>
 public IsPattern(IIsPatternOperation operation, EventContainer container) : base(container)
 {
     Expressions.AddRange(OperationFactory.GetExpressionList(operation.Value, container));
     Expressions.Add(new Expression("is", ""));
     Expressions.AddRange(OperationFactory.GetExpressionList(operation.Pattern, container));
 }
Exemplo n.º 12
0
 public override bool VisitIsPattern([NotNull] IIsPatternOperation operation1, [CanBeNull] IOperation argument)
 {
     return(argument is IIsPatternOperation operation2 && AreBaseOperationsEqual(operation1, operation2));
 }