/// <inheritdoc /> protected override Value cloneValue() { AnyArrayValue value = new AnyArrayValue(); value.setStorage(getStorage()); return(value); }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { switch (operation) { case Operations.Mod: result = ModuloOperation.AbstractModulo(flow); break; default: result = BitwiseOperation.Bitwise(OutSet, operation); if (result != null) { break; } if (ArithmeticOperation.IsArithmetic(operation)) { // TODO: This must be fatal error SetWarning("Unsupported operand type: Arithmetic of array and scalar type"); result = OutSet.AnyValue; break; } base.VisitAnyArrayValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { result = Comparison.RightAlwaysGreater(OutSet, operation); if (result != null) { return; } base.VisitAnyArrayValue(value); }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { result = Comparison.AbstractCompare(OutSet, operation); if (result != null) { return; } base.VisitAnyArrayValue(value); }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { switch (operation) { case Operations.Plus: // TODO: This must be fatal error SetWarning("Unsupported operand types: Unary plus of array"); result = OutSet.AnyValue; break; case Operations.Minus: // TODO: This must be fatal error SetWarning("Unsupported operand types: Unary minus of array"); result = OutSet.AnyValue; break; case Operations.LogicNegation: result = OutSet.AnyBooleanValue; break; case Operations.Int32Cast: result = OutSet.AnyIntegerValue; break; case Operations.FloatCast: case Operations.DoubleCast: result = OutSet.AnyFloatValue; break; case Operations.Print: // The operator convert value to string and print it. The string value is not used // to resolve the entire expression. Instead, the false value is returned. // TODO: This is a quest for tainted analysis result = OutSet.CreateBool(false); break; case Operations.Clone: // TODO: This must be fatal error SetWarning("__clone method called on non-object"); result = OutSet.AnyValue; break; case Operations.ObjectCast: result = OutSet.AnyObjectValue; break; case Operations.ArrayCast: result = value; break; default: base.VisitAnyArrayValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { result = LogicalOperation.AbstractLogical(OutSet, operation, TypeConversion.ToBoolean(leftOperand.Value)); if (result != null) { return; } base.VisitAnyArrayValue(value); }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { switch (operation) { case Operations.Identical: result = OutSet.CreateBool(false); break; case Operations.NotIdentical: result = OutSet.CreateBool(true); break; case Operations.Mod: result = ModuloOperation.AbstractModulo(flow); break; default: result = Comparison.RightAlwaysGreater(OutSet, operation); if (result != null) { break; } result = LogicalOperation.AbstractLogical(OutSet, operation, TypeConversion.ToBoolean(leftOperand)); if (result != null) { break; } result = BitwiseOperation.Bitwise(OutSet, operation); if (result != null) { break; } if (ArithmeticOperation.IsArithmetic(operation)) { // TODO: This must be fatal error SetWarning("Unsupported operand type: Arithmetic of array and object type"); result = OutSet.AnyValue; break; } base.VisitAnyArrayValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { result = Comparison.RightAbstractBooleanCompare(OutSet, operation, leftOperand.Value); if (result != null) { return; } result = LogicalOperation.AbstractLogical(OutSet, operation, leftOperand.Value); if (result != null) { return; } base.VisitAnyArrayValue(value); }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { switch (operation) { case Operations.Equal: case Operations.NotEqual: case Operations.LessThan: case Operations.GreaterThanOrEqual: case Operations.Or: case Operations.Xor: result = OutSet.AnyBooleanValue; break; case Operations.BitAnd: case Operations.ShiftLeft: case Operations.ShiftRight: result = OutSet.CreateInt(0); break; case Operations.BitOr: case Operations.BitXor: result = TypeConversion.AnyArrayToIntegerInterval(OutSet); break; case Operations.Mod: result = ModuloOperation.AbstractModulo(flow); break; default: if (ArithmeticOperation.IsArithmetic(operation)) { // TODO: This must be fatal error SetWarning("Unsupported operand type: Arithmetic of array and null type"); result = OutSet.AnyValue; break; } base.VisitAnyArrayValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { switch (operation) { case Operations.Identical: case Operations.NotIdentical: result = OutSet.AnyBooleanValue; break; case Operations.Mod: result = ModuloOperation.AbstractModulo(flow); break; default: result = Comparison.AbstractCompare(OutSet, operation); if (result != null) { break; } result = LogicalOperation.AbstractLogical(OutSet, operation, TypeConversion.ToNativeBoolean(Snapshot, leftOperand)); if (result != null) { break; } result = BitwiseOperation.Bitwise(OutSet, operation); if (result != null) { break; } base.VisitAnyArrayValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { switch (operation) { case Operations.Mod: // Ommitted warning message that object cannot be converted to integer result = ModuloOperation.AbstractModulo(flow); break; default: result = LogicalOperation.AbstractLogical(OutSet, operation); if (result != null) { break; } result = BitwiseOperation.Bitwise(OutSet, operation); if (result != null) { // Ommitted warning message that object cannot be converted to integer break; } if (ArithmeticOperation.IsArithmetic(operation)) { // Ommitted warning message that object cannot be converted to integer // TODO: This must be fatal error SetWarning("Unsupported operand type: Arithmetic of array and other type"); result = OutSet.AnyValue; break; } base.VisitAnyArrayValue(value); break; } }
public override void VisitAnyArrayValue(AnyArrayValue value) { ContainsAnyValue = true; locations.Add(new ArrayAnyValueLocation(containingIndex, index, value)); }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { result = "Array"; }
public override void VisitAnyArrayValue(AnyArrayValue value) { this.AddLocation(new ArrayAnyValueLocation(null, index, value)); }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { anyArrayVisitor.SetLeftOperand(value); visitor = anyArrayVisitor; }
/// <inheritdoc /> public override void VisitAnyArrayValue(AnyArrayValue value) { result = TypeConversion.ToString(OutSet, value); abstractResult = null; }