Skip to content

Commit 08f8761

Browse files
committed
Make assertions on encoded result conditional
1 parent bea5352 commit 08f8761

File tree

5 files changed

+44
-40
lines changed

5 files changed

+44
-40
lines changed

psalm-baseline.xml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@
200200
<code>$args[1]</code>
201201
<code>$args[1]</code>
202202
<code>$args[2]</code>
203-
<code>$args[2]</code>
204203
</MixedArgument>
205204
<MixedArrayAccess>
206205
<code>$args[0]</code>
@@ -209,7 +208,6 @@
209208
<code>$args[0]</code>
210209
<code>$args[0]</code>
211210
<code>$args[0]</code>
212-
<code>$args[0]</code>
213211
<code>$args[1]</code>
214212
<code>$args[1]</code>
215213
<code>$args[1]</code>
@@ -225,8 +223,6 @@
225223
<code>$args[1]</code>
226224
<code>$args[1]</code>
227225
<code>$args[1]</code>
228-
<code>$args[1]</code>
229-
<code>$args[2]</code>
230226
<code>$args[2]</code>
231227
<code>$args[2]</code>
232228
<code>$args[2]</code>
@@ -240,6 +236,8 @@
240236
<code><![CDATA[$args[2]['upsert']]]></code>
241237
</MixedArrayAccess>
242238
<MixedArrayAssignment>
239+
<code>$args[0]</code>
240+
<code>$args[1]</code>
243241
<code>$args[1]</code>
244242
<code>$args[1]</code>
245243
<code>$args[1]</code>
@@ -259,6 +257,8 @@
259257
<MixedAssignment>
260258
<code>$args</code>
261259
<code>$args</code>
260+
<code>$args[0]</code>
261+
<code>$args[1]</code>
262262
<code>$args[2]</code>
263263
<code>$args[2]</code>
264264
<code>$insertedIds[$i]</code>
@@ -473,7 +473,8 @@
473473
<code><![CDATA[$options['fields']]]></code>
474474
</MixedAssignment>
475475
<RedundantConditionGivenDocblockType>
476-
<code>is_object($replacement)</code>
476+
<code>assert(is_array($replacement) || is_object($replacement))</code>
477+
<code>is_array($replacement)</code>
477478
</RedundantConditionGivenDocblockType>
478479
</file>
479480
<file src="src/Operation/FindOneAndUpdate.php">
@@ -557,7 +558,8 @@
557558
</file>
558559
<file src="src/Operation/ReplaceOne.php">
559560
<RedundantConditionGivenDocblockType>
560-
<code>is_object($replacement)</code>
561+
<code>assert(is_array($replacement) || is_object($replacement))</code>
562+
<code>is_array($replacement)</code>
561563
</RedundantConditionGivenDocblockType>
562564
</file>
563565
<file src="src/Operation/Update.php">

src/Operation/BulkWrite.php

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -341,28 +341,30 @@ public function execute(Server $server)
341341
break;
342342

343343
case self::INSERT_ONE:
344-
$insertedDocument = isset($this->options['codec'])
345-
? $this->options['codec']->encodeIfSupported($args[0])
346-
: $args[0];
347-
// Psalm's assert-if-true annotation does not work with unions, so
348-
// assert the type manually instead of using is_document
349-
// See https://github.com/vimeo/psalm/issues/6831
350-
assert(is_array($insertedDocument) || is_object($insertedDocument));
351-
352-
$insertedIds[$i] = $bulk->insert($insertedDocument);
344+
if (isset($this->options['codec'])) {
345+
$args[0] = $this->options['codec']->encodeIfSupported($args[0]);
346+
347+
// Psalm's assert-if-true annotation does not work with unions, so
348+
// assert the type manually instead of using is_document
349+
// See https://github.com/vimeo/psalm/issues/6831
350+
assert(is_array($args[0]) || is_object($args[0]));
351+
}
352+
353+
$insertedIds[$i] = $bulk->insert($args[0]);
353354
break;
354355

355356
case self::REPLACE_ONE:
356-
$replacementDocument = isset($this->options['codec'])
357-
? $this->options['codec']->encodeIfSupported($args[1])
358-
: $args[1];
359-
// Psalm's assert-if-true annotation does not work with unions, so
360-
// assert the type manually instead of using is_document
361-
// See https://github.com/vimeo/psalm/issues/6831
362-
assert(is_array($replacementDocument) || is_object($replacementDocument));
363-
364-
$bulk->update($args[0], $replacementDocument, $args[2]);
365-
break;
357+
if (isset($this->options['codec'])) {
358+
$args[1] = $this->options['codec']->encodeIfSupported($args[1]);
359+
360+
// Psalm's assert-if-true annotation does not work with unions, so
361+
// assert the type manually instead of using is_document
362+
// See https://github.com/vimeo/psalm/issues/6831
363+
assert(is_array($args[1]) || is_object($args[1]));
364+
}
365+
366+
// break intentionally missing, as replace is handled
367+
// through update as well
366368

367369
case self::UPDATE_MANY:
368370
case self::UPDATE_ONE:

src/Operation/FindOneAndReplace.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,12 @@ public function __construct(string $databaseName, string $collectionName, $filte
160160

161161
if (isset($options['codec'])) {
162162
$replacement = $options['codec']->encodeIfSupported($replacement);
163-
}
164163

165-
// Psalm's assert-if-true annotation does not work with unions, so
166-
// assert the type manually instead of using is_document
167-
// See https://github.com/vimeo/psalm/issues/6831
168-
assert(is_array($replacement) || is_object($replacement));
164+
// Psalm's assert-if-true annotation does not work with unions, so
165+
// assert the type manually instead of using is_document
166+
// See https://github.com/vimeo/psalm/issues/6831
167+
assert(is_array($replacement) || is_object($replacement));
168+
}
169169

170170
$this->findAndModify = new FindAndModify(
171171
$databaseName,

src/Operation/InsertMany.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,12 @@ public function execute(Server $server)
155155
foreach ($this->documents as $i => $document) {
156156
if (isset($this->options['codec'])) {
157157
$document = $this->options['codec']->encodeIfSupported($document);
158-
}
159158

160-
// Psalm's assert-if-true annotation does not work with unions, so
161-
// assert the type manually instead of using is_document
162-
// See https://github.com/vimeo/psalm/issues/6831
163-
assert(is_array($document) || is_object($document));
159+
// Psalm's assert-if-true annotation does not work with unions, so
160+
// assert the type manually instead of using is_document
161+
// See https://github.com/vimeo/psalm/issues/6831
162+
assert(is_array($document) || is_object($document));
163+
}
164164

165165
$insertedIds[$i] = $bulk->insert($document);
166166
}

src/Operation/ReplaceOne.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,12 @@ public function __construct(string $databaseName, string $collectionName, $filte
113113
}
114114

115115
$replacement = $options['codec']->encodeIfSupported($replacement);
116-
}
117116

118-
// Psalm's assert-if-true annotation does not work with unions, so
119-
// assert the type manually instead of using is_document
120-
// See https://github.com/vimeo/psalm/issues/6831
121-
assert(is_array($replacement) || is_object($replacement));
117+
// Psalm's assert-if-true annotation does not work with unions, so
118+
// assert the type manually instead of using is_document
119+
// See https://github.com/vimeo/psalm/issues/6831
120+
assert(is_array($replacement) || is_object($replacement));
121+
}
122122

123123
$this->update = new Update(
124124
$databaseName,

0 commit comments

Comments
 (0)