Fix spaceship operator bugs, document, add tests
Remove some erroneously added brackets_increment() calls. Reject <=> in preprocessor expressions with a clear error message (it seems it isn't supported here - clang and gcc don't at least). The type returned by `<=>` is not `bool`. We pretend it's `int` for now, which should work for how it's likely to be used in constant expressions. Fixes #1622
This commit is contained in:
parent
cb887ed2d4
commit
02b4bd8eca
10 changed files with 91 additions and 7 deletions
23
Examples/test-suite/php/cpp20_spaceship_operator_runme.php
Normal file
23
Examples/test-suite/php/cpp20_spaceship_operator_runme.php
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
require "tests.php";
|
||||
|
||||
check::functions(array('f', 'spaceship'));
|
||||
check::classes(array('cpp20_spaceship_operator','A'));
|
||||
check::globals(array('v', 'SPACE'));
|
||||
|
||||
//check::equal(ALIEN, true);
|
||||
check::equal(SPACE_get(), 1);
|
||||
check::equal(COMET, 1);
|
||||
check::equal(v_get(), 42);
|
||||
|
||||
$x = new A(1);
|
||||
$y = new A(2);
|
||||
|
||||
check::equal(spaceship($x, $y) < 0, true);
|
||||
check::equal(spaceship($x, $x), 0);
|
||||
check::equal(spaceship($y, $x) > 0, true);
|
||||
|
||||
check::equal(f(), 42);
|
||||
|
||||
check::done();
|
||||
Loading…
Add table
Add a link
Reference in a new issue