Skip to content

Commit d458756

Browse files
authored
Fix scoping of string literal classes which contains numbers (#258)
Closes #256
1 parent 6dc68c3 commit d458756

File tree

12 files changed

+236
-236
lines changed

12 files changed

+236
-236
lines changed

specs/string-literal/array-var.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,21 @@
2929
<?php
3030
3131
$x = [
32-
'Symfony\\Component\\Yaml\\Yaml' => 'Symfony\\Component\\Yaml\\_Yaml',
33-
'\\Symfony\\Component\\Yaml\\Yaml' => '\\Symfony\\Component\\Yaml\\_Yaml',
34-
'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\_Yaml',
35-
'\\Humbug\\Symfony\\Component\\Yaml\\Yaml' => '\\Humbug\\Symfony\\Component\\Yaml\\_Yaml',
32+
'Symfony\\Component\\Yaml\\Ya_1' => 'Symfony\\Component\\Yaml\\Ya_1',
33+
'\\Symfony\\Component\\Yaml\\Ya_1' => '\\Symfony\\Component\\Yaml\\Ya_1',
34+
'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1',
35+
'\\Humbug\\Symfony\\Component\\Yaml\\Ya_1' => '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1',
3636
'Closure',
3737
'usedAttributes',
3838
'FOO',
3939
'PHP_EOL',
4040
];
4141
4242
(new X)->foo()([
43-
'Symfony\\Component\\Yaml\\Yaml' => 'Symfony\\Component\\Yaml\\_Yaml',
44-
'\\Symfony\\Component\\Yaml\\Yaml' => '\\Symfony\\Component\\Yaml\\_Yaml',
45-
'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\_Yaml',
46-
'\\Humbug\\Symfony\\Component\\Yaml\\Yaml' => '\\Humbug\\Symfony\\Component\\Yaml\\_Yaml',
43+
'Symfony\\Component\\Yaml\\Ya_1' => 'Symfony\\Component\\Yaml\\Ya_1',
44+
'\\Symfony\\Component\\Yaml\\Ya_1' => '\\Symfony\\Component\\Yaml\\Ya_1',
45+
'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1',
46+
'\\Humbug\\Symfony\\Component\\Yaml\\Ya_1' => '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1',
4747
'Closure',
4848
'usedAttributes',
4949
'FOO',
@@ -55,8 +55,8 @@
5555
5656
namespace Humbug;
5757
58-
$x = ['Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\_Yaml', 'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\_Yaml', 'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\_Yaml', 'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\_Yaml', 'Closure', 'usedAttributes', 'FOO', 'PHP_EOL'];
59-
(new \Humbug\X())->foo()(['Symfony\\Component\\Yaml\\Yaml' => 'Symfony\\Component\\Yaml\\_Yaml', '\\Symfony\\Component\\Yaml\\Yaml' => '\\Symfony\\Component\\Yaml\\_Yaml', 'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\_Yaml', '\\Humbug\\Symfony\\Component\\Yaml\\Yaml' => '\\Humbug\\Symfony\\Component\\Yaml\\_Yaml', 'Closure', 'usedAttributes', 'FOO', 'PHP_EOL']);
58+
$x = ['Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Closure', 'usedAttributes', 'FOO', 'PHP_EOL'];
59+
(new \Humbug\X())->foo()(['Symfony\\Component\\Yaml\\Ya_1' => 'Symfony\\Component\\Yaml\\Ya_1', '\\Symfony\\Component\\Yaml\\Ya_1' => '\\Symfony\\Component\\Yaml\\Ya_1', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1', '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1' => '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Closure', 'usedAttributes', 'FOO', 'PHP_EOL']);
6060

6161
PHP
6262
,

specs/string-literal/class-const-array.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
3131
class Foo {
3232
const X = [
33-
'Symfony\\Component\\Yaml\\Yaml' => 'Symfony\\Component\\Yaml\\Yaml',
34-
'\\Symfony\\Component\\Yaml\\Yaml' => '\\Symfony\\Component\\Yaml\\Yaml',
35-
'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\Yaml',
36-
'\\Humbug\\Symfony\\Component\\Yaml\\Yaml' => '\\Humbug\\Symfony\\Component\\Yaml\\Yaml',
33+
'Symfony\\Component\\Yaml\\Ya_1' => 'Symfony\\Component\\Yaml\\Ya_1',
34+
'\\Symfony\\Component\\Yaml\\Ya_1' => '\\Symfony\\Component\\Yaml\\Ya_1',
35+
'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1',
36+
'\\Humbug\\Symfony\\Component\\Yaml\\Ya_1' => '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1',
3737
];
3838
}
3939
@@ -44,7 +44,7 @@ class Foo {
4444
4545
class Foo
4646
{
47-
const X = ['Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\Yaml', 'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\Yaml', 'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\Yaml', 'Humbug\\Symfony\\Component\\Yaml\\Yaml' => 'Humbug\\Symfony\\Component\\Yaml\\Yaml'];
47+
const X = ['Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1' => 'Humbug\\Symfony\\Component\\Yaml\\Ya_1'];
4848
}
4949

5050
PHP

specs/string-literal/class-const.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
<?php
3030
3131
class Foo {
32-
const X = 'Symfony\\Component\\Yaml\\Ya_ml';
33-
const X = '\\Symfony\\Component\\Yaml\\Ya_ml';
34-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_ml';
35-
const X = '\\Humbug\\Symfony\\Component\\Yaml\\Ya_ml';
32+
const X = 'Symfony\\Component\\Yaml\\Ya_1';
33+
const X = '\\Symfony\\Component\\Yaml\\Ya_1';
34+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
35+
const X = '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1';
3636
3737
const X = 'HelloWorld';
3838
}
@@ -44,10 +44,10 @@ class Foo {
4444
4545
class Foo
4646
{
47-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_ml';
48-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_ml';
49-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_ml';
50-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_ml';
47+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
48+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
49+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
50+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
5151
const X = 'HelloWorld';
5252
}
5353

specs/string-literal/class-prop.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
<?php
3030
3131
class Foo {
32-
private $x = 'Symfony\\Component\\Yaml\\Yaml';
33-
private $x = '\\Symfony\\Component\\Yaml\\Yaml';
34-
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
35-
private $x = '\\Humbug\\Symfony\\Component\\Yaml\\Yaml';
32+
private $x = 'Symfony\\Component\\Yaml\\Ya_1';
33+
private $x = '\\Symfony\\Component\\Yaml\\Ya_1';
34+
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
35+
private $x = '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1';
3636
}
3737
3838
----
@@ -42,10 +42,10 @@ class Foo {
4242
4343
class Foo
4444
{
45-
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
46-
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
47-
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
48-
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
45+
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
46+
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
47+
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
48+
private $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
4949
}
5050

5151
PHP

specs/string-literal/class-var.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
<?php
3030
3131
class Foo {
32-
var $x = 'Symfony\\Component\\Yaml\\Yaml';
33-
var $x = '\\Symfony\\Component\\Yaml\\Yaml';
34-
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
35-
var $x = '\\Humbug\\Symfony\\Component\\Yaml\\Yaml';
32+
var $x = 'Symfony\\Component\\Yaml\\Ya_1';
33+
var $x = '\\Symfony\\Component\\Yaml\\Ya_1';
34+
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
35+
var $x = '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1';
3636
}
3737
3838
----
@@ -42,10 +42,10 @@ class Foo {
4242
4343
class Foo
4444
{
45-
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
46-
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
47-
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
48-
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
45+
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
46+
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
47+
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
48+
var $x = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
4949
}
5050

5151
PHP

specs/string-literal/const.php

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@
3232
const X = '\\Yaml';
3333
const X = 'Closure';
3434
const X = '\\Closure';
35-
const X = 'Symfony\\Component\\Yaml\\Yaml';
36-
const X = '\\Symfony\\Component\\Yaml\\Yaml';
37-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
38-
const X = '\\Humbug\\Symfony\\Component\\Yaml\\Yaml';
35+
const X = 'Symfony\\Component\\Yaml\\Ya_1';
36+
const X = '\\Symfony\\Component\\Yaml\\Ya_1';
37+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
38+
const X = '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1';
3939
4040
----
4141
<?php
@@ -46,10 +46,10 @@
4646
const X = '\\Yaml';
4747
const X = 'Closure';
4848
const X = '\\Closure';
49-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
50-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
51-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
52-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
49+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
50+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
51+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
52+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
5353

5454
PHP
5555
,
@@ -59,22 +59,22 @@
5959
'payload' => <<<'PHP'
6060
<?php
6161
62-
const X = 'Symfony\\Component\\Yaml\\Yamll';
63-
const X = 'Symfony\\Component\\Yaml\\Yaml';
64-
const X = '\\Symfony\\Component\\Yaml\\Yaml';
65-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
66-
const X = '\\Humbug\\Symfony\\Component\\Yaml\\Yaml';
62+
const X = 'Symfony\\Component\\Yaml\\Ya_1l';
63+
const X = 'Symfony\\Component\\Yaml\\Ya_1';
64+
const X = '\\Symfony\\Component\\Yaml\\Ya_1';
65+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
66+
const X = '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1';
6767
6868
----
6969
<?php
7070
7171
namespace Humbug;
7272
73-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yamll';
74-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
75-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
76-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
77-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
73+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1l';
74+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
75+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
76+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
77+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
7878

7979
PHP
8080
],
@@ -85,38 +85,38 @@
8585
<?php
8686
8787
const X = 'Symfony\\Yaml';
88-
const X = 'Symfony\\Component\\Yaml\\Yaml';
89-
const X = '\\Symfony\\Component\\Yaml\\Yaml';
90-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
91-
const X = '\\Humbug\\Symfony\\Component\\Yaml\\Yaml';
88+
const X = 'Symfony\\Component\\Yaml\\Ya_1';
89+
const X = '\\Symfony\\Component\\Yaml\\Ya_1';
90+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
91+
const X = '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1';
9292
9393
----
9494
<?php
9595
9696
namespace Humbug;
9797
9898
const X = 'Humbug\\Symfony\\Yaml';
99-
const X = 'Symfony\\Component\\Yaml\\Yaml';
100-
const X = '\\Symfony\\Component\\Yaml\\Yaml';
101-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
102-
const X = 'Humbug\\Symfony\\Component\\Yaml\\Yaml';
99+
const X = 'Symfony\\Component\\Yaml\\Ya_1';
100+
const X = '\\Symfony\\Component\\Yaml\\Ya_1';
101+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
102+
const X = 'Humbug\\Symfony\\Component\\Yaml\\Ya_1';
103103

104104
PHP
105105
],
106106

107107
'FQCN string argument formed by concatenated strings' => <<<'PHP'
108108
<?php
109109
110-
const X = 'Symfony\\Component' . '\\Yaml\\Yaml';
111-
const X = '\\Symfony\\Component' . '\\Yaml\\Yaml';
110+
const X = 'Symfony\\Component' . '\\Yaml\\Ya_1';
111+
const X = '\\Symfony\\Component' . '\\Yaml\\Ya_1';
112112
113113
----
114114
<?php
115115
116116
namespace Humbug;
117117
118-
const X = 'Symfony\\Component' . '\\Yaml\\Yaml';
119-
const X = '\\Symfony\\Component' . '\\Yaml\\Yaml';
118+
const X = 'Symfony\\Component' . '\\Yaml\\Ya_1';
119+
const X = '\\Symfony\\Component' . '\\Yaml\\Ya_1';
120120

121121
PHP
122122
,
@@ -153,38 +153,38 @@ class Yaml
153153
,
154154

155155
'FQC constant call on whitelisted class' => [
156-
'whitelist' => ['Symfony\Component\Yaml\Yaml'],
156+
'whitelist' => ['Symfony\Component\Yaml\Ya_1'],
157157
'registered-classes' => [
158-
['Symfony\Component\Yaml\Yaml', 'Humbug\Symfony\Component\Yaml\Yaml'],
158+
['Symfony\Component\Yaml\Ya_1', 'Humbug\Symfony\Component\Yaml\Ya_1'],
159159
],
160160
'payload' => <<<'PHP'
161161
<?php
162162
163163
namespace Symfony\Component\Yaml {
164-
class Yaml {}
164+
class Ya_1 {}
165165
}
166166
167167
namespace {
168-
const X = Symfony\Component\Yaml\Yaml::class;
169-
const X = \Symfony\Component\Yaml\Yaml::class;
170-
const X = Humbug\Symfony\Component\Yaml\Yaml::class;
171-
const X = \Humbug\Symfony\Component\Yaml\Yaml::class;
168+
const X = Symfony\Component\Yaml\Ya_1::class;
169+
const X = \Symfony\Component\Yaml\Ya_1::class;
170+
const X = Humbug\Symfony\Component\Yaml\Ya_1::class;
171+
const X = \Humbug\Symfony\Component\Yaml\Ya_1::class;
172172
}
173173
----
174174
<?php
175175
176176
namespace Humbug\Symfony\Component\Yaml;
177177
178-
class Yaml
178+
class Ya_1
179179
{
180180
}
181-
\class_alias('Humbug\\Symfony\\Component\\Yaml\\Yaml', 'Symfony\\Component\\Yaml\\Yaml', \false);
181+
\class_alias('Humbug\\Symfony\\Component\\Yaml\\Ya_1', 'Symfony\\Component\\Yaml\\Ya_1', \false);
182182
namespace Humbug;
183183
184-
const X = \Humbug\Symfony\Component\Yaml\Yaml::class;
185-
const X = \Humbug\Symfony\Component\Yaml\Yaml::class;
186-
const X = \Humbug\Symfony\Component\Yaml\Yaml::class;
187-
const X = \Humbug\Symfony\Component\Yaml\Yaml::class;
184+
const X = \Humbug\Symfony\Component\Yaml\Ya_1::class;
185+
const X = \Humbug\Symfony\Component\Yaml\Ya_1::class;
186+
const X = \Humbug\Symfony\Component\Yaml\Ya_1::class;
187+
const X = \Humbug\Symfony\Component\Yaml\Ya_1::class;
188188

189189
PHP
190190
],

specs/string-literal/define-value.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,20 @@
2828
'FQCN string argument' => <<<'PHP'
2929
<?php
3030
31-
define('X', 'Symfony\\Component\\Yaml\\Yaml');
32-
define('X', '\\Symfony\\Component\\Yaml\\Yaml');
33-
define('X', 'Humbug\\Symfony\\Component\\Yaml\\Yaml');
34-
define('X', '\\Humbug\\Symfony\\Component\\Yaml\\Yaml');
31+
define('X', 'Symfony\\Component\\Yaml\\Ya_1');
32+
define('X', '\\Symfony\\Component\\Yaml\\Ya_1');
33+
define('X', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1');
34+
define('X', '\\Humbug\\Symfony\\Component\\Yaml\\Ya_1');
3535
3636
----
3737
<?php
3838
3939
namespace Humbug;
4040
41-
\define('X', 'Humbug\\Symfony\\Component\\Yaml\\Yaml');
42-
\define('X', 'Humbug\\Symfony\\Component\\Yaml\\Yaml');
43-
\define('X', 'Humbug\\Symfony\\Component\\Yaml\\Yaml');
44-
\define('X', 'Humbug\\Symfony\\Component\\Yaml\\Yaml');
41+
\define('X', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1');
42+
\define('X', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1');
43+
\define('X', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1');
44+
\define('X', 'Humbug\\Symfony\\Component\\Yaml\\Ya_1');
4545

4646
PHP
4747
,

0 commit comments

Comments
 (0)