示例#1
0
        private static AbstractExpression ReadTypeOf(ITypeOfOperation op)
        {
            var context = CodeReaderContext.GetContextOrThrow();
            var operand = context.CodeModel.Get <TypeMember>(op.TypeOperand);

            return(new TypeReferenceExpression(operand));
        }
 private static void AnalyzeTypeof(OperationAnalysisContext context, ITypeOfOperation typeOf)
 {
     if (IsInternal(context, typeOf.TypeOperand))
     {
         ReportDiagnostic(context, typeOf.TypeOperand);
     }
 }
示例#3
0
        public override MultiValue VisitTypeOf(ITypeOfOperation typeOfOperation, StateValue state)
        {
            if (typeOfOperation.TypeOperand is ITypeParameterSymbol typeParameter)
            {
                return(new GenericParameterValue(typeParameter));
            }
            else if (typeOfOperation.TypeOperand is INamedTypeSymbol namedType)
            {
                return(new SystemTypeValue(new TypeProxy(namedType)));
            }

            return(TopValue);
        }
示例#4
0
            public override PointsToAbstractValue VisitTypeOf(ITypeOfOperation operation, object argument)
            {
                var _ = base.VisitTypeOf(operation, argument);

                return(PointsToAbstractValue.NoLocation);
            }
示例#5
0
 public override MultiValue VisitTypeOf(ITypeOfOperation typeOfOperation, StateValue state)
 {
     return(SingleValueExtensions.FromTypeSymbol(typeOfOperation.TypeOperand) ?? TopValue);
 }
            public override NullAbstractValue VisitTypeOf(ITypeOfOperation operation, object argument)
            {
                var _ = base.VisitTypeOf(operation, argument);

                return(NullAbstractValue.NotNull);
            }
示例#7
0
 public override IOperation VisitTypeOf(ITypeOfOperation operation, object argument)
 {
     return(new TypeOfExpression(operation.TypeOperand, ((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit));
 }
示例#8
0
 public override void VisitTypeOf(ITypeOfOperation operation)
 {
     Assert.Equal(OperationKind.TypeOf, operation.Kind);
     Assert.NotNull(operation.TypeOperand);
     Assert.Empty(operation.Children);
 }
示例#9
0
 public virtual void VisitTypeOf(ITypeOfOperation operation)
 {
     DefaultVisit(operation);
 }
示例#10
0
 public override void VisitTypeOf([NotNull] ITypeOfOperation operation)
 {
     base.VisitTypeOf(operation);
 }
示例#11
0
        public override void VisitTypeOf(ITypeOfOperation operation)
        {
            var typeOperand = operation.TypeOperand;

            base.VisitTypeOf(operation);
        }
示例#12
0
 public override bool VisitTypeOf([NotNull] ITypeOfOperation operation1, [CanBeNull] IOperation argument)
 {
     return(argument is ITypeOfOperation operation2 && AreBaseOperationsEqual(operation1, operation2) &&
            AreSymbolsEqual(operation1.TypeOperand, operation2.TypeOperand));
 }
            public override Location VisitTypeOf([NotNull] ITypeOfOperation operation, [CanBeNull] object argument)
            {
                var syntax = (TypeOfExpressionSyntax)operation.Syntax;

                return(syntax.Keyword.GetLocation());
            }