Skip to content

Commit d0191d8

Browse files
committed
Revert Signature::analyze
1 parent 5b091f4 commit d0191d8

File tree

4 files changed

+30
-142
lines changed

4 files changed

+30
-142
lines changed

src/PHPSemVerChecker/Analyzer/ClassMethodAnalyzer.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,17 @@ public function analyze(Stmt $contextBefore, Stmt $contextAfter)
7878
// Leave non-strict comparison here
7979
if ($methodBefore != $methodAfter) {
8080

81-
$signatureResult = Signature::analyze($methodBefore, $methodAfter);
81+
// Detect method renamed case only.
82+
if(
83+
$methodBefore->name !== $methodAfter->name
84+
&& strtolower($methodBefore->name) === strtolower($methodAfter->name)
85+
) {
86+
$report->add($this->context, new ClassMethodRenamedCaseOnly($this->context, $this->fileAfter, $contextAfter, $methodAfter));
87+
}
88+
89+
$signatureResult = Signature::analyze($methodBefore->getParams(), $methodAfter->getParams());
8290

8391
$changes = [
84-
'function_renamed_case_only' => ClassMethodRenamedCaseOnly::class,
8592
'parameter_added' => ClassMethodParameterAdded::class,
8693
'parameter_removed' => ClassMethodParameterRemoved::class,
8794
'parameter_renamed' => ClassMethodParameterNameChanged::class,

src/PHPSemVerChecker/Analyzer/FunctionAnalyzer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public function analyze(Registry $registryBefore, Registry $registryAfter)
5656
// Leave non-strict comparison here
5757
if ($functionBefore != $functionAfter) {
5858

59-
$signatureResult = Signature::analyze($functionBefore, $functionAfter);
59+
$signatureResult = Signature::analyze($functionBefore->getParams(), $functionAfter->getParams());
6060

6161
$changes = [
6262
'parameter_added' => FunctionParameterAdded::class,

src/PHPSemVerChecker/Comparator/Signature.php

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22

33
namespace PHPSemVerChecker\Comparator;
44

5-
use PhpParser\Node\FunctionLike;
6-
7-
class Signature
8-
{
9-
10-
public static function analyze(FunctionLike $functionA, FunctionLike $functionB)
5+
class Signature {
6+
/**
7+
* @param array $parametersA
8+
* @param array $parametersB
9+
* @return array
10+
*/
11+
public static function analyze(array $parametersA, array $parametersB)
1112
{
1213
$changes = [
13-
'function_renamed' => false,
14-
'function_renamed_case_only' => false,
1514
'parameter_added' => false,
1615
'parameter_removed' => false,
1716
'parameter_renamed' => false,
@@ -21,34 +20,6 @@ public static function analyze(FunctionLike $functionA, FunctionLike $functionB)
2120
'parameter_default_removed' => false,
2221
'parameter_default_value_changed' => false,
2322
];
24-
25-
$changes = self::detectFunctionNameChanges($changes, $functionA, $functionB);
26-
$changes = self::detectParameterChanges($changes, $functionA, $functionB);
27-
28-
return $changes;
29-
}
30-
31-
private static function detectFunctionNameChanges($changes, FunctionLike $functionA, FunctionLike $functionB)
32-
{
33-
if ($functionA->name != $functionB->name) {
34-
35-
if (strtolower($functionA->name) == strtolower($functionB->name)) {
36-
$changes['function_renamed_case_only'] = true;
37-
} else {
38-
$changes['function_renamed'] = true;
39-
}
40-
41-
return $changes;
42-
}
43-
44-
return $changes;
45-
}
46-
47-
private static function detectParameterChanges($changes, FunctionLike $functionA, FunctionLike $functionB)
48-
{
49-
$parametersA = $functionA->getParams();
50-
$parametersB = $functionB->getParams();
51-
5223
$lengthA = count($parametersA);
5324
$lengthB = count($parametersB);
5425

@@ -85,8 +56,8 @@ private static function detectParameterChanges($changes, FunctionLike $functionA
8556
$changes['parameter_default_removed'] = true;
8657
} elseif ($parametersA[$i]->default === null && $parametersB[$i]->default !== null) {
8758
$changes['parameter_default_added'] = true;
88-
// TODO(tom@tomrochette.com): Not all nodes have a value property
89-
} elseif (!Node::isEqual($parametersA[$i]->default, $parametersB[$i]->default)) {
59+
// TODO(tom@tomrochette.com): Not all nodes have a value property
60+
} elseif ( ! Node::isEqual($parametersA[$i]->default, $parametersB[$i]->default)) {
9061
$changes['parameter_default_value_changed'] = true;
9162
}
9263
}

tests/PHPSemVerChecker/Comparator/SignatureTest.php

Lines changed: 11 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,9 @@ class SignatureTest extends \PHPUnit_Framework_TestCase
1010
{
1111
public function testIdenticalSignaturesNoParameters()
1212
{
13-
$signature1 = new ClassMethod('testMethod1');
14-
$signature2 = new ClassMethod('testMethod1');
15-
16-
$result = Signature::analyze($signature1, $signature2);
13+
$result = Signature::analyze([], []);
1714

1815
$expectedResult = [
19-
'function_renamed' => false,
20-
'function_renamed_case_only' => false,
2116
'parameter_added' => false,
2217
'parameter_removed' => false,
2318
'parameter_renamed' => false,
@@ -33,24 +28,12 @@ public function testIdenticalSignaturesNoParameters()
3328

3429
public function testRenamedParameters()
3530
{
36-
$signature1 = new ClassMethod('testMethod1', [
37-
'params' => [
38-
new Param('testParameter')
39-
],
40-
]);
41-
42-
43-
$signature2 = new ClassMethod('testMethod1', [
44-
'params' => [
45-
new Param('testRenamedParameter')
46-
],
47-
]);
31+
$params1 = [new Param('testParameter')];
32+
$params2 = [new Param('testRenamedParameter')];
4833

49-
$result = Signature::analyze($signature1, $signature2);
34+
$result = Signature::analyze($params1, $params2);
5035

5136
$expectedResult = [
52-
'function_renamed' => false,
53-
'function_renamed_case_only' => false,
5437
'parameter_added' => false,
5538
'parameter_removed' => false,
5639
'parameter_renamed' => true,
@@ -66,92 +49,19 @@ public function testRenamedParameters()
6649

6750
public function testAddedParameters()
6851
{
69-
$signature1 = new ClassMethod('testMethod1', [
70-
'params' => [
71-
new Param('testParameter'),
72-
],
73-
]);
74-
75-
76-
$signature2 = new ClassMethod('testMethod1', [
77-
'params' => [
78-
new Param('testParameter'),
79-
new Param('testAddedParameter'),
80-
],
81-
]);
82-
83-
$result = Signature::analyze($signature1, $signature2);
84-
85-
$expectedResult = [
86-
'function_renamed' => false,
87-
'function_renamed_case_only' => false,
88-
'parameter_added' => true,
89-
'parameter_removed' => false,
90-
'parameter_renamed' => false,
91-
'parameter_typing_added' => false,
92-
'parameter_typing_removed' => false,
93-
'parameter_default_added' => false,
94-
'parameter_default_removed' => false,
95-
'parameter_default_value_changed' => false,
52+
$params1 = [
53+
new Param('testParameter'),
9654
];
9755

98-
$this->assertEquals($expectedResult, $result);
99-
}
100-
101-
public function testMethodRenamed()
102-
{
103-
$signature1 = new ClassMethod('testMethod1', [
104-
'params' => [
105-
new Param('testParameter'),
106-
],
107-
]);
108-
109-
110-
$signature2 = new ClassMethod('testMethodRenamed', [
111-
'params' => [
112-
new Param('testParameter'),
113-
],
114-
]);
115-
116-
$result = Signature::analyze($signature1, $signature2);
117-
118-
$expectedResult = [
119-
'function_renamed' => true,
120-
'function_renamed_case_only' => false,
121-
'parameter_added' => false,
122-
'parameter_removed' => false,
123-
'parameter_renamed' => false,
124-
'parameter_typing_added' => false,
125-
'parameter_typing_removed' => false,
126-
'parameter_default_added' => false,
127-
'parameter_default_removed' => false,
128-
'parameter_default_value_changed' => false,
56+
$params2 = [
57+
new Param('testParameter'),
58+
new Param('testAddedParameter'),
12959
];
13060

131-
$this->assertEquals($expectedResult, $result);
132-
}
133-
134-
public function testMethodRenamedCaseOnly()
135-
{
136-
$signature1 = new ClassMethod('testMethodOne', [
137-
'params' => [
138-
new Param('testParameter'),
139-
],
140-
]);
141-
142-
143-
$signature2 = new ClassMethod('testmethodone', [
144-
'params' => [
145-
new Param('testParameter'),
146-
],
147-
]);
148-
149-
$result = Signature::analyze($signature1, $signature2);
61+
$result = Signature::analyze($params1, $params2);
15062

15163
$expectedResult = [
152-
'function_renamed' => false,
153-
'function_renamed_case_only' => true,
154-
'parameter_added' => false,
64+
'parameter_added' => true,
15565
'parameter_removed' => false,
15666
'parameter_renamed' => false,
15767
'parameter_typing_added' => false,

0 commit comments

Comments
 (0)