1--TEST--
2Decrementing objects which are castable to numeric types
3--EXTENSIONS--
4zend_test
5--FILE--
6<?php
7
8$l = new LongCastableNoOperations(5);
9$f = new FloatCastableNoOperations(15.8);
10$nl = new NumericCastableNoOperations(52);
11$nf = new NumericCastableNoOperations(58.3);
12
13/* Check normal arithmetic */
14try {
15    var_dump($l - 1);
16} catch (\TypeError $e) {
17    echo $e->getMessage(), PHP_EOL;
18}
19
20try {
21    var_dump($f - 1);
22} catch (\TypeError $e) {
23    echo $e->getMessage(), PHP_EOL;
24}
25
26try {
27    var_dump($nl - 1);
28} catch (\TypeError $e) {
29    echo $e->getMessage(), PHP_EOL;
30}
31
32try {
33    var_dump($nf - 1);
34} catch (\TypeError $e) {
35    echo $e->getMessage(), PHP_EOL;
36}
37
38/* Decrement */
39try {
40    $l--;
41    var_dump($l);
42} catch (\TypeError $e) {
43    echo $e->getMessage(), PHP_EOL;
44}
45
46try {
47    $f--;
48    var_dump($f);
49} catch (\TypeError $e) {
50    echo $e->getMessage(), PHP_EOL;
51}
52
53try {
54    $nl--;
55    var_dump($nl);
56} catch (\TypeError $e) {
57    echo $e->getMessage(), PHP_EOL;
58}
59
60try {
61    $nf--;
62    var_dump($nf);
63} catch (\TypeError $e) {
64    echo $e->getMessage(), PHP_EOL;
65}
66
67?>
68--EXPECT--
69Unsupported operand types: LongCastableNoOperations - int
70Unsupported operand types: FloatCastableNoOperations - int
71int(51)
72float(57.3)
73Cannot decrement LongCastableNoOperations
74Cannot decrement FloatCastableNoOperations
75int(51)
76float(57.3)
77