Exemplo n.º 1
0
        public override void VisitIsType(IIsTypeOperation operation)
        {
            Assert.Equal(OperationKind.IsType, operation.Kind);
            Assert.NotNull(operation.TypeOperand);
            bool isNegated = operation.IsNegated;

            Assert.Same(operation.ValueOperand, operation.Children.Single());
        }
            public override ParameterValidationAbstractValue VisitIsType(IIsTypeOperation operation, object argument)
            {
                var value = base.VisitIsType(operation, argument);

                // Mark a location as validated on paths where user has performed an IsType check, for example 'x is object'.
                // See comments in VisitBinaryOperatorCore override above for further details.
                if (FlowBranchConditionKind == ControlFlowConditionKind.WhenTrue)
                {
                    MarkValidatedLocations(operation.ValueOperand);
                }

                return(value);
            }
Exemplo n.º 3
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="operation">IOperationインスタンス</param>
        /// <param name="container">イベントコンテナ</param>
        public IsType(IIsTypeOperation operation, EventContainer container) : base(container)
        {
            var name = Expression.GetSymbolName(operation.TypeOperand, true);
            var type = Expression.GetSymbolTypeName(operation.TypeOperand);

            if (operation.TypeOperand.TypeKind == TypeKind.Class)
            {
                // 外部ファイル参照イベント発行
                RaiseOtherFileReferenced(operation.Syntax, operation.TypeOperand);
            }

            Expressions.AddRange(OperationFactory.GetExpressionList(operation.ValueOperand, container));
            Expressions.Add(new Expression("is", ""));
            Expressions.Add(new Expression(name, type));
        }
Exemplo n.º 4
0
            public override PointsToAbstractValue VisitIsType(IIsTypeOperation operation, object argument)
            {
                var _ = base.VisitIsType(operation, argument);

                return(PointsToAbstractValue.NoLocation);
            }
            public override NullAbstractValue VisitIsType(IIsTypeOperation operation, object argument)
            {
                var _ = base.VisitIsType(operation, argument);

                return(NullAbstractValue.NotNull);
            }
Exemplo n.º 6
0
 public override IOperation VisitIsType(IIsTypeOperation operation, object argument)
 {
     return(new IsTypeExpression(Visit(operation.ValueOperand), operation.TypeOperand, operation.IsNegated, ((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit));
 }
Exemplo n.º 7
0
 public virtual void VisitIsType(IIsTypeOperation operation)
 {
     DefaultVisit(operation);
 }
Exemplo n.º 8
0
 public override void VisitIsType([NotNull] IIsTypeOperation operation)
 {
     base.VisitIsType(operation);
 }
Exemplo n.º 9
0
        public override void VisitIsType(IIsTypeOperation operation)
        {
            var isType = operation.TypeOperand;

            base.VisitIsType(operation);
        }
Exemplo n.º 10
0
 public override bool VisitIsType([NotNull] IIsTypeOperation operation1, [CanBeNull] IOperation argument)
 {
     return(argument is IIsTypeOperation operation2 && AreBaseOperationsEqual(operation1, operation2) &&
            AreSymbolsEqual(operation1.TypeOperand, operation2.TypeOperand) &&
            operation1.IsNegated == operation2.IsNegated);
 }