@@ -132,8 +132,12 @@ private function getNonFixedConstraintList(Request $request): array
132
132
if (!$ this ->nonFixedPackages ) {
133
133
$ constraintList = [];
134
134
foreach ($ request ->getJobs () as $ job ) {
135
- if ($ job ['cmd ' ] === 'install ' && strpbrk ($ job ['constraint ' ]->getPrettyString (), "*^-~ " ))
136
- {
135
+ if ($ job ['cmd ' ] === 'install ' &&
136
+ (strpbrk ($ job ['constraint ' ]->getPrettyString (), "*^-~ " ) ||
137
+ preg_match ('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)} ' , $ job ['constraint ' ]->getPrettyString ()
138
+ )
139
+ )
140
+ ) {
137
141
$ constraintList [$ job ['packageName ' ]] = true ;
138
142
}
139
143
}
@@ -158,7 +162,9 @@ public function prePoolCreate(PrePoolCreateEvent $event): void
158
162
* shared in the installer event on composer v2
159
163
*/
160
164
foreach ($ event ->getRequest ()->getRequires () as $ name => $ constraint ) {
161
- if (strpbrk ($ constraint ->getPrettyString (), "*^-~ " )){
165
+ $ prettyString = $ constraint ->getPrettyString ();
166
+ $ multiConstraint = preg_match ('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)} ' , $ prettyString );
167
+ if (strpbrk ($ prettyString , "*^-~ " ) || $ multiConstraint ){
162
168
$ constraintList [$ name ] = true ;
163
169
}
164
170
}
@@ -168,7 +174,9 @@ public function prePoolCreate(PrePoolCreateEvent $event): void
168
174
*/
169
175
foreach ($ event ->getPackages () as $ package ) {
170
176
foreach ($ package ->getRequires () as $ name => $ constraint ) {
171
- if (strpbrk ($ constraint ->getPrettyConstraint (), "*^-~ " ))
177
+ $ prettyConstraint = $ constraint ->getPrettyConstraint ();
178
+ $ multiConstraint = preg_match ('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)} ' , $ prettyConstraint );
179
+ if (strpbrk ($ prettyConstraint , "*^-~ " )|| $ multiConstraint )
172
180
$ constraintList [$ name ] = true ;
173
181
}
174
182
}
0 commit comments