@@ -130,26 +130,39 @@ public static function analyze(array $parametersA, array $parametersB): array
130
130
$ changes = array_merge ($ changes , [
131
131
'parameter_typing_added ' => false ,
132
132
'parameter_typing_removed ' => false ,
133
- 'parameter_typing_changed ' => false
133
+ 'parameter_typing_changed ' => false ,
134
+ 'parameter_nullable_type_added ' => false ,
135
+ 'parameter_nullable_type_removed ' => false ,
136
+ 'changed_param_index ' => 0
134
137
]);
135
138
$ lengthA = count ($ parametersA );
136
139
$ lengthB = count ($ parametersB );
137
140
138
141
$ iterations = min ($ lengthA , $ lengthB );
139
142
for ($ i = 0 ; $ i < $ iterations ; ++$ i ) {
143
+
144
+ $ typeBefore = $ parametersA [$ i ]->type ;
145
+ $ typeAfter = $ parametersB [$ i ]->type ;
140
146
// Re-implement type checking to handle type changes as a single operation instead of both add and remove
141
147
if (Type::get ($ parametersA [$ i ]->type ) !== Type::get ($ parametersB [$ i ]->type )) {
142
148
// This section changed from parent::analyze() to handle typing changes
143
149
if ($ parametersA [$ i ]->type !== null && $ parametersB [$ i ]->type !== null ) {
144
150
$ changes ['parameter_typing_changed ' ] = true ;
151
+ // Custom: detect nullable added
152
+ if ($ typeBefore instanceof \PhpParser \Node \NullableType && !$ typeAfter instanceof \PhpParser \Node \NullableType) {
153
+ $ changes ['parameter_nullable_type_removed ' ] = true ;
154
+ $ changes ['changed_param_index ' ] = $ i ;
155
+ } elseif (!$ typeBefore instanceof \PhpParser \Node \NullableType && $ typeAfter instanceof \PhpParser \Node \NullableType) {
156
+ $ changes ['parameter_nullable_type_added ' ] = true ;
157
+ $ changes ['changed_param_index ' ] = $ i ;
158
+ }
145
159
} elseif ($ parametersA [$ i ]->type !== null ) {
146
160
$ changes ['parameter_typing_removed ' ] = true ;
147
161
} elseif ($ parametersB [$ i ]->type !== null ) {
148
162
$ changes ['parameter_typing_added ' ] = true ;
149
163
}
150
164
}
151
165
}
152
-
153
166
return $ changes ;
154
167
}
155
168
}
0 commit comments