Пример #1
0
        public void IDynamicIndexerAccessExpression_PublicExtensionMethodTests()
        {
            // Test null argument
            IDynamicIndexerAccessOperation nullDynamicExpression = null;

            Assert.Throws <ArgumentNullException>(() => nullDynamicExpression.GetArgumentName(0));
            Assert.Throws <ArgumentNullException>(() => nullDynamicExpression.GetArgumentRefKind(0));

            Func <
                ImmutableArray <IOperation>,
                ImmutableArray <string>,
                ImmutableArray <RefKind>,
                HasDynamicArgumentsExpression
                > createDynamicExpression = (arguments, argumentNames, argumentRefKinds) =>
                                            new DynamicIndexerAccessOperation(
                operation: null,
                arguments,
                argumentNames,
                argumentRefKinds,
                semanticModel: null,
                syntax: null,
                type: null,
                isImplicit: false
                );

            TestCore(createDynamicExpression);
        }
Пример #2
0
        /// <summary>
        /// Get an optional argument <see cref="RefKind"/> for an argument at the given <paramref name="index"/> to the given <paramref name="dynamicOperation"/>.
        /// Returns a non-null argument <see cref="RefKind"/> for C#.
        /// Always returns null for VB as <see cref="RefKind"/> cannot be specified for an argument in VB.
        /// </summary>
        /// <param name="dynamicOperation">Dynamic or late bound operation.</param>
        /// <param name="index">Argument index.</param>
        public static RefKind?GetArgumentRefKind(this IDynamicIndexerAccessOperation dynamicOperation, int index)
        {
            if (dynamicOperation == null)
            {
                throw new ArgumentNullException(nameof(dynamicOperation));
            }

            return(GetArgumentRefKind((HasDynamicArgumentsExpression)dynamicOperation, index));
        }
Пример #3
0
 public override IOperation VisitDynamicIndexerAccess(
     IDynamicIndexerAccessOperation operation,
     object?argument
     )
 {
     return(new DynamicIndexerAccessOperation(
                Visit(operation.Operation),
                VisitArray(operation.Arguments),
                ((HasDynamicArgumentsExpression)operation).ArgumentNames,
                ((HasDynamicArgumentsExpression)operation).ArgumentRefKinds,
                ((Operation)operation).OwningSemanticModel,
                operation.Syntax,
                operation.Type,
                operation.IsImplicit
                ));
 }
            public override NullAbstractValue VisitDynamicIndexerAccess(IDynamicIndexerAccessOperation operation, object argument)
            {
                var _ = base.VisitDynamicIndexerAccess(operation, argument);

                return(GetValueBasedOnInstanceOrReferenceValue(operation.Operation));
            }
Пример #5
0
 public override void VisitDynamicIndexerAccess(IDynamicIndexerAccessOperation operation)
 {
     Assert.Equal(OperationKind.DynamicIndexerAccess, operation.Kind);
     AssertEx.Equal(new[] { operation.Operation }.Concat(operation.Arguments), operation.Children);
 }
Пример #6
0
 public virtual void VisitDynamicIndexerAccess(IDynamicIndexerAccessOperation operation)
 {
     DefaultVisit(operation);
 }
Пример #7
0
 public override void VisitDynamicIndexerAccess([NotNull] IDynamicIndexerAccessOperation operation)
 {
     base.VisitDynamicIndexerAccess(operation);
 }
Пример #8
0
        public override void VisitDynamicIndexerAccess(IDynamicIndexerAccessOperation operation)
        {
            VisitDynamicArguments((HasDynamicArgumentsExpression)operation);

            base.VisitDynamicIndexerAccess(operation);
        }
Пример #9
0
 public override bool VisitDynamicIndexerAccess([NotNull] IDynamicIndexerAccessOperation operation1,
                                                [CanBeNull] IOperation argument)
 {
     return(argument is IDynamicIndexerAccessOperation operation2 && AreBaseOperationsEqual(operation1, operation2));
 }