-
Notifications
You must be signed in to change notification settings - Fork 577
Expand file tree
/
Copy pathbug-14661.php
More file actions
78 lines (64 loc) · 1.39 KB
/
Copy pathbug-14661.php
File metadata and controls
78 lines (64 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php // lint >= 8.0
declare(strict_types=1);
namespace Bug14661;
class A
{
public function mixedOrder(
?string $other = null,
?string $target = null,
): void {}
public function sameOrder(
?string $other = null,
?string $target = null,
): void {}
public function differentTypes(
int $a,
string $b,
): void {}
}
class B
{
public function mixedOrder(
?string $target = null,
?string $other = null,
): void {}
public function sameOrder(
?string $other = null,
?string $target = null,
): void {}
public function differentTypes(
string $b,
int $a,
): void {}
}
class C
{
public function mixedOrder(
?string $target = null,
?string $extra = null,
?string $other = null,
): void {}
}
function mixedOrder(A|B $obj): void
{
$obj->mixedOrder(target: 'value');
}
function sameOrder(A|B $obj): void
{
$obj->sameOrder(target: 'value');
}
function mixedOrderBothArgs(A|B $obj): void
{
$obj->mixedOrder(other: 'a', target: 'b');
$obj->mixedOrder(target: 'b', other: 'a');
}
function differentTypes(A|B $obj): void
{
$obj->differentTypes(a: 1, b: 'hello');
$obj->differentTypes(b: 'hello', a: 1);
}
function threeWayUnion(A|B|C $obj): void
{
$obj->mixedOrder(target: 'value');
$obj->mixedOrder(other: 'a', target: 'b');
}