22
33namespace PHPSemVerChecker \Analyzer ;
44
5+ use PhpParser \Node \Stmt ;
56use PhpParser \Node \Stmt \Class_ ;
67use PhpParser \Node \Stmt \ClassMethod ;
78use PHPSemVerChecker \Comparator \Signature ;
1516
1617class ClassMethodAnalyzer
1718{
18- protected $ context = 'method ' ;
19-
19+ protected $ context ;
2020 protected $ fileBefore ;
2121 protected $ fileAfter ;
2222
2323 /**
2424 * @param string $fileBefore
2525 * @param string $fileAfter
2626 */
27- public function __construct ($ fileBefore = null , $ fileAfter = null )
27+ public function __construct ($ context , $ fileBefore = null , $ fileAfter = null )
2828 {
29+ $ this ->context = $ context ;
2930 $ this ->fileBefore = $ fileBefore ;
3031 $ this ->fileAfter = $ fileAfter ;
3132 }
3233
33- public function analyze (Class_ $ classBefore , Class_ $ classAfter )
34+ public function analyze (Stmt $ contextBefore , Stmt $ contextAfter )
3435 {
36+ // TODO: Verify that the given contexts match the context given in the constructor <[email protected] > 3537 $ report = new Report ();
3638
37- $ methodsBefore = $ classBefore ->getMethods ();
38- $ methodsAfter = $ classAfter ->getMethods ();
39+ $ methodsBefore = $ contextBefore ->getMethods ();
40+ $ methodsAfter = $ contextAfter ->getMethods ();
3941
4042 $ methodsBeforeKeyed = [];
4143 foreach ($ methodsBefore as $ method ) {
@@ -66,7 +68,7 @@ public function analyze(Class_ $classBefore, Class_ $classAfter)
6668 // Removed methods can either be implemented in parent classes or not exist anymore
6769 foreach ($ methodsRemoved as $ method ) {
6870 $ methodBefore = $ methodsBeforeKeyed [$ method ];
69- $ data = new ClassMethodRemoved ($ this ->fileBefore , $ classBefore , $ methodBefore );
71+ $ data = new ClassMethodRemoved ($ this ->context , $ this -> fileBefore , $ contextBefore , $ methodBefore );
7072 $ report ->addClassMethod ($ data , Level::MAJOR );
7173 }
7274
@@ -83,36 +85,29 @@ public function analyze(Class_ $classBefore, Class_ $classAfter)
8385 // Signature
8486
8587 if ( ! Signature::isSameTypehints ($ paramsBefore , $ paramsAfter )) {
86- $ data = new ClassMethodParameterChanged ($ this ->fileBefore , $ classBefore , $ methodBefore , $ this ->fileAfter , $ classAfter , $ methodAfter );
88+ $ data = new ClassMethodParameterChanged ($ this ->context , $ this -> fileBefore , $ contextBefore , $ methodBefore , $ this ->fileAfter , $ contextAfter , $ methodAfter );
8789 $ report ->addClassMethod ($ data , Level::MAJOR );
88- continue ;
8990 }
9091
9192 if ( ! Signature::isSameVariables ($ paramsBefore , $ paramsAfter )) {
92- $ data = new ClassMethodParameterChanged ($ this ->fileBefore , $ classBefore , $ methodBefore , $ this ->fileAfter , $ classAfter , $ methodAfter );
93+ $ data = new ClassMethodParameterChanged ($ this ->context , $ this -> fileBefore , $ contextBefore , $ methodBefore , $ this ->fileAfter , $ contextAfter , $ methodAfter );
9394 $ report ->addClassMethod ($ data , Level::PATCH );
94- continue ;
9595 }
9696
9797 // Different length (considering params with defaults)
9898
9999 // Difference in source code
100100 if ($ methodBefore ->stmts != $ methodAfter ->stmts ) {
101- $ data = new ClassMethodImplementationChanged ($ this ->fileBefore , $ classBefore , $ methodBefore , $ this ->fileAfter , $ classAfter , $ methodAfter );
101+ $ data = new ClassMethodImplementationChanged ($ this ->context , $ this -> fileBefore , $ contextBefore , $ methodBefore , $ this ->fileAfter , $ contextAfter , $ methodAfter );
102102 $ report ->addClassMethod ($ data , Level::PATCH );
103- continue ;
104103 }
105-
106- // Unable to match an issue, but there is one...
107- $ data = new Unknown ($ this ->fileBefore , $ this ->fileAfter );
108- $ report ->addClassMethod ($ data , Level::MAJOR );
109104 }
110105 }
111106
112107 // Added methods implies MINOR BUMP
113108 foreach ($ methodsAdded as $ method ) {
114109 $ methodAfter = $ methodsAfterKeyed [$ method ];
115- $ data = new ClassMethodAdded ($ this ->fileAfter , $ classAfter , $ methodAfter );
110+ $ data = new ClassMethodAdded ($ this ->context , $ this -> fileAfter , $ contextAfter , $ methodAfter );
116111 $ report ->addClassMethod ($ data , Level::MINOR );
117112 }
118113
0 commit comments